diff --git a/INTEGRITY.sha256 b/INTEGRITY.sha256 index 056a543..f8766d7 100644 --- a/INTEGRITY.sha256 +++ b/INTEGRITY.sha256 @@ -121,7 +121,7 @@ f5d33a50c89f30c0596f152452989dd5f3214829aed2b2bfbd7176537175e424 hooks/project- fe01f02e0d45b4d5f8890c226a6433d0dcc6f68932463ecbed3df1ba12ac0a09 hooks/rollback-on-fail.js f584ab2984108bcf2ff5179bbb4472e3c4b8b5bb86fcd0c15cb0b82649732323 hooks/route-auditor.js 8caf07ee3ee4df370e058dbf54a3a91450eb5ba63fe672051ede2e2d29dc30c0 hooks/route-compliance-gate.js -792cb71f4e4379aac7faaf1c00e05f4eb65e1db7052ab7b38d2c47ec02e81db1 hooks/route-interceptor-bundle.js +6a2ee2d5123fb2a330e8153daf73ed2258d1916fedb8e6606a60ea79bfcca4a4 hooks/route-interceptor-bundle.js cdaacb861d6c889d38e82fbd172c369d4303fc6a904240ac882d0cbae4ca691f hooks/route-interceptor-bundle.js.bak-p21.1777282215104 16dd875fee2994e26dd570bb49b4399b075fd02e5e23e67d3ec775fbf62a83a3 hooks/rules/ask-patterns.json 98f490fb78c7567b8709570aaff66f1ce10c45522e4fa3b2a3cf8b4a0991ec17 hooks/rules/credential-patterns.json @@ -155,7 +155,7 @@ d6b0024d7c0bd2684cb341584697548cfa5ae555ccdeb0be8b4c8f100407f28d hooks/token-sa ede508bf85863988c6f205a89315c69303373b81879832302af3a1b10634e634 lib/activate.js cba84f84fa95bc61cb7137734337efd784de26528b503c822aff654073d6267f lib/fingerprint.js 692c6ebb5c199961e697156c4cc2c0ba0b183ff0436573a902d6b6eeea29118f lib/load-skill.js -867af94a38d207384e36ffd6b76e3758b8e76f003a100cac588b856ff78f3de6 package.json +e407ee5776a08241ccd98812dfcec0b2b9d94b944f3fba7f82c1e4aa03a44394 package.json d5cc0c072ddab9ea1f5cc8a13361531170d01e9043c9e251042833b2b15be91f scripts/ab-backtest.js 8271d2e8c369dc039af32e713bc96464caeef31f28758543f68d8dd49a5729c0 scripts/adaptive-disambiguator.js b99aa8993a46a4f57c32a19650244a2ae100f64203f914d94c547e946851e10b scripts/add_css_patch.py @@ -243,6 +243,7 @@ f1a5c0a5df7f656e4c2c03788fde38f2d51551dd60b4102b2cb9e008cb6593f9 scripts/patche b748c0bb80bc513ca68468208ce9ddec639b5e3b34f50059242e8b5ed5659de2 scripts/patches/_observer-tests.js e0fc9f92eba1fc00e71b82899b5129c5fd294c51fb2942e9d1d4ad4dd2137efc scripts/patches/debug-evolution-log-line55.js b7d299d60785af25f75710a622eb84d1dda3cb988fef060eec802c0f3f400be0 scripts/patches/install-task-scheduler-verify.cmd +1a7d05050bc5c20b12ca9c185ef7b4e52be3ab7fe1fc25582f7d45a3529497c6 scripts/patches/migrate-session-continuity-to-local.js 13a844fdefce12de6fae01b51ccd92cbc6a1c9531470bc42bdd0b30b44936c6e scripts/patches/patch-add-staging-pipeline-flag.js dcc42834bbec89a692b69cd3b06aa1c8f3dc868b20fcf5ca843432839b8a25c4 scripts/patches/patch-audit-fix-registry-drift.js 9ccb6cb45c56fe3436a5786446bb89d48ef5d94cdf061d024daae9a22d596e7a scripts/patches/patch-banner-route-accuracy.js @@ -270,6 +271,7 @@ fd3556fc00c973e69759bdacbf4c4ac117793414c729b29c8c80e3baad8e6f9a scripts/patche 8f0a5ffd480047b47f156350a856a3a013faec0956f60302c57edc95c6ba1abc scripts/patches/patch-memory-audit-snapshot.js fd60eb6872350e6dbf505364ba46deaa49b39b90879a6b7d20270c5314f707d0 scripts/patches/patch-p0-1-metrics-emit.js 42fa8628b9c5890bd371063dc2708cfe18a97675b98493aeb439c29bb941db38 scripts/patches/patch-p0-2-session-once.js +775bb6042e7b5e852a0457eb4a32080822684306e01c3777653f74f436f6bc3b scripts/patches/patch-p0-3-precise-tiering.js b6c1f36bee8dbad522999a7de93583963078ac7ebff7f404fc5f3d26f1da2b03 scripts/patches/patch-p0-3-reapply-tiering.js 96414c5d92dacf9a3f74879fb9e9b2834af92bd6e7d910f079533fd3878735c4 scripts/patches/patch-p0-3-skill-tiering.js 8b28bf8b0ad9fe914e989d08916552a92b6e4d0870d62b7dcccf829f9c25c855 scripts/patches/patch-p0v2-stop-parallel.js @@ -318,12 +320,14 @@ b4cab8230cc74ec47b5d1a75fd3d5c8db6df0725eefa02df3ee79e7b3bb28a7d scripts/patche 4428f91b4ea67795d1a52b6d0d4482ab16eba8bdb01dcdf481bb5bc4c2810f21 scripts/patches/patch-review-report-required.js fde139ca7a470f2d3f100e9b26d0aca00234d73a9495de140387657b054e7f15 scripts/patches/patch-review-sealed-frame.js be50c5c7718cfa8ad338aabbefe44c827e4e69dac54762c83b1e008f02e90b14 scripts/patches/patch-route-accuracy-filter.js +7faed70942c6c0e54d55474131c0c7c25ff2e7594fc95e5badc25e2d543eab3d scripts/patches/patch-route-interceptor-failopen.js 51297e0691acdfc34b16d6e383cdb1e75ad8fc9afb7c800b4f7663481c02994d scripts/patches/patch-sanitize-v6-17patterns.js 399f00b5d69403a5bffd93bf39e751fe5d1bbfa2837cddb6a0f6271e735aa714 scripts/patches/patch-sanitize-v6-fix-replace.js 560073f1285ed3ba769c722149904a0f7391c0c6568f284b90514c896ae62667 scripts/patches/patch-sc-hooks-optimize.js 1114ed94bd4d00d167926d8edd87bd0888abe532a993aa951366b6f652ae9976 scripts/patches/patch-sensitive-paths-delivery-pipeline.js b7438fb9a000362d2dbce439b27e56384589c045a7bf060d2a53bab09fce9f8f scripts/patches/patch-session-continuity-hooks.js d9f59b0ed425ef054c9381af69307eadee5c358315fc95cd75799a354593963c scripts/patches/patch-session-start-memory-audit.js +d398bf2ab260e8b40d41f420edc95f15ccbb765bfee9c8638db67cc93d7bac3a scripts/patches/patch-skill-cleanup-22.js 706e4e31a08a70a95023ef3cab810ec246f89b355975c7dd24f31c232b468fd8 scripts/patches/patch-ssrf-ipv6-rfc1918.js a2bde8af2e0ef485c3d67d027f6c832080841eed344245566ce2cf97922496d0 scripts/patches/patch-staging-pipeline-gray-activate.js 80f561a8ed28b80dd2336c232fa717fbf2c6e0ca1c89183f4cff2956fe79ced9 scripts/patches/patch-stop-dispatcher-24h-dedup.js @@ -419,10 +423,10 @@ b17a6ec98a6dd1afbd42903e9f6db80afa27ff0143a28921d9350941db9607fc scripts/weekly f9b530a7a13dda8c7edcc0b072c63cd3cb629c5330c095cffabc59d04b7a5dcd scripts/weight-store.js 318abc88a501e0e3571bca5e5c790696a39544b6af5f38bfd5aebeac5214a024 scripts/workflow-patterns.js b57073d6e491e35e660f4baab926603185a30632aff7bd8b26fe23ead4945ea5 settings.local.template.json -b4c66eb376beacde8ffdeb819f573623d5ac4410889608e1967f6486dd6fb632 settings.template.json -cff42b637af3463bff15cc77e6a5231969632847bdd052200d4294946f7dd898 SKILL-REGISTRY.md -b87b0db89fc3eab1a7a72e2ad91fe98539567df7972fd2b3cd83efd29cace7e9 skills-index-lite.json -532d2bff8add2ae39251c52a4174a059c5cee2d66c3e5d1d60c4914759501f34 skills-index.json +265cde823fee6e8abb5a6d481eb1eabd1abc93b559fc2459bc99f36df94eeee9 settings.template.json +3cd6e708a1b80bc6ccc15843bd7efd6396f64f7259f308588cd6defb2aeb1cde SKILL-REGISTRY.md +7488a6558cb474e417aafca10c0ef313394a2960dc3034a9f88a51d6c1c76ec1 skills-index-lite.json +e70b03ef9cc33ecad62b525bb155a8f61792d912471cabab74dd7bb5cc3735aa skills-index.json 6079bab64ceab2158740c7c85e960d75f365122bf7ff2afc117d96749e4728ae skills/ai-ml-expert/references/cv-guide.md 5bbf8dc8360fe5eac7a255ae0b2505d56ada55e1a8b243a94f8dd2a23951e309 skills/ai-ml-expert/references/llm-app.md 86745e2ec54760fa37c75c26c5b08890ee13833fc05b9850511476267add9e12 skills/ai-ml-expert/references/pytorch-guide.md @@ -431,14 +435,6 @@ e84529b5adde98b49da22acd3ddce21816ee389fed69e01c0b0e441ab38edd8f skills/ai-ml-e 53e5c14a4443bb900990bd7ef811c638aeafa59737ef7e30653160328697325b skills/ai-ml-expert/scripts/evaluate.py 9c8f738da45a282819256b018eb2a11ef1bc30efff34247d297216be0b53be55 skills/ai-ml-expert/scripts/train_utils.py af78fc616c059f26196f014d1acad4f2a390d040a8c1416ce8770ca18f9583d2 skills/ai-ml-expert/SKILL.md -e30b8dc4f56606833d30657ed4a7c927da5aec5ef8749929b3ba34149a695b8f skills/ai-philosophy-expert/references/ethical-frameworks.md -a19cb705746c05417f21cfb549e99334916411ea5951ce93f9be9dece6e63afe skills/ai-philosophy-expert/SKILL.md -1b5da191af49052473656b1fa6fb1b21b31ce26d4e070bf0ea19a9d4e49a0bd4 skills/angular-architect/references/components.md -bc5350de182909ace9c2676abd482bf3b068eedfe146bd482b6a384a5f314327 skills/angular-architect/references/ngrx.md -536dda628feba51eed0f25bfeb9d8e7a90b9b5f91e69e5b6d5159989a3212bbd skills/angular-architect/references/routing.md -9eff5c67006f71e6f16db248857f9dd277c8d63d2def498d7c56c7cf4b1def65 skills/angular-architect/references/rxjs.md -abf8179b5f23d4b328c82b870a36de1c58e1f78cf5b2d7a1e47e6fd58622bb8f skills/angular-architect/references/testing.md -41467221aac17e0fb4cf4e153179fb292be60c4e79e7ad25dacbef712051a084 skills/angular-architect/SKILL.md e9e22993c1a9c295c9e45b6ef38d2b38e180bda73287e1347981d2d080c0d04c skills/api-designer/references/error-handling.md e6f2ad2920c00549a717e339484971a1d06ca25b33430edb38fe6ec875f76994 skills/api-designer/references/openapi.md 9e9294a8f37ea7a1919233d4c6653d3f5a869107edbc521cad0c15eae99dcd04 skills/api-designer/references/pagination.md @@ -543,48 +539,20 @@ c55a72be658eb9a892fd2ec1422fd46840a5e18bce7f9733793595c5e920b2db skills/databas 5ba45f10e01beedf02e2c55257515f16ca710f40b463cc4a871a66c2061f49ea skills/debugger-expert/references/common-errors.md 216af12d387db23a0af66dfec210dae0a9ca15fdfb775864172e667ae747401f skills/debugger-expert/references/debugging-playbook.md 0d239e44ccbc76e19c27240df9b99cf4471b4fd05565d43ee2d1577c53c4d42b skills/debugger-expert/SKILL.md -fb324ab54aa1f141a93c5c0fb6bacc34b4017fc1eada7a0a6ca4ce4ac7166d99 skills/design-consultation/SKILL.md -bb30dd3b9fb17c813f02e74a602902ca145e4dc01ed94f09bdd74758663010fb skills/design-consultation/SKILL.md.tmpl -d35818610add86e3ae5d4c63aa0eeb801e20ea9dedc1e80e1669856b1a0924ed skills/design-review/SKILL.md -d70da394b2612fcf8933041a60eed98f37995f9858e0898550966c71c2b23030 skills/design-review/SKILL.md.tmpl -b7eb373c05c45ab9dc352aa4c3ff08775083189da71ee8d202a14780da8da781 skills/designer-expert/SKILL.md aa203887b21798f5d9d0b170f5c1be59640700f6f9dd8ff4fa028bf581110ca8 skills/developer-expert/SKILL.md d7c4c77bc3dc07ce9e3faf9a4ce5ea2d6e288376beeb164ff0447338e5d2692f skills/devops-expert/SKILL.md ba6857aeb23658e6a8d191d2231358d09c1480eacee9b8207417914fa9f5cede skills/devsecops-expert/SKILL.md be23b81e736046ff5e1b5217a8e0b3a67e855082a163700767ea220d400f94ad skills/diagram-as-code-expert/SKILL.md 3195aaa2075162cb5fa7f52d07e012431f5f4961d71a1a3f5251796eeebb87f2 skills/document-release/SKILL.md 72d5778a051415385db0c605109175b294a0bb8f0916b2905f6aa593ad51a83d skills/document-release/SKILL.md.tmpl -d388a50651a46795c2b4a112f95abe63fad779b8df37acfd8746a9cd002dc047 skills/edge-computing-expert/SKILL.md ff3b0d17b57f8923c79f61103d0b47670575e257193233845a85a532231d9151 skills/email-communicator/SKILL.md -bcaebd2101eb6cad1afa9d30cf50f705f209ed3a5f098ef26f638b74103f69e6 skills/evolution-tracker/SKILL.md a87e5324a2fef28468b77c0f8306e42d48d226d219e413b32b23c12b20335c4d skills/finance-advisor/SKILL.md -a8f40a8d0d03abaf4e36b274a08ad5522d9f9b56500a5291e5f7015b23051d74 skills/flutter-expert/references/bloc-state.md -c7529ac3399d8244f13d57289f4d3a268480a2a538bd67607768232a9dd906ef skills/flutter-expert/references/gorouter-navigation.md -e0ea5289f6e8e75f2a7e32b81fc37e17d44c8972e9d822723bdc37a48a5884ea skills/flutter-expert/references/performance.md -3bd3302591f123758cc48bc7cce139e9bb1b86039e1c1e34d69dcc322c0a1c57 skills/flutter-expert/references/project-structure.md -ac0c9d178dd32b5761264d0c4b9584a5d8e1796f59aebf6185c642999515a0cb skills/flutter-expert/references/riverpod-state.md -cef23f70cee95cca0968be205992157ecfeed7a7f6aa0291e7a715bb67ce7d98 skills/flutter-expert/references/widget-patterns.md -8b8d90ea220104f5b916f5bcabbc136cd250783bb73cfffc72872edafc14c235 skills/flutter-expert/SKILL.md -931579d39b983786b9fd14827f9d02f45ec9ef5fd2cf1ad2271160d93737657c skills/frontend-design/SKILL.md a398bdd862435f7a1993c1f4a89e2771de6c712548ceb6dd484bc0b72c151389 skills/frontend-expert/references/nextjs-guide.md acadfff2be0540902c8e0ed7bce70f555743f3f5a3674779d518666311f5439b skills/frontend-expert/references/react-patterns.md c7d850e698fda1e83d48d67693f76c159afb6b5c55d5533920b10acea7f4c2dd skills/frontend-expert/references/state-style-guide.md e2a14a3a4b392fb318cde637f57fc4a53dfd9c169f45b62d49462d0031d5f0b4 skills/frontend-expert/SKILL.md 4361f9beaee5ad38824ae6ce611e9ddc80e6a9a9f146757a11f7168dfef91360 skills/genesis-engine/SKILL.md 96ab7da96bf7114ed6d8efb109de841e2bfca8fccfa91683f06f30a97295dc31 skills/git-operation-master/SKILL.md -be0a0a908690e707b002b59a9acca83620479f7ea3ad189d50e093d943c271ad skills/golang-pro/references/concurrency.md -a8612cd07d898a42f2a5f13782e2b29f9a22ea45e03ee28ecd3ae69cbfd6d195 skills/golang-pro/references/generics.md -7be22df33003ff34b7a54a6d3a8f87e0adf3794b256e18221f5d8048715d59f6 skills/golang-pro/references/interfaces.md -57e8fb221478072c58e674041d059dfc8fd6d2c75024476f9afadefdfd8aa5df skills/golang-pro/references/project-structure.md -5be64624ea0f4d50171e28e0327feca21915a9873e306de54a20673a7e2a1df3 skills/golang-pro/references/testing.md -cd309a1318c284c09c1be791340e47d74a07ecca0f04441d3caf7aa132c5bb2f skills/golang-pro/SKILL.md -6ec4bc60b9c78127ea9e019ef292897886a0d8d395bf61d5c22b31b016b6c44a skills/graphql-architect/references/federation.md -a784ba25054175f67bf01f38027c5522cd8631b16b6d76464174e512b8f58a91 skills/graphql-architect/references/migration-from-rest.md -6f34d5adc6a5b9ff068fa652acf93e8ece8629f3db8946676b4bd307b7b1c559 skills/graphql-architect/references/resolvers.md -6c61db1f7a8c9da3b780a3d4e939a237810c9aece0452d5b801aaf58d04c6db9 skills/graphql-architect/references/schema-design.md -5c01cec3837566ae2e8adbf743c9a52be0a842d494f0ae61cccd37677203dd03 skills/graphql-architect/references/security.md -4d3ad5874ab7900432da2a87daa6b02bdfa7895865c5a6b735d3598efc0bc38f skills/graphql-architect/references/subscriptions.md -121ea14464700187e9b9dc5750f40d6e62936c358b2339e375a69680fe7f1469 skills/graphql-architect/SKILL.md b385efdf8e9bf51521830f4186153264483de197fed81dd1c314efb907f42973 skills/growth-hacker/SKILL.md 34220860498dcfc896cae208be7d84fa88b78b709d094df78e1c02841d1945d6 skills/gstack/.agents/skills/gstack-benchmark/SKILL.md 0adf6c142bf0bba8e8859e719ac54e16484c9746ea74de70e208ad997d4badf2 skills/gstack/.agents/skills/gstack-browse/SKILL.md @@ -856,12 +824,6 @@ dd294f5612d93241c333f14a160eaf12edeb377784e3994e51b52e38d82b3d83 skills/nextjs- 81f9bedf42d3fcb80950738f22171eaf6b1b9400865212cead5e7e5b00ee8185 skills/nextjs-developer/SKILL.md 8b02cd1143efe6106ac181a27a5db304128699d42b85025b9a5f801c81c8a978 skills/notification-system-expert/SKILL.md 0e2a819a2486d628319682c1af7e823cce1e2106faf9b3a670fb6a85a5a42887 skills/performance-expert/SKILL.md -355e2431393686eef34cba2fef168e20e415bf6696963928030206d2660afb2a skills/plan-ceo-review/SKILL.md -7875c29f0c57a58841775d9a730662cb064e185c02c8b2d99ff09aa55d02606d skills/plan-ceo-review/SKILL.md.tmpl -8a5eac743de3219b1f81609216cb48caf878b2eab586d1b45e9f6fae50a772f0 skills/plan-design-review/SKILL.md -82c85885b03f0fc3eadbd065d5ea0e5c16b948a2f877fa087e9f02c686d2f535 skills/plan-design-review/SKILL.md.tmpl -ee6d722dbb7f0c6c119928528260fd0d6f2b4f8dd74c2eb5a16844c375ece86f skills/plan-eng-review/SKILL.md -400d4161d9081abf010eca04940a2e1c938c816502d9c980fd7c51a8bbbf996c skills/plan-eng-review/SKILL.md.tmpl 833482920f1883f767e629079228c1c3193ee2352f83d70ebf575de9e8c691e9 skills/planning-with-files/SKILL.md e86e75028de3ded6b0f863ca7d9ad25ab03c2a9b131b109d21aa81a9e93b6817 skills/pricing-strategist/SKILL.md 0e279562e6b8e9bdbf0bfdf69c569e73e0d22057686d9ce2757baefb715290fc skills/product-manager-expert/assets/prd-template.md @@ -896,30 +858,14 @@ b6ac7f955818736c3c34986ed0cd6c3f8df1d81dda9bebd899b24209dc439fea skills/review/ 02b7fbefdeb68d32115dabdec14e097e9f1c630a1cde3786dd482fae74aea6e5 skills/reviewer-expert/references/refactoring-catalog.md f94e591c417f2aadac75c345883dfcff35b9060a60f6b0773998a7dabf437a9f skills/reviewer-expert/references/review-checklist.md f0c60fb969cf9e0220d715ac05dbd1cc574e0aa5a17cff41fb08810dafab04a4 skills/reviewer-expert/SKILL.md -29ff8daa8fbc2b2517aba4a037355e9925e20915dad481998cc825ba2647d6a0 skills/rust-engineer/references/async.md -b8281471fb2a0ab3556f5db8d6524f3bc9ce852e881fb50c86a35f237758e849 skills/rust-engineer/references/error-handling.md -a12cb032e2bd0b5a004763b0454edfb3115c73d528f885371517268339e4efda skills/rust-engineer/references/ownership.md -c2da5cc2f35fbdd8daf7676cb97e0aeec7616c958defff243b6179b1cdfb0a98 skills/rust-engineer/references/testing.md -700ae5dcf2fa5409891f2ae1fd21a34ffb64550e4102a10847785c19a9079e3b skills/rust-engineer/references/traits.md -43c8f4f908ecd74ccad7f47647305189dac575cea50955b8bc3b877884f29730 skills/rust-engineer/SKILL.md 5364985a68b7e57f01a031b8cd70425f152917effc356db2b159be8cb0fc9103 skills/sales-consultant/SKILL.md 21d2eca232e729e411e3f1fd903c681a1567e464a1048d7ea7066f576fef504a skills/security-expert/references/auth-patterns.md 30faaab1b968add1af72160f2615af8f2553c8bfdfceca2f66e719014bf986cb skills/security-expert/references/owasp-top10-guide.md 1bcadd218e517f7e45f97e92e05c4fc7dd7fc183356171014a5573160607695b skills/security-expert/SKILL.md -27edf75a1d3da93a6fe7bdc24c3a3202af89917e3adae1e2a77f2b5121fbaa6e skills/setup-browser-cookies/SKILL.md -42f2e129afcb4b36670d2156a0f82898e99194ef253b7388ac8f498c178d5fea skills/setup-browser-cookies/SKILL.md.tmpl -b3aab60eb7d814c44d7e51d298596736fe9a3c7db33ff245bc2af3cc9258ea93 skills/setup-deploy/SKILL.md -f88242f5a0882bfa128891995e536b71cc6b2d69fb40f1134632f957c7ea345f skills/setup-deploy/SKILL.md.tmpl 7e2ec54e993dae94c21edd99833910008f96febdca1a519e21666cd5c825536c skills/ship/SKILL.md e50081a5373f2cfcd05f35b00ca31e16b08b0d3fddbe73bfb0624c3c4c14dffb skills/ship/SKILL.md.tmpl a827f3d8468564a36df4e09a91a4b7463da13fabfa8dafab906b687f50e710bf skills/social-media-manager/SKILL.md 7c506a92523f2702e287a1822ca87348849e632931f640b372212d24338cc5f9 skills/sre-expert/SKILL.md -7868af160b522770bbd91b8a51e224579788dda7461bcbe7ad5f98a4b4aedc28 skills/swift-expert/references/async-concurrency.md -3ffeee11f91167d6fe4342ce2340204e2c77fa18de8e93767e2e91189953e061 skills/swift-expert/references/memory-performance.md -219a6a7d333396a09e7bbfbba76da0fc8e87209dc09dd4c9966a288d67a2af0e skills/swift-expert/references/protocol-oriented.md -25570394aee504fd14f4b01f7dd8445ffef90cc929c38d6721b5b4e908cb98af skills/swift-expert/references/swiftui-patterns.md -b3b64534d8358e82c7f2a86169b7f9ddc373b9ad228992bfd6f921d246819ada skills/swift-expert/references/testing-patterns.md -2f265b585a70e3acc6a61aa96e9bcb2051a071dee80e363d9f7a63b956c76027 skills/swift-expert/SKILL.md 0e04c748fffb41afee98884708b73f0718a53530eb0da1b70924cb93a19d7e0b skills/tech-lead-mentor/SKILL.md 7820df8e7d2b12fce90a812c97f49b87e319b0063d16d0792f76630c812c4872 skills/tech-writer-expert/SKILL.md 57164e8ffecb07061db85f090dbd13757cf09e7206005b6d76fa6d4e85cd96dd skills/technical-seo-expert/SKILL.md @@ -936,44 +882,6 @@ c6b7c3f070ef51561bde003faf2400c8d6898bee3c8346e4f7d052bea667565e skills/typescr dcf140ae17c30f7f22508711f6ebf5beb2f34945cf4b8ce386e1f31078628bef skills/typescript-pro/references/type-guards.md fc18067394ae965f72822c2469a7c059d35b0ea4d4b42cbc8f077e35c0de3d2a skills/typescript-pro/references/utility-types.md 190f8b30ed35678cbe5b651dde9d213b167d8e9998e659cd0971bb9511d4a91c skills/typescript-pro/SKILL.md -b754c0efffcf54cb889114a9314be1d5af6ceebe65c4c436d713b52018e752c9 skills/ui-ux-pro-max/data/charts.csv -4cc0df2785f340b8bd0ace50bd4068dc13a7c4c6fa4d9d2723271244ce904614 skills/ui-ux-pro-max/data/colors.csv -351fe61ba45b8146c66de6ea7d67297654639d79a94f537b4d0bad570058c28f skills/ui-ux-pro-max/data/icons.csv -010e1e46db271b94e0af6f18973bea86ddba62feeccd62aeeaa6ed40e2ae2db1 skills/ui-ux-pro-max/data/landing.csv -5359e3037dcb84e99c792ea13dd44f5b78ab6a53557afb309cf19140512aaf5b skills/ui-ux-pro-max/data/products.csv -904c8afcda229629545912dde0e8ac37503757131f0169f80b016f1f58c4fd3f skills/ui-ux-pro-max/data/react-performance.csv -ad18dae3ab6d148d37d144592df80dc1825b6c9e86d9d2d68fdda77434206a37 skills/ui-ux-pro-max/data/stacks/astro.csv -e470e6bc2bcd8562667cc764d1e1afb0be0a30ca4dc9ec12fa18b19d46f156bd skills/ui-ux-pro-max/data/stacks/flutter.csv -1f004891dd189f6bc2a7717401e3100244326e7e2f3963a79bf7b2349d85e091 skills/ui-ux-pro-max/data/stacks/html-tailwind.csv -6c8fd4b0391c342c12b0af15610cd5becbeccaef0bbe8dcfc01d928c3195d93e skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv -06a8e8c13bd44696c6ebb4cb6c4d8dea440e3de8cce77616512529ed29258f0c skills/ui-ux-pro-max/data/stacks/nextjs.csv -05d6e74501b2b6a636faed32450622759f49a5bcafad971f5f4e7eba0eb7be71 skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv -f7a3f2d9542856d00199f85c6c023b7c284cc698e2e6e12d61afce2edacb24d6 skills/ui-ux-pro-max/data/stacks/nuxtjs.csv -a08ca77fcf6b6d9531982dce465366296013bfcf12d2938ac72ad57cf0c4f085 skills/ui-ux-pro-max/data/stacks/react-native.csv -b6e3eb0e4c9c01bd00ffb951d5ca224a19d488b4544c75436f48cf92ff12bf45 skills/ui-ux-pro-max/data/stacks/react.csv -395c2e415ef6f48a474acccdc8eb2c7258a6ed751a5037ba171a2d8823e02ded skills/ui-ux-pro-max/data/stacks/shadcn.csv -bc8d158994a8bdf412830a9dd5e5a5534edd2f367a6e50e0ebd4d76f592dfa3f skills/ui-ux-pro-max/data/stacks/svelte.csv -e87cb9eee208bb753bdab96d4a261c7f830c4317ee90ec098316b248fc32be85 skills/ui-ux-pro-max/data/stacks/swiftui.csv -9b793c3f4eec85f77a758c09322f2b62f3b3ca549bb713ccf0849ef885934395 skills/ui-ux-pro-max/data/stacks/vue.csv -ad3c3236134d833bda01a2faf31ddeaaa1dbd5005fa430dec571fa91b26e5fea skills/ui-ux-pro-max/data/styles.csv -64695e05ac335ba534aff396c4ba9241c642f80ea53b424251d2669b71c4772b skills/ui-ux-pro-max/data/typography.csv -58fc52fff69f62709f8c7dd460de6f6693699ea820f24287f3301a427c2b554e skills/ui-ux-pro-max/data/ui-reasoning.csv -1870ee048f2a2bdd60709f8f7adf7f3b6dcad560bc005c8b2915a8ac8639820d skills/ui-ux-pro-max/data/ux-guidelines.csv -10bfc24e09a6a15db8309e6ef9b6881e1d4af97dffb7c99418aefb8e30df7d54 skills/ui-ux-pro-max/data/web-interface.csv -5459d1f04eea03dfb913742d0c03edc5065ac67f6227e4807fa87699662588cb skills/ui-ux-pro-max/scripts/core.py -4da1d341f3c7749df51b51db4a543a48a427c3c746eb0e9882a1ab86acf3bb54 skills/ui-ux-pro-max/scripts/design_system.py -a449e57060ef5134e98e62fd11f6e240153afd68c27dab89cbb72a3ce55f1498 skills/ui-ux-pro-max/scripts/search.py -a56fbc9d048635c9a0953033a168ee0ff7cc672c8edb3663ed71470c4f89806f skills/ui-ux-pro-max/SKILL.md -9828d8da2e1161025327a239cad31063a8cab6f6fef78a6a6d3b69d05d9a5b79 skills/ultimate-code-expert/SKILL.md -c72faf2b168976fb71884f6f6b7f647259170066f072c94c6e65b38b87f12b9e skills/ux-researcher/SKILL.md -e0dbb382c290579394b4604a76452246dae2a84ab93b2cc1337aceaaaede4645 skills/vue-expert/references/build-tooling.md -e0a7d19ad691df2ed69361571c846eb7734327e5b568d98ef3b120c3cb20834a skills/vue-expert/references/components.md -19887431c295a5b43f899a7b8c50223db60c432b7a93be6cf8372621ddb001a6 skills/vue-expert/references/composition-api.md -5f172340800332503597bba971039e282f61a3a1d850367dfafb6007a7e539a0 skills/vue-expert/references/mobile-hybrid.md -d105a370ea54e8dbd53f67359343c10f30196e36c53bcd6f01b8431d954612bd skills/vue-expert/references/nuxt.md -5cb04b1d9945e73c7a298dc0d2e4a2071d5e80faac8188e09a90c548897fbfbb skills/vue-expert/references/state-management.md -6615f9af00f44fa46af52e25307f924d61763f54cbdd18ef78bfafc0431c5b70 skills/vue-expert/references/typescript.md -fa82ba39a70b4c075ad9aafbb77f2d9715b80232efa76208802ff7c093c963fa skills/vue-expert/SKILL.md ad96d04be020edb9bdf2633bbba69ae231d262dd27abe3abba2f41b9ee12c80e skills/websocket-engineer/references/alternatives.md 05c663a2542c579cdc08316c3781ae361af3ad5eea2408e05986f0b29d58e071 skills/websocket-engineer/references/patterns.md 0a31fd106d36e01045f274e5021f5b70323ce1ada448338b63233c1f13dd2ff0 skills/websocket-engineer/references/protocol.md @@ -982,7 +890,7 @@ a24cebb099481c62776172b8465e6b9a5532ffa993cd43da571656c51aa67844 skills/websock 185d176a5220e0c7a242e0eddb3254cfc4f94e85ec492df460cfc29bd75ff034 skills/websocket-engineer/SKILL.md 97a7a17c4ba3b2f204702d03e855f53f124ba80d66482817f4d337f55b9bd47f skills/workflow-automation-expert/SKILL.md 2f9b75cd4aaca7e1ff5aed6c733c28fde144071e08b2a1fc91936a4baa95dcb7 skills/zero-defect-guardian/SKILL.md -aa4cf46d2de1ad399f2d940716d1ab89f378e2fa34fdfea9a9c0d14015b5cad5 stats-compiled.json +5f1fd2178a798fc663db475a092c1856bdc7bb1046503e91b21d5237cc12ae75 stats-compiled.json bd2110109143f19c0ce9bc41f6d03eaabe951b5b9fbde903ea57ac75b0f2ee1e templates/CLAUDE-portable.md 54e812f25fb7777acb8688c6d04dc5ff1ec6f481ccd8ac24d675feaf469172f3 templates/settings.portable.json 2cfc628805538fe80732180f63ef5b2a0670afcc1cfc17269a2f73c51f1a879f tests/browserbase-wrapper-env.test.js @@ -991,4 +899,4 @@ b5b75baeeda0052210bf072c1b296dd29402b1bb85fdd45f1d37a460965daeb1 tools/bookworm 0dd856fc7f1aeaa11cef712894949ef1eeb3b758436f8d5a2bf120b5bffbb546 tools/export.mjs ad98b65635d5375e491a39a668cb848a65034e6cbf2ef3e59d05aea6084331aa tools/scrubber.mjs 2b8b994419b8d22bf2d29d84aa098d047900244ce7eb6036807703c1b3485859 tools/third-machine-install.ps1 -82396552835868194c4604eaeb8b3e33be7e243b62a6973d5d8d767568231b10 VERSION +467b5ecd05aef4657c7d9dbec1976d0a377e072262c46a91a60db2637bd1a4cb VERSION diff --git a/INTEGRITY.sha256.sig b/INTEGRITY.sha256.sig index 2748fb7..7946e5e 100644 --- a/INTEGRITY.sha256.sig +++ b/INTEGRITY.sha256.sig @@ -1 +1 @@ -e2c8091379c81deafedfc6d0a23469fbcab82eaf715336ce38cda60f149f07287b7d2b08dabab9a22f1e2837315306b057d2b54032fb3c99ef85a2cba1e51d0f +8a41dfb46f51330bc42b2cd01af3cceaa307656ae803a6e9b3ede9eeeb592944fff2f467b0393cec84a6803ddb0c07beb5e0ec0113c51ae4cc43babdb4dce900 diff --git a/MANIFEST.json b/MANIFEST.json index 084a542..b198c1e 100644 --- a/MANIFEST.json +++ b/MANIFEST.json @@ -1,6 +1,6 @@ { - "version": "6.7.0", - "exportedAt": "2026-04-27T09:55:18.226Z", - "fileCount": 994, + "version": "6.6.0", + "exportedAt": "2026-04-27T11:26:30.072Z", + "fileCount": 902, "pubKeyFingerprint": "26b83e1b38cdf64a" } \ No newline at end of file diff --git a/SKILL-REGISTRY.md b/SKILL-REGISTRY.md index 0a53497..7035f28 100644 --- a/SKILL-REGISTRY.md +++ b/SKILL-REGISTRY.md @@ -4,8 +4,8 @@ ## 统计 -- **总计**: 95 (59 stable + 1 beta + 35 imported, 38 composable, 7 deprecated 不计入总数) -- **最后更新**: 2026-04-24 +- **总计**: 73 (47 stable + 1 beta + 25 imported, 38 composable, 7 deprecated 不计入总数) +- **最后更新: 2026-04-27 ### Beta 毕业标准 beta → stable 需满足全部条件: diff --git a/VERSION b/VERSION index f0e13c5..826f5ce 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -6.7.0 +6.6.0 diff --git a/hooks/route-interceptor-bundle.js b/hooks/route-interceptor-bundle.js index fc22ec3..7160ac9 100644 --- a/hooks/route-interceptor-bundle.js +++ b/hooks/route-interceptor-bundle.js @@ -21,15 +21,31 @@ const fs = require('fs'); const path = require('path'); const crypto = require('crypto'); -const { safeAppendJsonl } = require('./lib/safe-append.js'); +let safeAppendJsonl; +try { ({ safeAppendJsonl } = require('./lib/safe-append.js')); } catch { safeAppendJsonl = () => {}; } -const readStdin = require('./lib/read-stdin.js'); +let readStdin; +try { readStdin = require('./lib/read-stdin.js'); } catch { readStdin = () => Promise.resolve(''); } -// === P3-1 BUNDLE: preload routing deps === -// Phase 0 宪法合规拆分: 核心逻辑提取到独立模块 -const { runRouteEngine, loadSkillsIndex, safeRequire: _engineRequire } = require('../scripts/route-engine.js'); -const { buildBWRDirective, MUST_INVOKE_EXEMPT_INTENTS: _EXEMPT } = require('../scripts/bwr-builder.js'); -const { writeRouteState: _writeRouteState } = require('../scripts/route-state.js'); +// === P3-1 BUNDLE: preload routing deps (fail-open: 模块缺失时降级为空路由) === +let runRouteEngine, loadSkillsIndex, _engineRequire; +let buildBWRDirective, _EXEMPT; +let _writeRouteState; +let _routingReady = true; +try { + ({ runRouteEngine, loadSkillsIndex, safeRequire: _engineRequire } = require('../scripts/route-engine.js')); + ({ buildBWRDirective, MUST_INVOKE_EXEMPT_INTENTS: _EXEMPT } = require('../scripts/bwr-builder.js')); + ({ writeRouteState: _writeRouteState } = require('../scripts/route-state.js')); +} catch (e) { + _routingReady = false; + runRouteEngine = () => ({ skill: null, confidence: 0, candidates: [] }); + loadSkillsIndex = () => []; + _engineRequire = () => null; + buildBWRDirective = () => '[BWR:skip] routing modules unavailable'; + _EXEMPT = []; + _writeRouteState = () => {}; + process.stderr.write('[route-interceptor] WARN: routing modules not found, degraded to skip mode: ' + (e.message || '') + '\n'); +} // H13: 意图分类器立即加载 (每次必用) const _preloaded = {}; diff --git a/package.json b/package.json index 40f40a8..2646540 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bookworm-hooks", - "version": "6.5.0", + "version": "6.6.0", "private": true, "description": "Bookworm Smart Assistant hooks and tests", "scripts": { diff --git a/scripts/patches/migrate-session-continuity-to-local.js b/scripts/patches/migrate-session-continuity-to-local.js new file mode 100644 index 0000000..e2c9312 --- /dev/null +++ b/scripts/patches/migrate-session-continuity-to-local.js @@ -0,0 +1,33 @@ +#!/usr/bin/env node +// 将 settings.json 中 session-continuity-mcp 从 npm-cache 路径迁移到本地 ~/.claude/mcp/ +// 幂等: 已迁移则跳过 +const fs = require('fs'); +const path = require('path'); + +const SENTINEL = '/.claude/mcp/claude-session-continuity-mcp'; +const OLD_PATH = 'C:/Users/leesu/AppData/Local/npm-cache/_npx/41147f6a3b3ef0bb/node_modules/claude-session-continuity-mcp'; +const NEW_PATH = 'C:/Users/leesu/.claude/mcp/claude-session-continuity-mcp'; +const SETTINGS = path.join(__dirname, '../../settings.json'); + +const raw = fs.readFileSync(SETTINGS, 'utf8'); + +if (raw.includes(SENTINEL) && !raw.includes(OLD_PATH)) { + console.log('[SKIP] 已迁移,无需重复操作'); + process.exit(0); +} + +if (!raw.includes(OLD_PATH)) { + console.log('[SKIP] 未找到旧路径,无需迁移'); + process.exit(0); +} + +const bak = SETTINGS + '.bak-' + new Date().toISOString().slice(0, 10).replace(/-/g, ''); +fs.copyFileSync(SETTINGS, bak); +console.log('[BAK] ' + bak); + +const updated = raw.split(OLD_PATH).join(NEW_PATH); +fs.writeFileSync(SETTINGS, updated, 'utf8'); + +const count = (raw.match(new RegExp(OLD_PATH.replace(/[/]/g, '\\/'), 'g')) || []).length; +console.log(`[OK] 替换 ${count} 处 npm-cache → local 路径`); +console.log('[VERIFY] 新路径: ' + NEW_PATH); diff --git a/scripts/patches/patch-p0-3-precise-tiering.js b/scripts/patches/patch-p0-3-precise-tiering.js new file mode 100644 index 0000000..2e3206f --- /dev/null +++ b/scripts/patches/patch-p0-3-precise-tiering.js @@ -0,0 +1,90 @@ +#!/usr/bin/env node +/** + * P0-3 Precise Re-tiering + * Uses maturity field + route frequency + domain relevance for accurate T1/T2/T3 + * Replaces previous coarse tiering (T3 only matched 2/34) + * Idempotent: overwrites existing tier_class/criticality values + */ +'use strict'; +const fs = require('fs'); +const path = require('path'); + +const TARGET = path.resolve(__dirname, '..', '..', 'skills-index.json'); +if (!fs.existsSync(TARGET)) { process.stderr.write('[SKIP] not found\n'); process.exit(0); } + +const src = fs.readFileSync(TARGET, 'utf8'); +let index; +try { index = JSON.parse(src); } catch { process.stderr.write('[FAIL] parse\n'); process.exit(1); } +if (!index.skills) { process.stderr.write('[FAIL] no skills\n'); process.exit(1); } + +fs.writeFileSync(TARGET + '.bak-p03-precise.' + Date.now(), src); + +// T1: 21 high-frequency / high-criticality core skills +const T1 = new Set([ + 'ai-ml-expert', 'architect-expert', 'backend-builder', 'debugger-expert', + 'developer-expert', 'devops-expert', 'frontend-expert', 'git-operation-master', + 'guardian', 'mobile-expert', 'performance-expert', 'project-audit-expert', + 'prompt-optimizer', 'qa', 'review', 'reviewer-expert', 'security-expert', + 'technical-seo-expert', 'tester-expert', 'workflow-automation-expert', + 'zero-defect-guardian', +]); + +// T2: 28 on-demand skills (proven useful or domain-relevant) +const T2 = new Set([ + // Stable T2 (13): actively routed or clearly relevant + 'api-integration-specialist', 'browser-automation-expert', 'cloud-native-expert', + 'data-engineer-expert', 'database-tuning-expert', 'devsecops-expert', + 'diagram-as-code-expert', 'handoff', 'mcp-probe', 'mcp-prune', + 'miniprogram-expert', 'product-manager-expert', 'regex-shell-wizard', + // Unknown T2 (10): infra/ops/dev tools + 'api-designer', 'cloud-architect', 'data-analyst-expert', 'gstack', + 'kubernetes-specialist', 'project-coordinator', 'ship', 'sre-expert', + 'tech-writer-expert', 'terraform-engineer', + // Imported T2 (5): actively routed or language skills + 'codex', 'investigate', 'nextjs-developer', 'python-pro', 'typescript-pro', +]); + +// HIGH criticality: security/audit/guardian types +const HIGH_CRIT = new Set([ + 'security-expert', 'guardian', 'zero-defect-guardian', 'review', + 'debugger-expert', 'developer-expert', 'project-audit-expert', +]); + +// Load route frequency from available data +const routeFreq = {}; +const dataFiles = [ + path.join(__dirname, '..', '..', 'debug', 'shadow-route-log.jsonl'), + path.join(__dirname, '..', '..', 'debug', 'metrics-route.jsonl'), +]; +for (const f of dataFiles) { + try { + if (!fs.existsSync(f)) continue; + for (const line of fs.readFileSync(f, 'utf8').split('\n').filter(Boolean)) { + try { + const e = JSON.parse(line); + const name = e.p || e.skill; + if (name && name !== 'none') routeFreq[name] = (routeFreq[name] || 0) + 1; + } catch {} + } + } catch {} +} + +let t1 = 0, t2 = 0, t3 = 0; +for (const skill of index.skills) { + const name = skill.name || ''; + if (T1.has(name)) { + skill.tier_class = 'T1'; t1++; + } else if (T2.has(name)) { + skill.tier_class = 'T2'; t2++; + } else { + skill.tier_class = 'T3'; t3++; + } + skill.criticality = HIGH_CRIT.has(name) ? 'HIGH' : T1.has(name) ? 'MEDIUM' : 'LOW'; + skill.callCount30d = routeFreq[name] || 0; +} + +const tmp = TARGET + '.tmp.' + process.pid; +fs.writeFileSync(tmp, JSON.stringify(index, null, 2), 'utf8'); +fs.renameSync(tmp, TARGET); +process.stderr.write('[DONE] Precise tiering: T1=' + t1 + ' T2=' + t2 + ' T3=' + t3 + '\n'); +process.stderr.write('[DATA] Route frequency populated for ' + Object.keys(routeFreq).length + ' skills\n'); diff --git a/scripts/patches/patch-route-interceptor-failopen.js b/scripts/patches/patch-route-interceptor-failopen.js new file mode 100644 index 0000000..f171c8e --- /dev/null +++ b/scripts/patches/patch-route-interceptor-failopen.js @@ -0,0 +1,85 @@ +#!/usr/bin/env node +/** + * Patch: route-interceptor-bundle.js 硬 require → fail-open + * 原因: 旧版部署缺少 scripts/route-engine.js 等文件时, + * 硬 require 导致整个 UserPromptSubmit hook 崩溃 (MODULE_NOT_FOUND) + * 修复: 包裹 try-catch, 模块缺失时降级为 [BWR:skip] + */ +'use strict'; +const fs = require('fs'); +const path = require('path'); + +const TARGET = path.join(__dirname, '..', '..', 'hooks', 'route-interceptor-bundle.js'); +const SENTINEL = '_routingReady'; + +if (!fs.existsSync(TARGET)) { + console.log('[patch] route-interceptor-bundle.js 不存在, 跳过'); + process.exit(0); +} + +let code = fs.readFileSync(TARGET, 'utf8'); + +if (code.includes(SENTINEL)) { + console.log('[patch] 已包含 fail-open 保护, 跳过'); + process.exit(0); +} + +// 备份 +const bak = TARGET + '.bak.' + Date.now(); +fs.writeFileSync(bak, code); + +const OLD = `const { safeAppendJsonl } = require('./lib/safe-append.js'); + +const readStdin = require('./lib/read-stdin.js'); + +// === P3-1 BUNDLE: preload routing deps === +// Phase 0 宪法合规拆分: 核心逻辑提取到独立模块 +const { runRouteEngine, loadSkillsIndex, safeRequire: _engineRequire } = require('../scripts/route-engine.js'); +const { buildBWRDirective, MUST_INVOKE_EXEMPT_INTENTS: _EXEMPT } = require('../scripts/bwr-builder.js'); +const { writeRouteState: _writeRouteState } = require('../scripts/route-state.js');`; + +const NEW = `let safeAppendJsonl; +try { ({ safeAppendJsonl } = require('./lib/safe-append.js')); } catch { safeAppendJsonl = () => {}; } + +let readStdin; +try { readStdin = require('./lib/read-stdin.js'); } catch { readStdin = () => Promise.resolve(''); } + +// === P3-1 BUNDLE: preload routing deps (fail-open: 模块缺失时降级为空路由) === +let runRouteEngine, loadSkillsIndex, _engineRequire; +let buildBWRDirective, _EXEMPT; +let _writeRouteState; +let _routingReady = true; +try { + ({ runRouteEngine, loadSkillsIndex, safeRequire: _engineRequire } = require('../scripts/route-engine.js')); + ({ buildBWRDirective, MUST_INVOKE_EXEMPT_INTENTS: _EXEMPT } = require('../scripts/bwr-builder.js')); + ({ writeRouteState: _writeRouteState } = require('../scripts/route-state.js')); +} catch (e) { + _routingReady = false; + runRouteEngine = () => ({ skill: null, confidence: 0, candidates: [] }); + loadSkillsIndex = () => []; + _engineRequire = () => null; + buildBWRDirective = () => '[BWR:skip] routing modules unavailable'; + _EXEMPT = []; + _writeRouteState = () => {}; + process.stderr.write('[route-interceptor] WARN: routing modules not found, degraded to skip mode: ' + (e.message || '') + '\\n'); +}`; + +// 规范化换行符再匹配 +const codeNorm = code.replace(/\r\n/g, '\n'); +const oldNorm = OLD.replace(/\r\n/g, '\n'); +if (!codeNorm.includes(oldNorm)) { + console.error('[patch] 找不到目标代码块, 可能已被修改'); + process.exit(1); +} + +// 保留原文件换行风格 +const eol = code.includes('\r\n') ? '\r\n' : '\n'; +const newAdapted = NEW.replace(/\n/g, eol); +code = code.replace(OLD.replace(/\n/g, eol), newAdapted); +if (code === fs.readFileSync(TARGET, 'utf8')) { + // fallback: 用规范化后的内容替换 + code = codeNorm.replace(oldNorm, NEW); +} +fs.writeFileSync(TARGET, code); +console.log('[patch] route-interceptor-bundle.js → fail-open 保护已注入'); +console.log('[patch] 备份:', bak); diff --git a/scripts/patches/patch-skill-cleanup-22.js b/scripts/patches/patch-skill-cleanup-22.js new file mode 100644 index 0000000..c086bde --- /dev/null +++ b/scripts/patches/patch-skill-cleanup-22.js @@ -0,0 +1,68 @@ +#!/usr/bin/env node +/** + * Skill Cleanup: Remove 22 low-value skills + * - 14 delete (irrelevant/niche/overlapping) + * - 8 merge-remove (redundant groups) + * Moves skill dirs to skills/_archived/, removes from skills-index.json + */ +'use strict'; +const fs = require('fs'); +const path = require('path'); + +const CLAUDE_ROOT = path.resolve(__dirname, '..', '..'); +const INDEX = path.join(CLAUDE_ROOT, 'skills-index.json'); +const SKILLS_DIR = path.join(CLAUDE_ROOT, 'skills'); +const ARCHIVE_DIR = path.join(SKILLS_DIR, '_archived'); + +const TO_REMOVE = [ + // Cat 1: language/framework mismatch (6) + 'angular-architect', 'flutter-expert', 'golang-pro', + 'rust-engineer', 'swift-expert', 'vue-expert', + // Cat 1: extremely niche (4) + 'ai-philosophy-expert', 'edge-computing-expert', 'graphql-architect', 'evolution-tracker', + // Cat 1: overlapping with T1 (4) + 'ultimate-code-expert', 'frontend-design', 'design-consultation', 'design-review', + // Cat 2: plan variants → planning-with-files covers (3) + 'plan-ceo-review', 'plan-design-review', 'plan-eng-review', + // Cat 2: design duplicates → frontend-expert T1 covers (3) + 'designer-expert', 'ui-ux-pro-max', 'ux-researcher', + // Cat 2: setup tools → devops-expert covers (2) + 'setup-browser-cookies', 'setup-deploy', +]; + +if (!fs.existsSync(INDEX)) { process.stderr.write('[FAIL] skills-index.json not found\n'); process.exit(1); } +const src = fs.readFileSync(INDEX, 'utf8'); +let index; +try { index = JSON.parse(src); } catch { process.stderr.write('[FAIL] parse\n'); process.exit(1); } + +fs.writeFileSync(INDEX + '.bak-cleanup.' + Date.now(), src); + +const removeSet = new Set(TO_REMOVE); +const before = index.skills.length; +index.skills = index.skills.filter(s => !removeSet.has(s.name)); +const removed = before - index.skills.length; + +// Write updated index +const tmp = INDEX + '.tmp.' + process.pid; +fs.writeFileSync(tmp, JSON.stringify(index, null, 2), 'utf8'); +fs.renameSync(tmp, INDEX); +process.stderr.write('[INDEX] Removed ' + removed + '/' + TO_REMOVE.length + ' from skills-index.json (' + before + ' -> ' + index.skills.length + ')\n'); + +// Move skill directories to _archived +if (!fs.existsSync(ARCHIVE_DIR)) fs.mkdirSync(ARCHIVE_DIR, { recursive: true }); +let moved = 0; +for (const name of TO_REMOVE) { + const src = path.join(SKILLS_DIR, name); + const dst = path.join(ARCHIVE_DIR, name); + if (fs.existsSync(src) && !fs.existsSync(dst)) { + try { fs.renameSync(src, dst); moved++; } catch (e) { + process.stderr.write('[WARN] Failed to move ' + name + ': ' + e.message + '\n'); + } + } +} +process.stderr.write('[FILES] Moved ' + moved + ' skill dirs to _archived/\n'); + +// Summary +const tiers = {}; +for (const s of index.skills) tiers[s.tier_class] = (tiers[s.tier_class] || 0) + 1; +process.stderr.write('[DONE] Final: ' + index.skills.length + ' skills (T1=' + (tiers.T1||0) + ' T2=' + (tiers.T2||0) + ' T3=' + (tiers.T3||0) + ')\n'); diff --git a/settings.template.json b/settings.template.json index 4cb7c4e..c82ca9c 100644 --- a/settings.template.json +++ b/settings.template.json @@ -283,7 +283,7 @@ "hooks": [ { "type": "command", - "command": "node {{HOME}}/AppData/Local/npm-cache/_npx/41147f6a3b3ef0bb/node_modules/claude-session-continuity-mcp/dist/hooks/post-tool-use.js" + "command": "node {{CLAUDE_ROOT}}/mcp/claude-session-continuity-mcp/dist/hooks/post-tool-use.js" } ] } @@ -302,7 +302,7 @@ "hooks": [ { "type": "command", - "command": "node {{HOME}}/AppData/Local/npm-cache/_npx/41147f6a3b3ef0bb/node_modules/claude-session-continuity-mcp/dist/hooks/pre-compact.js" + "command": "node {{CLAUDE_ROOT}}/mcp/claude-session-continuity-mcp/dist/hooks/pre-compact.js" } ] } @@ -341,7 +341,7 @@ "hooks": [ { "type": "command", - "command": "node {{HOME}}/AppData/Local/npm-cache/_npx/41147f6a3b3ef0bb/node_modules/claude-session-continuity-mcp/dist/hooks/session-end.js" + "command": "node {{CLAUDE_ROOT}}/mcp/claude-session-continuity-mcp/dist/hooks/session-end.js" } ] } diff --git a/skills-index-lite.json b/skills-index-lite.json index 49f7f7e..5dc8f54 100644 --- a/skills-index-lite.json +++ b/skills-index-lite.json @@ -1,47065 +1,47065 @@ -{ - "generated": "2026-04-27T09:30:28.917Z", - "version": "v6.6.0", - "skillCount": 95, - "skills": [ - { - "name": "ai-ml-expert", - "description": "AI/机器学习专家。当用户需要 PyTorch、TensorFlow、深度学习、神经网络、 NLP 自然语言处理、CV 计算机视觉、LLM 大语言模型、RAG 检索增强、 Prompt Engineering、模型微调 Fine-tuning、Agent 开发、Hugging Face、 LangChain,或说 \"机器学习\"、\"AI\"、\"模型训练\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "ai", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "机器学习", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "深度学习", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "神经网络", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "模型训练", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pytorch", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tensorflow", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "keras", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "transformers", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scikit-learn", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "文本分类", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ner", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "文本生成", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "语义搜索", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "embedding", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "图像分类", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "目标检测", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "分割", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ocr", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "yolo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "llm", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gpt", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bert", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "llama", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "qwen", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "chatgpt", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "大模型", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rag", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "agent", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "langchain", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "prompt engineering", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "微调", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lora", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "xgboost", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lightgbm", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "分类", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "回归", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "聚类", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "特征工程", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术栈", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "集成学习", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cnn", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rnn/lstm", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "transformer", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gan", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fine-tuning", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "训练", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "评估", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "监控", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "推荐模型", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "catboost", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "roberta", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "中文用 bert-wwm", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gpt系列", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bert+crf", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "globalpointer", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "resnet", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "efficientnet", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vit", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "yolov8", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rt-detr", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "u-net", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "deeplabv3+", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "embedding + vectordb + llm", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "指标", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "auc", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "f1", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "precision", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "recall", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "accuracy", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "macro-f1", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "confusion matrix", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mse", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mae", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "r²", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mape", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "entity-level f1", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bleu", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rouge", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "perplexity", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "map", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "iou", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bert-base-chinese", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "你好世界", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pt", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "你的问题", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "机器学习专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "自然语言处理", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "计算机视觉", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "大语言模型", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "检索增强", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "模型微调", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "nlp", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "hugging face", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "monitoring", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - } - ] - }, - { - "name": "ai-philosophy-expert", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "ai 伦理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai 道德", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "算法伦理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "伦理审查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ethical ai", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "responsible ai", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "对齐", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "价值对齐", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "alignment", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "value alignment", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rlhf", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "偏见审计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "算法公平", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "歧视", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fairness", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bias audit", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "可解释性", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "透明度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "黑箱", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "xai", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "explainability", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai 治理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai 合规", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai 法规", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai governance", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "eu ai act", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai 哲学", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "意识", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "涌现", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "中文房间", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "philosophy of ai", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "人机交互", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "拟人化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "过度依赖", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "anthropomorphism", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai 风险", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "长期风险", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "奇点", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai risk", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "x-risk", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "设计要求", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai 能触发哪些不可逆动作?", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "地区", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "分级标注 + 解释模块", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "中国", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动化决策告知+拒绝权", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gdpr art.22", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "决策解释 api + 人工审查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "风险", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "风险项", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "等级", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "🟡 应当改进", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "本技能提供", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "架构方案", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "技术约束", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "道德影响评估", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "道德红线", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai-ml-expert", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "交互方案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "用户流程", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "隐私分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "权限哲学", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai伦理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai哲学", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "负责任ai", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai治理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.06 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "angular-architect", - "description": "Angular 架构专家。当用户需要 Angular 17+ standalone 组件、Signals、RxJS 响应式编程、NgRx 状态管理、Angular 路由、Angular 性能优化、企业级 Angular 应用,或说 \"Angular\"、\"RxJS\"、\"NgRx\" 时使用此技能。", - "maturity": "imported", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "standalone components", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "signals", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "input/output", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ngrx", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "router config", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "guards", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lazy loading", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "resolvers", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "angular", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "rxjs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "架构专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "组件", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.43 - }, - { - "keyword": "响应式编程", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "状态管理", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "路由", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "性能优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.21 - }, - { - "keyword": "企业级", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "应用", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "standalone", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.06 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - }, - { - "keyword": "routing", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.02 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "api-designer", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "resource design", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "http methods", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hateoas", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pagination", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "error responses", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rfc 7807", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "status codes", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "api设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "openapi", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "接口规范", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "interface", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "api-integration-specialist", - "description": "API 集成与第三方对接专家。当用户需要支付集成(Stripe/微信支付/支付宝)、 OAuth2/OIDC 身份认证、Webhook 处理、第三方 API 对接、 AI API 集成(OpenAI/Claude)、幂等性设计, 或说 \"支付对接\"、\"OAuth\"、\"Webhook\"、\"API集成\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "stripe", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "paypal", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "微信支付", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "支付宝", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "支付对接", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "支付回调", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "oauth2", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "oidc", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sso", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "jwt", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "api签名", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hmac", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "openai", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "claude api", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "aws s3", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "阿里云oss", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "短信接口", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "地图api", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "webhook", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "幂等性", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "重试机制", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "限流", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "回调", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "熔断", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "oauth", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "api集成", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "网络超时重试", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "webhook 重复推送", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "验证时间戳,拒绝过期请求", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "集成与第三方", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "对接专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要支", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "付集成", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "身份认证", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "第三方", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "对接", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "集成", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "幂等性设计", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "api", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "ai api", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "claude", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "interface", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - }, - { - "keyword": "钩子", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "architect-expert", - "description": "系统架构师与CTO规划专家。当用户需要系统架构设计、技术选型、API 设计、数据库设计、 分布式系统、微服务架构、高可用高并发、DDD 领域驱动、技术方案、ER 图、架构图、 CTO 规划、黄金路径、平台工程、技术战略、团队拓扑、技术路线图、ADR 架构决策, 或说 \"架构\"、\"系统设计\"、\"技术选型\"、\"CTO规划\"、\"技术战略\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "架构设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "系统设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "架构方案", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "技术架构", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "架构图", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "system design", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "architecture", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.12 - }, - { - "keyword": "software architecture", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术选型", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "框架选择", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术栈", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "技术对比", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术方案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tech stack", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "technology selection", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "api 设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "接口设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据流", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "restful", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "graphql", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "api design", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据库设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "表结构", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "er 图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据模型", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "schema", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "database design", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "分布式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "微服务", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "高可用", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "高并发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "扩展性", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "负载均衡", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "distributed system", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "high availability", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scalability", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "microservices", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ddd", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cqrs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "事件驱动", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "领域驱动", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "clean architecture", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "domain driven design", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cto规划", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术战略", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "黄金路径", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "平台工程", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "团队拓扑", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "adr", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "technical strategy", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "platform engineering", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "推荐方案", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "go (gin) / rust (axum)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "java (spring boot)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "postgresql", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "redis", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "kafka / rabbitmq", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "next.js (app router)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "架构", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "最终", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自然成立", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "选择的方案及理由", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "系统架构师与", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "规划专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要系", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "统架构设计", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "分布式系统", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "微服务架构", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "高可用高并发", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "规划", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "技术路线图", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "架构决策", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "cto", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "api", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "load balancing", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - }, - { - "keyword": "interface", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "backend-builder", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "后端", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "后端开发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "服务端", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "api开发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "node.js", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "express", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fastapi", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "nestjs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "django", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "go", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "gin", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "微服务", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "grpc", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "protobuf", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "microservice", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "postgresql", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "mysql", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mongodb", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "redis", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "restful", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "graphql", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "api设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "api", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "数据库", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "database", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - }, - { - "keyword": "backend", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "benchmark", - "description": "Performance regression detection using the browse daemon. Establishes baselines for page load times, Core Web Vitals, and resource sizes. Compares before/after on every PR. Tracks performance trends o", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "20kb there", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "baseline", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "compare", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "/dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "performance", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.82 - }, - { - "keyword": "benchmark", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "page speed", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lighthouse", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "web vitals", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bundle size", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "load time", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "[ -n", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && [ -x", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && b=", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "[ -z", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "$b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "ready: $b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "needs_setup", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "slug=unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "$b eval", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "url", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "timestamp", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pages", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": ": {", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": ": 120,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 450,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 800,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 600,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 1200,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 1400,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 42,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 1250000,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 450000,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 85000,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": [\n {", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 320000,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 180},\n {", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 130000,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "domcomplete - navigationstart", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "loadeventend - navigationstart", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "using the browse", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "daemon. establishes baselines", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "for page load", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "times", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "core web vitals", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "and resource sizes.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "compares before", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "after on every", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "pr. tracks performance", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "trends over time.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "use when", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "性能", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - } - ] - }, - { - "name": "browse", - "description": "Fast headless browser for QA testing and site dogfooding. Navigate any URL, interact with elements, verify page state, diff before/after actions, take annotated screenshots, check responsive layouts, ", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "onclick", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$b snapshot -a -o", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "or $b responsive", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "complex auth", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "multi-factor login)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "localstorage", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "links", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "@e2", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "@c2", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "...). after snapshot", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "### reading", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "### interaction", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "--load>", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "command", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "attrs ", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tabs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "handoff [message]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "restart", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "resume", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "stop", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "open in browser", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "take a screenshot", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "dogfood this", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test the\n site", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "[ -n", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && [ -x", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && b=", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "[ -z", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "$b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "ready: $b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "needs_setup", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": ".main-content", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user@test.com", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "password", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": ".dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": ".modal", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#submit-btn", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#agree-checkbox", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#name-field", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#search-input", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#file-input", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ".upload-success", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#delete-button", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "done", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "value", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "color", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "welcome", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "email", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "submit", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "text → href", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "cmd", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "arg1", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "fast headless browser", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "for qa testing", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and site dogfooding.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "navigate any url", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "interact with elements", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "verify page state", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "diff before", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "after actions", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "take annotated screenshots", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "check responsive layouts", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "test forms and", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "uploads", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "handle dialogs", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and assert element", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "states.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ms per command.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "use when you", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "need to test", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "a feature", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "verify a deployment", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "dogfood a user", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "flow", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "or file a", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "bug with evidence.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "use when asked", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "test the site", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "部署", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "认证", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - } - ] - }, - { - "name": "browser-automation-expert", - "description": "浏览器自动化专家。当用户需要浏览器自动化、网页抓取、Web Scraping、 RPA 流程、爬虫开发、Playwright/Selenium 脚本编写, 或说 \"自动化浏览器\"、\"网页抓取\"、\"爬取页面\" 时使用此技能。 仅纯自动化/抓取/RPA/数据采集场景使用本技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash", - "mcp__playwright", - "mcp__chrome-devtools", - "mcp__selenium", - "mcp__browserbase", - "mcp__firecrawl", - "mcp__mobile", - "mcp__scrapling" - ], - "keywords": [ - { - "keyword": "playwright(自动化)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "selenium(自动化)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "browserbase", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stagehand", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cdp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scrapling", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "浏览器自动化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "网页自动化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动化脚本", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "rpa", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "自动填表", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "网页抓取", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "web scraping", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "爬虫", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据采集", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "页面提取", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "反检测抓取", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "网页截图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "页面监控", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "页面快照", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "视觉回归", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "headless", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "无头模式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "chrome devtools protocol", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cloudflare绕过", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "waf绕过", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "反检测", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stealth抓取", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "指纹伪装", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "打开网页", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "e2e测试", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "填表单", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "上传文件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "browser_navigate", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "browser_click", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "browser_snapshot", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "browser_fill_form", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "调试页面", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "执行js", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "抓网络请求", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "性能分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "内存快照", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "控制台日志", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "evaluate_script", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "devtools", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "云浏览器", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "远程浏览器", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "智能提取页面", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai操作网页", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stagehand_act", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stagehand_extract", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "爬取网站", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "抓取页面", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "提取数据", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "站点地图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "批量采集", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "firecrawl_scrape", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "firecrawl_crawl", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "firecrawl_search", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "python爬虫", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "抓取解析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动化浏览器", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "爬取页面", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "测试", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.33 - }, - { - "keyword": "性能", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.42 - }, - { - "keyword": "bug/报错", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "点击登录按钮", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "输入用户名", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "markdown", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "html", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "text", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "当用户需要浏", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "览器自动化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "流程", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "爬虫开发", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "脚本编写", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "仅纯自动化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "抓取", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "数据采集场景", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "使用本技能", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "playwright", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "selenium", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - }, - { - "keyword": "monitoring", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - }, - { - "keyword": "log", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - }, - { - "keyword": "debug", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - } - ] - }, - { - "name": "business-plan-skill", - "description": "商业计划书撰写专家。当用户需要撰写 BP 商业计划书、创业计划、融资材料、融资 PPT、 公司介绍、项目介绍、商业模式设计、商业画布、单位经济模型, 或说 \"写BP\"、\"商业计划书\"、\"融资材料\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write" - ], - "keywords": [ - { - "keyword": "商业计划书", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "写bp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "融资材料", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bp", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "创业计划", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "融资ppt", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "投资人材料", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "商业模式", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "商业画布", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "盈利模式", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "公司介绍", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "项目介绍", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "团队介绍", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "关键论点要有数据佐证", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "商业计划书撰", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "写专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要撰", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "融资", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "商业模式设计", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "单位经济模型", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ppt", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - } - ] - }, - { - "name": "canary", - "description": "Post-deploy canary monitoring. Watches the live app for console errors, performance regressions, and page failures using the browse daemon. Takes periodic screenshots, compares against pre-deploy base", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "git log", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "git fetch", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "git merge", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "and gh pr create command", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "take screenshots", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "check console errors", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "/dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "monitor deploy", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "canary", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "post-deploy check", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "watch production", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "verify deploy", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "[ -n", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && [ -x", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && b=", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "[ -z", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "$b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "ready: $b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "needs_setup", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "the base branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "the base branch.", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "shipped", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "verified.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "slug=unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "url", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "timestamp", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pages", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": ": {", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": ": 0,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "duration_min", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "alerts", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "post-deploy canary monitoring.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "watches the live", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "app for console", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "errors", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "performance regressions", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and page failures", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "using the browse", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "daemon. takes periodic", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "screenshots", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "compares against pre-deploy", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "baselines", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and alerts on", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "anomalies. use when", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "部署", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "性能", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - }, - { - "keyword": "监控", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - } - ] - }, - { - "name": "cloud-architect", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "ec2", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "s3", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lambda", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rds", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "well-architected framework", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gcp services", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "abstraction layers", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "portability", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vendor lock-in mitigation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "云架构", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "aws", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "gcp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "azure", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.06 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "cloud-native-expert", - "description": "云原生架构师专家。当用户需要 Kubernetes/K8s 集群部署、服务网格 Istio/Linkerd、 GitOps ArgoCD/Flux、Helm 配置、12-Factor App、HPA 自动扩缩容、NetworkPolicy, 或说 \"云原生\"、\"K8s\"、\"服务网格\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "k8s", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "服务网格", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "云原生", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "kubernetes", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "pod", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "deployment", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "statefulset", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "istio", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "linkerd", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "流量管理", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "mtls", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "gitops", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "argocd", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "flux", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "声明式", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "12-factor", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "不可变基础设施", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "微服务", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.65 - }, - { - "keyword": "helm", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "kustomize", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "configmap", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "secret", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "云原生架构师", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "集群部署", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.02 - }, - { - "keyword": "自动扩缩容", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "gitops argocd", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "factor app", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "hpa", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "networkpolicy", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.06 - }, - { - "keyword": "microservice", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "cluster", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "codex", - "description": "OpenAI Codex CLI wrapper — three modes. Code review: independent diff review via codex review with pass/fail gate. Challenge: adversarial mode that tries to break your code. Consult: ask codex anythin", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "tail -1", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "tail -1 - if a diff exists", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "offer to review it - otherwise", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"timestamp\":\"timestamp\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "\"status\":\"status\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "\"gate\":\"gate\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"findings\":n", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "status (\"clean\" if pass", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"issues_found\" if fail)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gate (\"pass\" or \"fail\")", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\\unresolved\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\critical_gaps\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\mode\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_proposed\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_accepted\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_deferred\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{scope_accepted} accepted", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\issues_found\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\initial_score\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\overall_score\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\decisions_made\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\gate\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\findings\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "why", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "findings", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "ceo review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{runs}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "independent 2nd opinion", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{findings}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\/plan-eng-review\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{status}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "design review", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "\\\\\\ below the table", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "race conditions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "security holes", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "/codex challenge security)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "resource leaks", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "failure modes", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "auth bypasses", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "privilege escalation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "data exposure", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "python3 -c \" import sys", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "'') text = item.get('text'", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "0) + usage.get('output_tokens'", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "codex review", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "codex challenge", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ask codex", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "second opinion", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "consult codex", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "the base branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "the base branch.", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": ")\n[ -z", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "] && echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "|| echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "$(basename $(pwd))", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "xhigh", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "$tmperr", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "focus on security", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tokens used", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tokens: unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "codex-review", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "timestamp", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "gate", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "findings_fixed", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "clean", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.55 - }, - { - "keyword": "issues_found", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "pass", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "fail", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "eng review required", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "with focus (e.g.,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "):", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "no_session", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "continue", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "\\status\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\commit\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\findings_fixed\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "openai codex cli", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "wrapper", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "three modes. code", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "review", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "independent diff review", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "via codex review", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "with pass", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "fail gate. challenge", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "adversarial mode that", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "tries to break", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "your code. consult", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ask codex anything", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "with session continuity", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "for follow-ups. the", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "iq autistic developer", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "second opinion. use", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "when asked to", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "安全", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "认证", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - } - ] - }, - { - "name": "copywriter-expert", - "description": "文案与营销内容专家。当用户需要撰写网站文案、广告文案、落地页文案、邮件文案、 产品描述、品牌 Slogan、CTA 行动号召、价值主张提炼, 或说 \"写文案\"、\"广告文案\"、\"落地页\"、\"营销文案\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write" - ], - "keywords": [ - { - "keyword": "文案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "广告文案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "落地页文案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "邮件文案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "网站文案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "产品描述", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "标题", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cta", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "行动号召", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "价值主张", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "slogan", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "品牌口号", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "aida", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pas", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fab", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "文案公式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "营销文案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "推广文案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "转化文案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "品牌文案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "写文案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "落地页", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "赋能", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "生态化反", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "吸引用户注意力", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "激发对产品的兴趣", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "促使用户采取行动", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "渲染问题的严重性", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "给出产品作为解决方案", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "产品是什么", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "为什么比别的更好", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "能为用户带来什么", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[提升注册转化率]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[独立开发者]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[一句话概括]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "1. ... 2. ... 3. ...", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "文案与营销内", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "容专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要撰", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "写网站文案", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "品牌", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "价值主张提炼", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - } - ] - }, - { - "name": "customer-success-expert", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "客户支持", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "售后", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "客服", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "工单", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "帮助中心", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "faq", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "客户成功", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "onboarding", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "客户引导", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "激活率", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "健康度评分", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "续费", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "流失", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "挽回", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "流失预警", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "nrr", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "churn rate", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "满意度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "nps", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "csat", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "客户反馈", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "评价管理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sla", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "响应时间", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "解决时间", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "服务等级", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "服务承诺", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "描述", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "示例", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "服务完全不可用", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "系统宕机", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "核心功能受损", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "支付失败", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "非核心功能异常", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "报表延迟", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "建议与咨询", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "功能建议", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "<50=高风险 ### 流失预警规则", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "检测方式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "使用分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "工单骤增", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "优先处理+回访", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "账务系统", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "有问题随时找我", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "解锁更多价值", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "综合登录频率", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "功能使用深度", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "支持工单量", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - } - ] - }, - { - "name": "data-analyst-expert", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "推荐图表", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "柱状图", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "条形图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "折线图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "面积图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "直方图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "箱线图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "饼图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "堆叠柱状图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "散点图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "热力图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "漏斗图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "桑基图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "当前值", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "可视化", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "用 pandas", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "形状: {df.shape}", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ")\r\n print(f", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pandas", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "a/b测试", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "a-b测试", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "ab测试", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "eda", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "统计分析", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "留存分析", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "numpy", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "matplotlib", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "seaborn", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "plotly", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "sql分析", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据清洗", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据报告", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "商业洞察", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "漏斗分析", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "假设检验", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "清洗", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "转换", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "描述性统计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "回归分析", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "分类", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.65 - }, - { - "keyword": "回归", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "聚类等基础ml应用", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "data-engineer-expert", - "description": "数据工程师专家。当用户需要进行数据管道设计、ETL 开发、数据仓库建模、流处理、 Spark/Kafka/Airflow/dbt 使用、维度建模、数据质量, 或说 \"数据工程\"、\"ETL\"、\"数据管道\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "etl", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据管道", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "数据工程", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "useranalytics", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "created_at", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "2024-01-01", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "country", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "revenue", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "total_revenue", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "is_active", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "active_users", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "overwrite", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "users.csv", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user_id", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "email", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "age", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据流", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "数据处理", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据仓库", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据湖", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据集市", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "olap", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "spark", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "kafka", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "airflow", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "dbt", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "flink", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "维度建模", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "星型模型", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "雪花模型", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据质量", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据治理", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据血缘", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "大规模数据处理", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据转换和建模", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "工作流编排", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "消息队列", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "实时流处理", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "轻量流处理", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "云数据仓库", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据湖格式", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "表格式", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据工程师专", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "行数据管道设", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "数据仓库建模", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "流处理", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "使用", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "queue", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "database-tuning-expert", - "description": "数据库调优与设计专家。当用户需要 SQL 优化、索引优化、Explain 分析、 慢查询排查、死锁分析、分库分表、读写分离、Redis 缓存一致性、 数据库架构设计,或说 \"慢查询\"、\"索引\"、\"数据库优化\"、\"死锁\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "慢查询", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sql优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "explain", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "索引优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "全表扫描", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "死锁", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "锁等待", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cpu飙升", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "主从延迟", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "连接池耗尽", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "分库分表", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "读写分离", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "缓存一致性", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "redis", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "tidb", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "schema设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "反范式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "json字段", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "时序数据", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "含义", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "极快", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "主键/唯一索引关联", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ref", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "一般", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "全索引扫描", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "all", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "buffers", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "关注点", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "seq scan", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "理想的访问方式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "位图堆扫描", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "nested loop", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "大表连接优选", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "实际耗时(ms)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rows", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "命中率应 >95%", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "适用场景", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "纯等值查询", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gin", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "postgis 空间索引", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "物理有序大表", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "策略", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "最终一致", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "延迟双删", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "写入较频繁", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "db变更→mq→更新缓存", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "索引", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "数据库优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "最左前缀", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user:{user_id}", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据库调优与", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "设计专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "慢查询排查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "死锁分析", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "数据库架构设", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "sql", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "database", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.06 - }, - { - "keyword": "cache", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - }, - { - "keyword": "index", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "debugger-expert", - "description": "Debug 侦探专家。当用户遇到 Bug、报错、异常、崩溃、问题排查、调试、 错误日志、stack trace、404/500 错误、内存泄漏、性能问题、代码不工作, 或说 \"为什么报错\"、\"这个错误\"、\"帮我调试\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash", - "mcp__chrome-devtools", - "mcp__playwright" - ], - "keywords": [ - { - "keyword": "bug", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "报错", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "error", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "exception", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "crash", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "崩溃", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "debug", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "调试", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "排查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "问题", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "故障", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "定位", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stack trace", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "traceback", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "日志", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "log", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "错误信息", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "404", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "500", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "502", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "503", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cors", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "跨域", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "内存泄漏", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "超时", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "卡死", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "爆窗", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "爆窗现象", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "系统修复", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "上下文溢出", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "context overflow", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "不工作", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "失败", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "undefined", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "null", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "nan", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "常见原因", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "对象未正确初始化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "空值访问", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "无限递归", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "跨域配置问题", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "对象没有该属性", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "字典键不存在", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "缩进不一致", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据库未启动", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "事务锁冲突", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "用途", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "为什么报错", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "这个错误", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "帮我调试", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "侦探专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户遇到", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "异常", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "问题排查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "错误日志", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "错误", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "性能问题", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "代码不工作", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "database", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - }, - { - "keyword": "transaction", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "config", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "design-consultation", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "date", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "initial design system created", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "design system", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "brand guidelines", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no_design_file", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[ -n", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && [ -x", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && b=", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "[ -z", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "$b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "ready: $b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "needs_setup", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "$b screenshot", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "built for x", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "designed for y", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$preview_file", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lorem ipsum", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "same as body", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "i recommend x", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "because y.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "optimal", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - } - ] - }, - { - "name": "design-review", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "parameter", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "(auto-detect or ask)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scope", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "--quick (homepage + 2)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "--deep (10-15 pages)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "none", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "minitest + fixtures + capybara", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "node.js", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "jest + cypress", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "pytest + pytest-cov", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "go", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "phpunit + mockery", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "elixir", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "integration", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "smoke", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "spec/", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "sort -rn", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "category", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "visual hierarchy", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "typography", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "spacing & layout", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "color & contrast", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "interaction states", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "responsive", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "content quality", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai slop", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "motion", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "performance feel", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "audit the design", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "visual qa", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ", or", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "[ -n", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && [ -x", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && b=", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "[ -z", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "$b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "ready: $b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "needs_setup", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "runtime:ruby", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:node", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:python", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:go", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:rust", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:php", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:elixir", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "rails", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "framework:rails", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "next", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "framework:nextjs", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "bootstrap_declined", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "`\r\n- `", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "ci:github", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "mkdir -p", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "$b responsive", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "no items.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "save api key", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "continue", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "submit", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "install the cli", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "saving…", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "saving...", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "welcome to [x]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lazy", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "date", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "yyyy-mm-dd", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "url", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "designscore", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": {", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": ", ... },", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": [{", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "i notice...", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ")\r\n-", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "— question (e.g.,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "work.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "— not", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "quick wins", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "not broken.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "deferred", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "improve", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "re-test confirms the fix works", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "no new errors introduced", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "needs specific browser state)", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "性能", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - } - ] - }, - { - "name": "designer-expert", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "屏幕宽度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "手机竖屏", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "≥ 640px", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "md", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "平板横屏/笔记本", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "≥ 1280px", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "2xl", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ui", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ux", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "关闭对话框", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "dialog", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "dialog-title", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "#main-content", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ui设计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "ux设计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "交互设计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "视觉设计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "设计系统", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "design tokens", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "组件规范", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "设计规范", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "figma", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "sketch", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "原型设计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "设计稿", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "用户体验", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "可用性", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "可访问性", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "响应式", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "允许用户犯错并轻松恢复", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "不要一次性展示所有信息", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "component", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "developer-expert", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "英文", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "变量", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "function", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "对象的模板", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "方法", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "parameter", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "异常", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "callback", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "异步操作的结果", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "异步/等待", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "帮我写", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "怎么实现", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "解释一下", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "编程", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "代码", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "怎么写", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "写一个", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "代码问题", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "报错", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "不工作", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "为什么", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.65 - }, - { - "keyword": "怎么做", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "最佳实践", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "推荐方案", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "template", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ] - }, - { - "name": "devops-expert", - "description": "DevOps 专家。当用户需要 CI/CD 配置、GitHub Actions、GitLab CI、Docker 容器化、 Kubernetes/K8s 部署、Nginx 配置、云服务 AWS/阿里云、Prometheus/Grafana 监控、 自动化运维,或说 \"部署\"、\"发布\"、\"Docker\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "devops", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ci/cd", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "流水线", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "镜像构建", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "docker", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "kubernetes", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "k8s", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "部署", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.55 - }, - { - "keyword": "发布", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "上线", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "容器化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "编排", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "github actions", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "gitlab ci", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "jenkins", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动化", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "监控", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "告警", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "prometheus", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "grafana", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "日志", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "aws", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "阿里云", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "云服务", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "serverless", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "node", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "dist/main.js", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "3000:3000", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cmd-shell", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "production", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "letsencrypt-prod", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "title", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": ": [\n {", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": [{", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "error rate", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "targets", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "expr", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "response time p95", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.02 - }, - { - "keyword": "自动化运维", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "nginx", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "deploy", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - }, - { - "keyword": "monitoring", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - }, - { - "keyword": "container", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "log", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - }, - { - "keyword": "config", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "devsecops-expert", - "description": "DevSecOps 专家。当用户需要安全左移、SAST/DAST 安全扫描、容器安全、镜像扫描 Trivy、 供应链安全 SBOM、安全流水线、OPA/Gatekeeper 策略、合规审计, 或说 \"DevSecOps\"、\"安全扫描\"、\"容器安全\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "high: y", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "devsecops", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "安全扫描", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "容器安全", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "dist/main.js", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "]\n kinds: [", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "安全左移", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "安全自动化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "sast", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "dast", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "sca", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "镜像扫描", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "运行时安全", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "供应链安全", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "sbom", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "依赖扫描", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "合规", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "审计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "安全策略", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "当用户需要安", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "全左移", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "安全流水线", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "策略", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "合规审计", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "trivy", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "opa", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "gatekeeper", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - }, - { - "keyword": "container", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "diagram-as-code-expert", - "description": "图表代码化专家。当用户需要 Mermaid、PlantUML、Graphviz 图表, 流程图、时序图、类图、状态图、ER图、甘特图、架构图生成, 或说 \"画图\"、\"生成图表\"、\"可视化\"、\"转成图\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "mermaid", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "plantuml", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "graphviz", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "draw.io", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "流程图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "时序图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "类图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "状态图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "er图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "甘特图", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "架构图", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "c4", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "画图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "生成图表", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "可视化", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "转成图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[] 矩形", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "() 圆角", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "{} 菱形", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "关键路径添加文字说明", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "图表代码化专", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "图表", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "架构图生成", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.06 - } - ] - }, - { - "name": "document-release", - "description": "Post-ship documentation update. Reads all project docs, cross-references the diff, updates README/ARCHITECTURE/CONTRIBUTING/CLAUDE.md to match what shipped, polishes CHANGELOG voice, cleans up TODOS, ", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "update the docs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sync documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "post-ship docs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "the base branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "the base branch.", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "./.git/*", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "./node_modules/*", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "./.gstack/*", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "./.context/*", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "why", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "you can now...", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "refactored the...", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "### for contributors", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "feature a", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "feature b", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "reads all project", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "docs", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "cross-references the diff", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "updates readme", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.06 - }, - { - "keyword": "contributing", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "claude.md to match", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "what shipped", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "polishes changelog voice", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "cleans up todos", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and optionally bumps", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "version. use when", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "asked to", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "proactively suggest after", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "a pr is", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "merged or code", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "is shipped.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "重构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - } - ] - }, - { - "name": "edge-computing-expert", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "edge functions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "边缘计算", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "workers", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cloudflare workers", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "vercel edge", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "deno deploy", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "边缘函数", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "全球部署", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "cdn", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "就近访问", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "边缘数据库", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "turso", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "d1", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "kv", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "database", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - } - ] - }, - { - "name": "email-communicator", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "写邮件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "商务邮件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "冷邮件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "开发信", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "跟进邮件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "催款函", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "合作邀请", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自我介绍", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "项目汇报", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "道歉信", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "感谢信", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "离职交接", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "会议纪要", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "项目周报", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "进度汇报", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "备忘录", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mou", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "异议回复", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "拒绝委婉", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "提需求", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "催进度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "反馈意见", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "英文邮件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "中英双语", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "正式措辞", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "商务英语", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "english", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "邮件结尾", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "感谢您的耐心等待", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "道歉场景", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "please find attached", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "收到,谢谢", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "催促确认", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "催款", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - } - ] - }, - { - "name": "evolution-tracker", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "字段", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ts", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "系统版本 (vx.y)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "summary", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fix_note", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "分类标签数组", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "时间跨度: yyyy-mm-dd → yyyy-mm-dd", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "指标", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "总记录数", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "时间跨度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "版本数", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "修复会话", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "修复文件总数", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "版本", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "触发源", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "柱状图", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "xx%", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "version-bump", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "████", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "出现次数", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "进化追踪", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "evolution", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "系统历史", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "变更时间线", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "版本历史", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "进化日志", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "evolution tracker", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "系统进化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "total=$(wc -l <", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "| tr -d ' ')\r\necho", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "node -e", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "grep -i", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$log", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ls -t", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "... 还有 n 条", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - } - ] - }, - { - "name": "finance-advisor", - "description": "一人公司财务顾问。当用户需要记账方案、现金流管理、税务筹划、个体户/小微企业报税、 成本核算、财务报表分析、利润率计算、报价单制作、应收应付管理, 或说 \"记账\"、\"报税\"、\"现金流\"、\"财务分析\"、\"报价\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "WebSearch" - ], - "keywords": [ - { - "keyword": "记账", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "账目", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "对账", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "流水", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "财务软件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "金蝶", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "用友", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "报税", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "税务筹划", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "增值税", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "个税", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "企业所得税", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "小规模纳税人", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "一般纳税人", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "税负率", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "现金流", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "资金周转", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "应收账款", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "应付账款", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "账期", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "回款", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "财务分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "利润率", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "毛利率", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "净利率", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "roi", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "成本核算", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "盈亏平衡", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "报价单", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "成本估算", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "利润空间", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "报价模板", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "单位", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "小计(¥)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "人天", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "xx", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**¥xx**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "季度≤30万免增值税", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "1%", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "企业所得税25%", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "个人独资企业", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "部分园区有优惠", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "预计收入", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "累计余额", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "¥xx", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "适合规模", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "推荐场景", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "<10笔/月", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "极简启动", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "个人", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "个人收支", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "个体户", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "需开票", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "小微", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "有会计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "报价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "合规要求", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "优化建议", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "一人公司财务", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "顾问", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要记", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "账方案", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "现金流管理", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "小微企业报税", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "财务报表分析", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "利润率计算", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "报价单制作", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "应收应付管理", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "template", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ] - }, - { - "name": "flutter-expert", - "description": "Flutter 跨平台专家。当用户需要 Flutter/Dart 开发、Widget 架构、状态管理 Riverpod/BLoC、Platform Channel、Flutter 性能优化、Flutter 测试,或说 \"Flutter\"、\"Dart\"、\"Widget\" 时使用此技能。", - "maturity": "imported", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "state management", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "providers", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "notifiers", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gorouter", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "building ui components", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "const optimization", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "performance", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.82 - }, - { - "keyword": "flutter", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "dart", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "widget", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "跨平台专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 0.75 - }, - { - "keyword": "状态管理", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "性能优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.21 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 0.66 - }, - { - "keyword": "riverpod", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "bloc", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "platform channel", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.06 - }, - { - "keyword": "组件", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "frontend-design", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "ai slop", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "maximalist chaos", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "retro-futuristic", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "organic/natural", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "luxury/refined", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "playful/toy-like", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "editorial/magazine", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "brutalist/raw", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "art deco/geometric", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "soft/pastel", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "industrial/utilitarian", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "performance", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 1.46 - }, - { - "keyword": "accessibility).", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "unique", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "evenly-distributed palettes.", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "noise textures", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "geometric patterns", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "layered transparencies", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "dramatic shadows", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "decorative borders", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "custom cursors", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "and grain overlays.", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "性能", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - } - ] - }, - { - "name": "frontend-expert", - "description": "前端开发专家。当用户需要 React、Vue、Next.js、Nuxt、Svelte 组件开发, 前端页面实现,状态管理(Zustand/Pinia/Redux),Server Components, Tailwind CSS 样式,TypeScript 前端,SSR/SSG,性能优化, 或说 \"前端\"、\"组件\"、\"页面开发\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash", - "mcp__playwright", - "mcp__chrome-devtools" - ], - "keywords": [ - { - "keyword": "react", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "vue", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "vue3", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "next.js", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "nuxt", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "svelte", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "solidjs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "angular", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "前端开发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "组件设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "页面开发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ui实现", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "前端页面", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "zustand", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "pinia", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "redux", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "jotai", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "状态管理", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "composition api", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "tailwind", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "css-in-js", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "样式方案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "响应式设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "前端优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "代码分割", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "懒加载", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ssr", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "ssg", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "hydration", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "typescript 前端", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tsx", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "props", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "泛型组件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "'ghost'; size: 'sm'", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "前端", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "组件", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "dialog", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "modal-title", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "关闭", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "server components", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "actions", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "compiler", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "app router", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "server actions", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "turbopack", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "script setup", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "nuxt content", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "runes", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "react 轻量状态", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "vue 官方推荐", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "服务端状态", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "原子化状态", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "首选", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "组件级隔离", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "开发构建", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "next.js 内置", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "极速编译", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "前端开发专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "组件开发", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "前端页面实现", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "样式", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "性能优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.21 - }, - { - "keyword": "tailwind css", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "typescript", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "frontend", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "genesis-engine", - "description": "创世纪引擎 - 全生命周期项目协调器。当用户需要从零开始搭建项目、 端到端自动化开发、全生命周期管理、多专家协调, 或说 \"从0开发\"、\"新项目\"、\"创世纪引擎\"、\"全流程开发\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "文件名", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "产品需求文档", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "phase 0", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "测试报告", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "phase 1", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "性能报告", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "phase 3", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "条件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "prd 已获用户批准", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "架构文档已存在", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术选型无冲突", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "构建通过", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "审计评分 >= 7/10", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "核心测试通过", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "无 p0 级安全漏洞", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "无 p0 级 bug", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "代码评审通过", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "部署验证通过", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "测试覆盖率未下降", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "创世纪引擎", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "新项目", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "全流程开发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "从0开发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "通过/approved", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "approved", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "how", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "产品负责人 — 提出愿景", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "审批文档", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "设定优先级", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "管理所有\"how\"", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "协调专家", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "保证质量门通过", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "全生命周期项", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "目协调器", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要从", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "零开始搭建项", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "端到端自动化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "全生命周期管", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "多专家协调", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - }, - { - "keyword": "deploy", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.06 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - } - ] - }, - { - "name": "git-operation-master", - "description": "Git 操作大师。当用户需要解决 Git 冲突、rebase、cherry-pick、 分支管理、版本回滚、Git 工作流设计、Git LFS、submodule, 或说 \"Git冲突\"、\"回滚\"、\"撤销commit\"、\"分支管理\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "commit", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "push", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "pull", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "clone", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "diff", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "git", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rebase", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "merge", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "cherry-pick", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stash", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tag", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "conflict", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "reset", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "revert", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "reflog", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "撤销", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "回滚", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "冲突", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "submodule", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "worktree", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lfs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gitflow", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hooks", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "分支管理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "命令", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "丢弃未暂存更改", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "git reset head ", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "修改上次提交", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "保留代码在暂存区", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "git revert ", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "git冲突", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "撤销commit", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "临时保存工作现场", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "操作大师", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要解", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "版本回滚", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "工作流设计", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "git lfs", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "rollback", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "钩子", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - } - ] - }, - { - "name": "golang-pro", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "goroutines", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "channels", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "select", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sync primitives", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "generics", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "table-driven tests", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "benchmarks", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fuzzing", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "go语言", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "golang", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "goroutine", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "%w", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "graphql-architect", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "types", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "interfaces", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "unions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "enums", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "input types", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "federation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "real-time updates", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "websocket", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "pub/sub patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rest migration", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "graphql", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "schema设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "apollo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "迁移", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - }, - { - "keyword": "接口", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "growth-hacker", - "description": "增长黑客与用户增长专家。当用户需要用户增长策略、AARRR 漏斗优化、 私域流量运营、A/B 测试、增长实验、转化率优化 CRO、裂变营销、 内容营销、渠道策略,或说 \"增长\"、\"拉新\"、\"私域\"、\"转化率\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write" - ], - "keywords": [ - { - "keyword": "用户增长", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "aarrr", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "增长漏斗", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "私域流量", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "增长黑客", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "a/b测试", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "增长实验", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cro", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "转化率优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "内容营销", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "微信生态", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "抖音", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "小红书", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "裂变", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "dau", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mau", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "留存率", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "转化率", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ltv", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cac", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "roi", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "增长", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "拉新", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "私域", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "如何让用户反复回来?", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "如何让用户主动推荐?", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "如何实现商业变现?", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[activation / retention]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[新方案]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[留存率等]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "增长黑客与用", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "户增长专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要用", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "户增长策略", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "漏斗优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "私域流量运营", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 0.66 - }, - { - "keyword": "裂变营销", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "渠道策略", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - } - ] - }, - { - "name": "gstack", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "login sessions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$b snapshot -a -o", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "or $b responsive", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "signup", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "checkout", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "800", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"https://app.example.com\"]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[\"snapshot\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"-i\"]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[\"fill\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"@e3\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"test@test.com\"]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"@e4\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"password\"]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[\"click\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"@e5\"]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"-d\"]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[\"screenshot\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"/tmp/result.png\"] ]'", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "description", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "history back", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "history forward", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "navigate to url", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "reload page", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "print current url", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "full aria tree", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "form fields as json", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "all links as \"text → href\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cleaned page text", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "click element", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "import cookies from json file", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "import cookies from comet", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "chrome", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "arc", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "brave", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "or edge (opens picker", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "auto-dismiss next dialog", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fill input", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hover element", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "press key — enter", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tab", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "escape", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "arrowup/down/left/right", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "backspace", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "delete", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "home", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "end", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pageup", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pagedown", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "or modifiers like shift+enter", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scroll element into view", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "label", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "or visible text", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "type into focused element", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "upload file(s)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "set user agent", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "set viewport size", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "--networkidle", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "### inspection", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "element attributes as json", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "--errors]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cookies", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "css ", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "dialog [--clear]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "eval ", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "is ", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "js ", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "network [--clear]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "perf", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "storage [set k v]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "command", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "diff ", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pdf [path]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "responsive [prefix]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "h] [selector", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "### snapshot", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "### meta", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "### tabs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "### server", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "be proactive again", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "turn on suggestions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$$-$(date +%s)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "gstack", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ts", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "repo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "'$(basename", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_pf", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_session_id", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill_name", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_tel_dur", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "outcome", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "used_browse", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[ -n", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && [ -x", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && b=", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "[ -z", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "$b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "ready: $b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "needs_setup", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "test@example.com", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "password123", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ".dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "document.title", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ".hero-section", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ".success-toast", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "#next-step-btn", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "#agree-checkbox", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#hero-banner", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ".upload-success", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": ".error-message", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "valid input", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "#delete-button", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "my answer", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "#rename-button", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "goto", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "],\r\n [", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "-i", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fill", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "@e3", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test@test.com", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "@e4", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "password", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "click", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "@e5", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "snapshot", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "-d", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "screenshot", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "/tmp/result.png", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ".modal", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#submit-btn", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#agree", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "#name-field", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#search-input", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#logo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ".button", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "background-color", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "value", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "color", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "welcome", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "email", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "submit", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "text → href", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "cmd", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "arg1", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - } - ] - }, - { - "name": "guardian", - "description": "统一安全守护技能。整合 freeze (目录编辑限制)、careful (破坏性命令警告)、 unfreeze (解除限制) 和 guard (全量安全模式) 四项能力为单一入口。 支持子命令: /guardian freeze [dir], /guardian unfreeze, /guardian careful, /guardian status。 触发词: \"guardian\", \"安全守", - "maturity": "stable", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "子命令", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"freeze\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"冻结\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"限制编辑\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"restrict\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "unfreeze", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "启用破坏性命令警告", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"status\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"状态\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "无参数", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "模式", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "rm -rf /var/data", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "drop table/database", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据丢失", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "git push -f origin main", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "git reset --hard", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "生产影响", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "docker system prune -a", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "解除限制", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "安全守护", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "freeze", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "careful", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "guardian", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "guard mode", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "restrict edits", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "safety mode", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lock down", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bash", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "- matcher:", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "冻结", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "限制编辑", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "restrict", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "解冻", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "unlock", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "小心模式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "safety", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "谨慎", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "状态", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$freeze_dir", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "${freeze_dir%/}/", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mkdir -p", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "```\n\n告知用户:", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "if [ -f", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ")\n rm -f", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "else\n echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "]; then\n echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fi\necho", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "统一安全守护", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "技能", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "整合", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "目录编辑限制", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "破坏性命令警", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "全量安全模式", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "四项能力为单", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "一入口", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "支持子命令", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "触发词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.35 - }, - { - "keyword": "guard", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "guardian freeze", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "dir", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "guardian unfreeze", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "guardian careful", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "guardian status", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - }, - { - "keyword": "数据库", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - } - ] - }, - { - "name": "handoff", - "description": "上下文交接技能。在上下文压力达到 CRITICAL 或用户主动调用时, 自动捕获当前会话进度、关键决策和待办事项,写入 .bookworm-progress.md, 生成下一会话的继续提示词,并清理过期 handoff 文件。 触发词: handoff, 交接, 保存进度, 上下文交接, context handoff, save progress", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Bash", - "Write", - "Edit" - ], - "keywords": [ - { - "keyword": "(非 git 仓库)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "业务锁定", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "已完成", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "待办", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "继续提示词", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "外部依赖", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "待确认项", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "需要用户输入的项", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "上下文交接技", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "在上下文压力", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "达到", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "或用户主动调", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "用时", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "自动捕获当前", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "会话进度", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "关键决策和待", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "办事项", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "写入", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "生成下一会话", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "的继续提示词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "并清理过期", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "文件", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "触发词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.35 - }, - { - "keyword": "交接", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "保存进度", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "上下文交接", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "critical", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "handoff", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "context handoff", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "save progress", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - } - ] - }, - { - "name": "impact-analyst", - "description": "影响范围分析师。当用户需要代码变更影响评估、依赖分析、调用链追踪、 爆炸半径分析、API 契约检查、副作用检查, 或说 \"影响范围\"、\"改这个有啥影响\"、\"依赖分析\"、\"谁在用这个\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "改这个有啥影响", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "被哪里引用了", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "谁在用这个函数", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "评估风险", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "影响范围", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "依赖分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "调用链", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "爆炸半径", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "检查副作用", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "依赖检查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "死代码检测", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "类型", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "谁在用这个", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "应该没事", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "影响范围分析", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要代", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "码变更影响评", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "调用链追踪", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "爆炸半径分析", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "契约检查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "副作用检查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "改这个有啥影", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "api", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - } - ] - }, - { - "name": "industry-research-cn", - "description": "中国行业深度研究与市场分析技能。当用户需要进行行业调研、市场规模测算、 竞争格局分析、投资可行性研究、竞品分析、PESTLE 分析时使用此技能。 触发词:行业研究、市场调研、竞争格局、TAM/SAM/SOM、竞品分析、 industry research、market analysis。优先引用权威资料。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "WebFetch", - "WebSearch" - ], - "keywords": [ - { - "keyword": "竞争分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "模块", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "法律法规", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "产业政策", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "标准体系", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**需交叉验证**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "分类", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "特征", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "演进", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "l10-l12", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cr5/hhi", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "波特五力", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "8. 市场机会识别", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "综合", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "来源类型", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "最高", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "政府报告", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术白皮书", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**l7-l9**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "国际机构", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "学术论文", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "媒体报道", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "` `", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "业内人士透露", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "事实", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "观点", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "标准", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "官方统计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "兼顾投资", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "创业", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "战略咨询多场景需求", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "中国行业深度", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "研究与市场分", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "析技能", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "行行业调研", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "市场规模测算", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "竞争格局分析", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "投资可行性研", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "竞品分析", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "分析时使用此", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "技能", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "触发词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.35 - }, - { - "keyword": "行业研究", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "市场调研", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "竞争格局", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "优先引用权威", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "资料", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "pestle", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "tam", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "sam", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "som", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "industry research", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "market analysis", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - } - ] - }, - { - "name": "investigate", - "description": "Systematic debugging with root cause investigation. Four phases: investigate, analyze, hypothesize, implement. Iron Law: no fixes without root cause. Use when asked to \"debug this\", \"fix this bug\", \"w", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "pattern", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "intermittent", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "timing-dependent", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "nil/null propagation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "transactions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "callbacks", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hooks", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "timeout", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "unexpected response", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "configuration drift", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "redis", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "cdn", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "browser cache", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "turbo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "debug this", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fix this bug", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "why is this broken", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ", or", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "edit", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "- matcher:", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "] && echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "|| echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "mkdir -p", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "quick fix for now", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "for now.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "this should fix it.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "systematic debugging with", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "root cause investigation.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "four phases", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "investigate", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "analyze", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "hypothesize", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "implement. iron law", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "no fixes without", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "root cause. use", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "when asked to", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "why is this", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "broken", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "investigate this error", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "root cause analysis", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "proactively suggest when", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "the user reports", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "errors", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "unexpected behavior", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "or is troubleshooting", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "why something stopped", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "working.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "缓存", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "调试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "事务", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - }, - { - "keyword": "钩子", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.02 - } - ] - }, - { - "name": "investor-review-guide", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "权重", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "tam/sam/som", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "增长趋势", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "竞争格局", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "25%", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "团队", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "盈利模式", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "单位经济", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "可扩展性", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "5%", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "维度", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "加权分", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "30%", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "产品力", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "15%", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "财务", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "投资", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "尽调", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "评估项目", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "投资评估", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "投资建议", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "风险投资", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "vc", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "商业计划", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "bp", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "bp评审", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "项目评估", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "尽职调查", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "dd", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "估值", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "估值分析", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "融资", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "融资轮次", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - } - ] - }, - { - "name": "kubernetes-specialist", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "deployments", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "statefulsets", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "daemonsets", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "jobs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cronjobs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "configuration", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pv", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pvc", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "storageclasses", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "csi drivers", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "troubleshooting", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "crd", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "operator sdk", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "controller-runtime", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "reconciliation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gitops", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "vpa", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hpa tuning", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "spot instances", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "quotas", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "right-sizing", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "k8s部署", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "helm", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "k8s排错", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.02 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "land-and-deploy", - "description": "Land and deploy workflow. Merges the PR, waits for CI and deploy, verifies production health via canary checks. Takes over after /ship creates the PR. Use when: \"merge\", \"land\", \"deploy\", \"merge and v", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "git log", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "git fetch", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "git merge", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "and gh pr create command", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "deploy", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "wait intelligently", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "verify thoroughly", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "wait for deploy", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "state", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "title", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "url", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "mergestatestatus", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mergeable", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "baserefname", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "build a readiness report", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "plan-ceo-review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "plan-design-review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "design-review-lite", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "\"refactor\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"rewrite\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"overhaul\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "head -5 if found", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "grep -i \"production.*url\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "grep -i \"platform\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "release", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "diff scope", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scope_docs only", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scope_config only", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scope_backend only", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scope_frontend (any)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mixed scopes", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "merge", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "land", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "merge and verify", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "land it", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "production", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "[ -n", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && [ -x", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && b=", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "[ -z", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "$b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "ready: $b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "needs_setup", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "the base branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "the base branch.", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "fix", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "refactor", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "rewrite", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "overhaul", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "docs:", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "- if e2e not run:", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "no_config", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "$deploy_config", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "production.*url", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "platform", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "platform:fly", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:render", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:vercel", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:netlify", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:heroku", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:railway", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "$f", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "deploy_workflow:$f", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "staging", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cd", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "%{http_code}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "custom deploy hooks", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "direct merge", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "no workflow detected", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "skipped", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "clean", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.55 - }, - { - "keyword": "none", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "land-and-deploy", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "timestamp", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pr", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "merge_sha", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "deploy_status", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ci_wait_s", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "queue_s", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "deploy_s", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "canary_s", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "total_s", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "land and deploy", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "workflow. merges the", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "waits for ci", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and deploy", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "verifies production health", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "via canary checks.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "takes over after", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ship creates the", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "pr. use when", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ship it to", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "部署", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - }, - { - "keyword": "前端", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "后端", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "重构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - }, - { - "keyword": "队列", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - }, - { - "keyword": "钩子", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.02 - } - ] - }, - { - "name": "legal-review-skill", - "description": "中国法务审查专家。合同审查、企业合规、知识产权、劳动用工、数据合规、 法律文书起草、法律风险预警。触发词:合同审查、法务审查、合规审查、 legal review、数据合规、知识产权。基于中国现行法律法规。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "WebFetch", - "WebSearch" - ], - "keywords": [ - { - "keyword": "定义", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "必须修改后方可签署", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**低风险**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "供决策参考", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "条款位置", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "风险等级", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "不构成正式法律意见", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[合同/文件名称]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[日期]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[合同类型]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "中国法务审查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "合同审查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "企业合规", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "知识产权", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "劳动用工", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "数据合规", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "法律文书起草", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "法律风险预警", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "触发词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.35 - }, - { - "keyword": "法务审查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "合规审查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "基于中国现行", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "法律法规", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "legal review", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - } - ] - }, - { - "name": "mcp-probe", - "description": "MCP 服务器连通性体检。对 .claude.json 中注册的全部 MCP (stdio + http) 发 initialize 握手包或 HEAD 请求,输出每个服务器的启动耗时、健康状态和根因诊断。 触发词: \"体检MCP\", \"测MCP\", \"MCP健康检查\", \"MCP连通性\", \"mcp-probe\", \"probe mcp\", \"MCP全量测试\", \"MCP诊断\", \"所有MCP是", - "maturity": "stable", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "类型", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "**http** (type:http", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "url)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "超过判为 timeout", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**ok**: n", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "启动耗时", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "1.7s", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "可能原因", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "缺环境变量", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stderrtail 关键字", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "err_module_not_found", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "node 18.20+ 拒绝直接 spawn .cmd", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "代理或网络问题", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "').substring(0", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "process.env", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cfg.env", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cfg.args", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stdio", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mcp-probe", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "probe mcp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "体检mcp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "测mcp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mcp健康检查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mcp连通性", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mcp全量测试", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mcp诊断", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "id", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "result", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "name", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "github", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "kind", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "ok", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "detail", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 1735,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "需要我直接修复吗?", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "jsonrpc", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "修复仅限 env 段补全", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "npx 缓存清理", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "服务器连通性", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "体检", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "中注册的全部", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "握手包或", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "请求", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "输出每个服务", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "器的启动耗时", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "健康状态和根", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "因诊断", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "触发词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.35 - }, - { - "keyword": "健康检查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "连通性", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "全量测试", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "诊断", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "所有", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "是否正常", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "mcp", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "claude.json", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "http", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "initialize", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "head", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - }, - { - "keyword": "cache", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ] - }, - { - "name": "mcp-prune", - "description": "MCP 剪枝分析工具 (Phase 1 · T1.4)。基于 mcp-usage-tracker 的使用率数据, 识别最近 N 天零调用且非 critical 的 MCP 候选,生成剪枝 plan 文件。 绝不自动修改 ~/.claude.json,用户需人工 apply。 触发词: \"mcp-prune\", \"剪枝 MCP\", \"MCP 剪枝\", \"清理 MCP\", \"精简 MCP\", \"dis", - "maturity": "stable", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "能力", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "--confirm", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "生成 plan 文件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mcp-prune", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "disable unused mcp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "prune mcp servers", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "剪枝 mcp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mcp 剪枝", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "清理 mcp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "精简 mcp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "剪枝分析工具", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "基于", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "的使用率数据", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "识别最近", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "天零调用且非", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "候选", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "生成剪枝", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "文件", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "绝不自动修改", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "用户需人工", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "触发词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.35 - }, - { - "keyword": "剪枝", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "清理", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "精简", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "mcp", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "phase", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "t1.4", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "mcp-usage-tracker", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "critical", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "plan", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "claude.json", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "apply", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - } - ] - }, - { - "name": "miniprogram-expert", - "description": "小程序开发专家。当用户需要微信小程序、支付宝小程序、抖音小程序开发, Taro、uni-app 跨端框架,云开发、云函数、分包优化、setData 优化、 登录授权、支付功能、审核上架,或说 \"小程序\"、\"Taro\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "taro", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "小程序", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lazycodeloading", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "requiredcomponents", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "微信小程序", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "支付宝小程序", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "抖音小程序", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "百度小程序", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "uni-app", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "remax", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "云开发", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "小程序登录", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "小程序支付", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "分享", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "分包", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "性能优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 1.94 - }, - { - "keyword": "启动优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "微信", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "支付宝", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "抖音", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.65 - }, - { - "keyword": "taro 3.x", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "云函数", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "云数据库", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "云存储", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "启动", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "渲染", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "包体积优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "登录授权", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "支付", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "小程序开发专", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要微", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "信小程序", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "抖音小程序开", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "跨端框架", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "分包优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "支付功能", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "审核上架", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "setdata", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "database", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - }, - { - "keyword": "组件", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - } - ] - }, - { - "name": "mobile-expert", - "description": "移动端开发专家。当用户需要 React Native、Flutter、Expo 跨平台开发, iOS Swift/SwiftUI、Android Kotlin/Jetpack Compose 原生开发, App 性能优化、应用上架 App Store/Google Play, Android 设备控制、ADB 操作、设备截图、UI 自动化测试、 应用安装/卸载/启动、模拟器操作、手势模拟、屏幕元素", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash", - "mcp__mobile" - ], - "keywords": [ - { - "keyword": "onpress", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "variant = 'primary'", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "loading = false", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "disabled = false", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "padding: 12", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "outline: { borderwidth: 2", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bordercolor: '#007aff' }", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "}; return { ...base", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "跨平台", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "app开发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "移动端", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "adb", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "设备截图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "#fff", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "home", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "profile", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "login", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "main", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "react native", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "flutter", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.65 - }, - { - "keyword": "expo", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "ionic", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "ios", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "android", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "swift", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "kotlin", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "原生开发", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "手机应用", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "app", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "应用上架", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "app store", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "google play", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "签名", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "移动性能", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "启动优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "内存优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "adb devices", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "模拟器", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "真机调试", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "mobile mcp", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "设备列表", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "应用安装", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "ui自动化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "手势模拟", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "屏幕元素", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "dart 3.5+", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "swift 5.9+", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "swiftui", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.65 - }, - { - "keyword": "uikit", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "kotlin 1.9+", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "jetpack compose", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "zustand", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "jotai", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "redux toolkit", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "riverpod", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "bloc", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "provider", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "移动端开发专", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "跨平台开发", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "性能优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.21 - }, - { - "keyword": "设备控制", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "操作", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "自动化测试", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "卸载", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "启动", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "模拟器操作", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "屏幕元素检测", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ios swift", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "android kotlin", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "debug", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - } - ] - }, - { - "name": "nextjs-developer", - "description": "Next.js 全栈专家。当用户需要 Next.js 14+ App Router、RSC 服务端组件、Server Actions、ISR/SSG/SSR 渲染策略、Middleware、Next.js 性能优化,或说 \"Next.js\"、\"App Router\"、\"Server Components\" 时使用此技能。", - "maturity": "imported", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "file-based routing", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "layouts", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "templates", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "route groups", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "server actions", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "fetch", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "caching", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "isr", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "on-demand revalidation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "next.js", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "app router", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "server components", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "全栈专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "服务端组件", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "渲染策略", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "性能优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.21 - }, - { - "keyword": "rsc", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ssg", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "ssr", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "middleware", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - }, - { - "keyword": "中间件", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - }, - { - "keyword": "模板", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - }, - { - "keyword": "路由", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "notification-system-expert", - "description": "通知系统专家。当用户需要推送通知(FCM/APNs/Web Push)、 邮件发送(SendGrid/AWS SES/Mailgun)、SMS 短信(Twilio/阿里云短信)、 企业微信/钉钉/飞书/Slack 机器人消息、In-app 站内通知、 通知模板设计、消息分级策略、通知频率控制, 或说 \"推送通知\"、\"发邮件\"、\"发短信\"、\"消息通知\"、\"Slack 机器人\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "推送通知", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fcm", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "apns", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "web push", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "service worker", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "消息推送", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "邮件发送", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sendgrid", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "aws ses", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mailgun", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "smtp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "邮件模板", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "事务邮件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "短信发送", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sms", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "twilio", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "阿里云短信", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "验证码", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "短信模板", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "slack bot", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "企业微信机器人", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "钉钉机器人", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "飞书机器人", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "discord bot", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "站内信", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "in-app 通知", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "通知中心", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "未读数", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "通知铃铛", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "通知策略", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "消息分级", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "频率控制", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "静默期", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "通知偏好", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "推送", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "通知", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "发消息", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "提醒", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "告警通知", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "发邮件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "发短信", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "消息通知", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "slack", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "slack 机器人", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "push", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "email", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "wechat_work", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "channelsender", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "message", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "text", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "blocks", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "发什么", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "怎么发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "android + web push", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "ios + macos", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "service worker + vapid", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "统一推送平台", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "rest api + smtp", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "模板引擎", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "送达率分析", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "高吞吐", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "开发者友好", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "邮件解析", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "现代化 api", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "国内短信", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "签名/模板审核", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "微信生态", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "通知系统专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要推", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "送通知", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "短信", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "企业微信", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "钉钉", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "飞书", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "机器人消息", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "站内通知", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "通知模板设计", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "消息分级策略", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "通知频率控制", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "机器人", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "in-app", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "transaction", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "template", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "performance-expert", - "description": "性能优化专家。当用户需要进行前端性能优化、后端性能调优、数据库优化、性能监控、 Core Web Vitals(LCP/FID/CLS)优化、首屏加载优化、内存优化、索引优化, 或说 \"性能优化\"、\"加载慢\"、\"响应慢\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash", - "mcp__chrome-devtools", - "mcp__playwright" - ], - "keywords": [ - { - "keyword": "加载慢", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "响应慢", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "性能优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.42 - }, - { - "keyword": "/hero.jpg", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "blur", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "image.avif", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "image/avif", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "image.webp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "image/webp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "image.jpg", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lazy", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "warm up", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sustained load", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "application/json", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "api health check", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "/api/health", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "首屏优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "lcp", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "fcp", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "core web vitals", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "api慢", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "延迟高", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "吞吐量", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "内存优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "cpu优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "带宽优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "查询慢", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据库优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "索引优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "性能调优", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "性能问题", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "性能优化专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "行前端性能优", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "后端性能调优", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "性能监控", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "首屏加载优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "fid", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "cls", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "database", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - }, - { - "keyword": "frontend", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "backend", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - }, - { - "keyword": "monitoring", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - }, - { - "keyword": "index", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "plan-ceo-review", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "fixme\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sort -rn", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "tr '/' '-'", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "effort", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "s/m/l", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"user-dashboard\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "description", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "times out", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "max iterations", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"iterations\":iterations", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"issues_found\":found", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"issues_fixed\":fixed", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"remaining\":remaining", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "what can go wrong", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "api returns 429", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "jsonparseerror", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "record not found", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "500 error ← bad recordnotfound", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "catch (exception e)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "with what arguments", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "new params", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "new file paths", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sanitized", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "empty string", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "string when integer expected", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "string exceeding max length", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "unicode edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "payment data", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "command", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "template", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "likelihood (high/med/low)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "impact (high/med/low)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "evaluate: interaction", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "how? ---------------------", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "-------- form submission", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "async operation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "list/table view", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "background job", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "methods", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "assuming happy path only", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "condition", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "empty", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "boundary values", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fewer integration", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "randomness", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "external services", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "which cases should be added", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "runtime", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "redis connections", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "exit", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "operational debt", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "testing debt", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "second", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "error", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "failure mode", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user sees?", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test=n", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "complexity", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "the current state", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "m→s", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "l→m", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mode selected", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "system audit", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "step 0", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "section 1 (arch)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "section 2 (errors)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "section 3 (security)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "section 4 (data/ux)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "section 5 (quality)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "section 6 (tests)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "section 7 (perf)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "section 8 (observ)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "section 9 (deploy)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "section 10 (future)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "section 11 (design)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "not in scope", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "what already exists", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "dream state delta", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "error/rescue registry", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "failure modes", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "todos.md updates", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "scope proposals", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ceo plan", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lake score", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "diagrams produced", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stale diagrams found", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "unresolved decisions", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "review readiness dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "runs", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "required", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "code quality", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "tests", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "new user-facing features", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "refactors", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "infra", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "codex structured", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "claude adversarial subagent", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "stale (>7 days)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "or has open issues - ceo", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "design", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\unresolved\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\critical_gaps\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\mode\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_proposed\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_accepted\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_deferred\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{scope_accepted} accepted", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\issues_found\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\initial_score\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\overall_score\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\decisions_made\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\gate\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\findings\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "why", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "findings", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "ceo review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{runs}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "independent 2nd opinion", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{findings}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\/plan-eng-review\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{status}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "design review", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "think bigger", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "expand scope", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "strategy review", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rethink this", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "the base branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "the base branch.", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "not in scope.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ship the shortcut", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "handle errors.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "engineered enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "how do we win?", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$design", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "|| echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "$handoff", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "no design doc found,", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "i'm not\r\nsure,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "discussion so far", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "minimal viable", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ideal architecture", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "must ship together", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user-dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "auth-refactor", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "reviewer concerns", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "if they ask", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "## reviewer concerns", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "plan-ceo-review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "ts", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "iterations", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "issues_found", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "issues_fixed", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "remaining", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "quality_score", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "figure it out later.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "go big", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ambitious", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cathedral", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "not found", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "swallow and continue", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "prompt/llm changes", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "do nothing", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "3a", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "3b", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "timestamp", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "unresolved", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "critical_gaps", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "mode", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "scope_proposed", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scope_accepted", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scope_deferred", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "commit", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "clean", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.55 - }, - { - "keyword": "issues_open", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "(full)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "(lite)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "don't bother me", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "skipped (global)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "eng review required", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "is it big │", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "is it too │", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "│ minimum?", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "joy to │", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "can we │", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "│ operate", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "│ it's broken?", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "inevitable", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "2026-03-16t14:30:00)", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "eng review missing", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "or has open issues", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\status\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\commit\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\findings_fixed\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "部署", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - }, - { - "keyword": "安全", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "重构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - }, - { - "keyword": "认证", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - }, - { - "keyword": "模板", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - } - ] - }, - { - "name": "plan-design-review", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "loading", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "success", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "-------- [each ui feature]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[spec]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user does", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lands on page", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "if deferred", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"3a\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ui patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "unresolved responsive behavior", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "complexity", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "system audit", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "step 0", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "pass 1 (info arch)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pass 2 (states)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pass 3 (journey)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pass 4 (ai slop)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pass 5 (design sys)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pass 6 (responsive)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pass 7 (decisions)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "not in scope", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "what already exists", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "todos.md updates", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "decisions made", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "decisions deferred", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "overall design score", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "review readiness dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "runs", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "required", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "code quality", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "tests", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "new user-facing features", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "refactors", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "infra", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "codex structured", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "claude adversarial subagent", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "stale (>7 days)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "or has open issues - ceo", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "design", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\unresolved\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\critical_gaps\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\mode\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_proposed\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_accepted\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_deferred\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{scope_accepted} accepted", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\issues_found\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\initial_score\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\overall_score\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\decisions_made\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\gate\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\findings\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "why", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "findings", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "ceo review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{runs}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "independent 2nd opinion", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{findings}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\/plan-eng-review\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{status}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "design review", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "the base branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "the base branch.", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "no items found.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "clean, modern ui", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stacked on mobile.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "looked at the design", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "i feel for the user", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "would i notice?", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "this feels wrong", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "(rams).", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "snow white", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "), jony ive (", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "this feels off", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "2. gap:", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "good enough, move on", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "constraint worship", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cards with icons", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hero section", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stacked on mobile", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "3a", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "3b", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "plan-design-review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "timestamp", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "initial_score", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "overall_score", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "unresolved", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "decisions_made", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "commit", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "clean", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.55 - }, - { - "keyword": "issues_open", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "(full)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "(lite)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "don't bother me", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "skipped (global)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "eng review required", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "current iso 8601 datetime", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "eng review missing", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "or has open issues", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\status\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\commit\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\findings_fixed\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "重构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - } - ] - }, - { - "name": "plan-eng-review", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "tr '/' '-'", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "review readiness dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "runs", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "required", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "code quality", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "tests", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "new user-facing features", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "refactors", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "infra", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "codex structured", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "claude adversarial subagent", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "stale (>7 days)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "or has open issues - ceo", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "design", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\unresolved\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\critical_gaps\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\mode\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_proposed\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_accepted\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_deferred\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{scope_accepted} accepted", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\issues_found\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\initial_score\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\overall_score\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\decisions_made\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\gate\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\findings\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "why", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "findings", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "ceo review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{runs}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "independent 2nd opinion", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{findings}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\/plan-eng-review\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{status}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "design review", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": ", or", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "engineered enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "reviewed the code", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "caught the landmine.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "boring by default.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "systems over heroes.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$design", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "|| echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "no design doc found,", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "high", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "prompt/llm changes", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "do nothing", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "3a", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "3b", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "not in scope", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "what already exists", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "plan-eng-review", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "timestamp", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "unresolved", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "critical_gaps", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "issues_found", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "mode", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "commit", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "clean", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.55 - }, - { - "keyword": "issues_open", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "unresolved decisions", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "(full)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "(lite)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "don't bother me", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "skipped (global)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "eng review required", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "current iso 8601 datetime", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "full_review / scope_reduced", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "eng review missing", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "or has open issues", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\status\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\commit\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\findings_fixed\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "重构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - } - ] - }, - { - "name": "planning-with-files", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "bash", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "location", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "your project directory", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "file", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "phases", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "progress", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "decisions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "throughout session", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "attempt", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "created default config", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "situation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "don't read", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "viewed image/pdf", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "screenshots don't persist", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "read plan/findings", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "error occurred", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "recover state", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "answer source", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "remaining phases", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "goal statement in plan", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "do instead", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "create task_plan.md file", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "re-read plan before decisions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "log errors to plan file", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "store large content in files", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "create plan file first", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "track attempts", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mutate approach", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "create files in your project", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "write|edit", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sd=\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "2>/dev/null || sh \\", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "2.16.1", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$(pwd)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.02 - } - ] - }, - { - "name": "pricing-strategist", - "description": "定价策略专家。当用户需要 SaaS 定价模型、产品定价策略、价格梯度设计、 竞品定价分析、价值定价法、免费增值模式设计、提价策略, 或说 \"定价\"、\"怎么收费\"、\"定价模型\"、\"价格策略\"、\"提价\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "WebSearch" - ], - "keywords": [ - { - "keyword": "定价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "定价模型", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "定价策略", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "怎么收费", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "收费模式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "订阅制", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "按量计费", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "免费增值", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "freemium", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "阶梯定价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "席位定价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "价值定价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "成本加成", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "竞品定价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "心理定价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "捆绑定价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "提价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "价格敏感度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "支付意愿", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "价格弹性", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "wtp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "竞品价格对标", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "人天报价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "项目报价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "按效果付费", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "保底+分成", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "free", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "enterprise", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "✅ (有限)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "免费版", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "参考点", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "50人免费", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "协作功能差异化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "免费", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "存储+高级功能", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "个人免费", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai+协作人数", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "3项目免费", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "项目数+标注功能", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "价格策略", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "诱饵效应", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "最受欢迎", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "省¥1200", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "8折", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "开始使用", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "免费试用x天", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "已有1000+团队选择", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "获客引流,降低试用门槛", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "大客户定制,按需报价", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "定价策略专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "产品定价策略", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "价格梯度设计", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "竞品定价分析", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "价值定价法", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "免费增值模式", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "提价策略", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "saas", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - } - ] - }, - { - "name": "product-manager-expert", - "description": "产品经理专家。当用户需要 PRD 产品需求文档、需求分析、竞品分析、用户研究、 产品规划、路线图、用户故事、MVP 定义、RICE/KANO 优先级排序、迭代计划、 产品规格文档、功能规格说明 FSD、技术规格书 TSD、接口规格 API Spec、验收标准, 或说 \"产品\"、\"PRD\"、\"需求\"、\"规格\"、\"规格文档\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write" - ], - "keywords": [ - { - "keyword": "prd", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "产品需求", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "需求文档", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "用户故事", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "竞品分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "需求分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "市场分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "产品规划", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "路线图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "版本规划", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "迭代计划", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rice", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "kano", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "moscow", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "优先级", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "产品规格", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "功能规格", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术规格", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "api规格", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "验收标准", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "类型", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "产品", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "需求", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "规格", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "规格文档", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "产品经理专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "产品需求文档", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "用户研究", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "定义", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "优先级排序", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "产品规格文档", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "功能规格说明", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "技术规格书", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "接口规格", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "mvp", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "fsd", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "tsd", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "api spec", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "interface", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "project-audit-expert", - "description": "项目全栈审计专家。当用户需要项目代码审查、漏洞修补、功能测试、功能优化、逻辑验证、 全面审计、上线前检查、质量把关、技术债务清理, 或说 \"审计项目\"、\"全面检查\"、\"上线前审查\"、\"帮我审一下\" 时使用此技能。 整合代码审查、安全漏洞扫描、功能测试、性能优化、逻辑验证五大能力于一体。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash", - "Task", - "WebFetch" - ], - "keywords": [ - { - "keyword": "项目审计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "全面审查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "上线前检查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "上线检查清单", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "全栈审计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "质量把关", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "帮我审一下", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "系统自检", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自检", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自审计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bookworm自检", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bookworm审计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "漏洞修复", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "安全修补", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "安全审计", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "漏洞扫描", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "功能测试", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "集成测试", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "回归测试", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "逻辑验证", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "业务逻辑检查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据流验证", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "高频问题", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "p1", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "json.parse 无运行时验证", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "typescript", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "db 字段修改未持久化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "python", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "工具函数多处重复定义", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "关键检查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "p0", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "jwt 签名验证逻辑", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sql 注入(字符串拼接)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "搜索 password=", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "secret=", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**技术栈**: [xxx] ## 总体评估", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "等级", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "xx/100", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "a/b/c/d", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "功能完整性", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**综合评分**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**x**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "文件", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "级别", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "多次", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "except exception 吞掉所有错误", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "重复工具函数(dry 违反)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "alembic 迁移 enum 重复创建", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "模式", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "\"帮我审一下这个文件\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "标准审计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "全项目,phase 1-5", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "大型项目", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "全面审计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "审计项目", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "全面检查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "上线前审查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "帮我审一下这个文件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "审计一下后端 api", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "文件:行号", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[影响范围]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[代码示例]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[确认步骤]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "项目全栈审计", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要项", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "目代码审查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "漏洞修补", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "功能优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "技术债务清理", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "整合代码审查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "安全漏洞扫描", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "性能优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.21 - }, - { - "keyword": "逻辑验证五大", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "能力于一体", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - }, - { - "keyword": "backend", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - }, - { - "keyword": "migration", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - } - ] - }, - { - "name": "project-coordinator", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "项目管理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "项目计划", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "排期", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "wbs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "工作分解", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "任务分解", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sprint", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scrum", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "看板", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "kanban", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "迭代", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "站会", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "回顾会", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "里程碑", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "进度跟踪", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "甘特图", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "燃尽图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "进度报告", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "风险管理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "风险登记", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "依赖管理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "阻塞", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "延期", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "飞书项目", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "notion", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "linear", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "jira", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "github projects", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "m1", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "prd 签字确认", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "原型验收", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mm-dd", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "m4", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "生产环境稳定运行", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "风险", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "等级", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "高/中/低", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[措施]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[一句话描述]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "yyyy-mm-dd → yyyy-mm-dd", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[预算/人力/技术]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - } - ] - }, - { - "name": "prompt-optimizer", - "description": "提示词优化器。当用户输入\"提示词:(内容)\"或\"优化提示词:(内容)\"格式时自动触发,将用户的原始提示词转化为符合Claude官方规范的高质量结构化提示词。支持各类任务场景的提示词优化,包括文本生成、代码编写、数据分析、创意写作等。触发词包括:提示词:、优化提示词:、prompt:、改进提示词、帮我优化这个prompt。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "WebFetch", - "WebSearch" - ], - "keywords": [ - { - "keyword": "说明", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "用具体指令替代模糊描述", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "使用 xml 标签分隔不同部分", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "复杂任务提供 3-5 个示例", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "鼓励分步骤推理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "说\"要做什么\"而非\"不要做什么\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "提示词:(内容)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "优化提示词:(内容)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "帮我优化/改进这个提示词", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "为什么", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "要做什么", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "不要做什么", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "识别是生成", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "编码", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "翻译", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "总结还是其他类型", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "提示词优化器", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户输入", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "提示词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "内容", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "优化提示词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "格式时自动触", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "将用户的原始", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "提示词转化为", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "符合", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "官方规范的高", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "质量结构化提", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "示词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "支持各类任务", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "场景的提示词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "包括文本生成", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "代码编写", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "数据分析", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "创意写作等", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "触发词包括", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "改进提示词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "帮我优化这个", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "claude", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "prompt", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - } - ] - }, - { - "name": "python-pro", - "description": "Python 深度专家。当用户需要 Python 3.11+ 高级特性、类型提示 typing、async/await 异步编程、dataclass、mypy 配置、pytest 高级用法、生产级 Python 模式,或说 \"Python\"、\"类型提示\"、\"异步Python\" 时使用此技能。", - "maturity": "imported", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "type hints", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mypy", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "generics", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "protocol", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "standard library", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pytest", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "fixtures", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mocking", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "parametrize", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "类型提示", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "python", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "异步python", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "高级特性", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "异步编程", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.02 - }, - { - "keyword": "高级用法", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "生产级", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "模式", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "异步", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "typing", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "async", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "await", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "dataclass", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "config", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "qa", - "description": "Systematically QA test a web application and fix bugs found. Runs QA testing, then iteratively fixes bugs in source code, committing each fix atomically and re-verifying. Use when asked to \"qa\", \"QA\",", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "parameter", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "(auto-detect or required)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tier", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": ".gstack/qa-reports/", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scope", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "sign in to user@example.com", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "runtime", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "minitest + fixtures + capybara", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "node.js", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "jest + cypress", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "pytest + pytest-cov", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "go", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "phpunit + mockery", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "elixir", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "integration", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "smoke", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "spec/", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "sort -rn", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "category", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "console", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "links", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "visual", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "functional", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ux", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "performance", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.82 - }, - { - "keyword": "content", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "accessibility", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "只报告", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "不修复", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test this site", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "find bugs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test and fix", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "report-only", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "just report", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "qa report only", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "qa", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fix what's broken", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "does this work?", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test but don't fix", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "the base branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "the base branch.", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "不要修", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "只测试不修", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "报告模式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "report only", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "don't fix", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "qa-only", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[ -n", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && [ -x", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && b=", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "[ -z", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "$b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "ready: $b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "needs_setup", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "runtime:ruby", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:node", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:python", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:go", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:rust", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:php", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:elixir", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "rails", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "framework:rails", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "next", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "framework:nextjs", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "bootstrap_declined", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "`\n- `", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ci:github", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "found app on :3000", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "found app on :4000", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "found app on :8080", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user@example.com", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[redacted]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "top 3 things to fix", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "date", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "yyyy-mm-dd", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "url", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "healthscore", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "issues", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "id", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "issue-001", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "title", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "severity", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "categoryscores", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "deferred.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "deferred", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "improve", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "verified", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "it renders", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "it doesn't throw", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "re-test confirms the fix works", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "no new errors introduced", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "needs auth state", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "external service)", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "systematically qa test", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "a web application", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and fix bugs", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "found. runs qa", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "testing", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "then iteratively fixes", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "bugs in source", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "code", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "committing each fix", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "atomically and re-verifying.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "use when asked", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "fix what", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "s broken", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "proactively suggest when", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "the user says", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "a feature is", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ready for testing", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "or asks", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "does this work", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "three tiers", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "quick", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "critical", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "high only", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "standard", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "medium", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.43 - }, - { - "keyword": "exhaustive", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "cosmetic", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "produces before", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "after health scores", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "fix evidence", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and a ship-readiness", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "summary. supports report-only", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "mode", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "when user says", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "test but don", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "t fix", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "auto-switch to report-only", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "find and document", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "bugs without fixing", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "qa-only is deprecated", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and redirects here.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "性能", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - }, - { - "keyword": "认证", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - } - ] - }, - { - "name": "regex-shell-wizard", - "description": "正则与Shell脚本专家。当用户需要正则表达式编写、Shell/Bash 脚本、 Awk/Sed 文本处理、批量文件操作、日志分析、Cron 定时任务, 或说 \"正则\"、\"Shell脚本\"、\"批量替换\"、\"日志分析\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "正则表达式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "regex", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "匹配规则", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "提取文本", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "正则替换", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "shell脚本", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bash", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "zsh", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "命令行", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动化脚本", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "powershell", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "awk", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sed", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "grep", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "find", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "xargs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vim", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cron", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "批量重命名", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "日志分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "文本处理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "批量替换", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[12]\\d", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "正则", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "天书", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "正则与", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "脚本专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要正", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "则表达式编写", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "脚本", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "批量文件操作", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "定时任务", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "shell", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "log", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - } - ] - }, - { - "name": "retro", - "description": "Weekly engineering retrospective. Analyzes commit history, work patterns, and code quality metrics with persistent history and trend tracking. Team-aware: breaks down per-person contributions with pra", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "%an", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "%ai", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "grep -v '^$'", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sort -n", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "grep -v node_modules", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "grep -e '\\.(test", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": " if todos.md doesn't exist", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "show the skill that flagged it", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "the branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": " if moments exist", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "app/services/", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "insertions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "deletions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "time patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "weekly retro", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "what did we ship", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "2026-03-11t00:00:00", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "2026-03-11", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "n hours ago", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "you", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "your", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "%h|%an|%ae|%ai|%s", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "commit:%h|%an", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "%at|%an|%ai|%s", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "%s", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "author:%an", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test(qa):", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test(design):", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test: coverage", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "you (name)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hook_fire", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ship fast, fix fast", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "your peak hours...", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "your biggest ship...", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "great work", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai-assisted commits", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "%ad", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "%y-%m-%d", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "date", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "2026-03-08", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "window", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "7d", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "metrics", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "commits", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "contributors", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "prs_merged", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "net_loc", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test_loc", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test_ratio", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "active_days", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sessions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "deep_sessions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "avg_session_minutes", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "loc_per_session_hour", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "feat_pct", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fix_pct", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "peak_hour", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai_assisted_commits", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "authors", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "garry tan", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "top_area", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "browse/", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "alice", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "version_range", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "1.16.0.0", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "1.16.1.0", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "streak_days", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tweetable", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": {", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": ": 3,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 1,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 2,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test_health", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "total_test_files", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 5,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "backlog", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "total_open", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "p0_p1", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "p2", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "2026-03-04t00:00:00", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "great job!", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "not", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "areas of focus", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "and commit patterns", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "1 specific", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "not criticism. examples:", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "analyzes commit history", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "work patterns", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and code quality", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "metrics with persistent", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "history and trend", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "tracking. team-aware", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "breaks down per-person", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "contributions with praise", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and growth areas.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "use when asked", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "what did we", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ship", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "engineering retrospective", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "proactively suggest at", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "the end of", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "a work week", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "or sprint.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "认证", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - }, - { - "keyword": "钩子", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - } - ] - }, - { - "name": "review", - "description": "Pre-landing PR review. Analyzes diff against the base branch for SQL safety, LLM trust boundary violations, conditional side effects, and other structural issues. Use when asked to \"review this PR\", \"", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "tail -1", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "the base branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "review this pr", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "code review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "pre-landing review", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "check my diff", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "the base branch.", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "do not flag", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "design review", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "design-review-lite", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "timestamp", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "findings", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "auto_fixed", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "commit", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "clean", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.55 - }, - { - "keyword": "issues_found", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "fix.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "this pattern is safe", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tests cover this", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "likely handled", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "probably tested", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "this looks fine", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "codex_available", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "codex_not_available", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "run all passes", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "paranoid review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "full adversarial", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "do all 4 passes", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "thorough review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "medium tier", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "large tier", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "xhigh", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "$tmperr_adv", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "auth", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "login", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "unauthorized", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "api key", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "- **timeout:**", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "adversarial-review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "source", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "tier", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "medium", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "codex", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "claude", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "$tmperr", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "large", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "gate", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "both", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "pass", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "fail", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "informational", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "classify as ask", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "pre-landing pr review.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "analyzes diff against", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "for sql safety", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "llm trust boundary", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "violations", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "conditional side effects", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and other structural", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "issues. use when", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "asked to", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "proactively suggest when", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "the user is", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "about to merge", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "or land code", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "changes.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "认证", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - } - ] - }, - { - "name": "reviewer-expert", - "description": "代码审查与质量专家。当用户需要代码审查、Code Review、代码质量评估、安全审计、 代码改进建议、PR Review、技术债务分析、代码规范制定、重构建议、 圈复杂度分析、代码坏味道识别, 或说 \"审查代码\"、\"帮我 review\"、\"检查代码\"、\"代码质量\"、\"技术债务\"、\"重构\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "code review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "代码审查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "代码评审", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pr review", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mr 审查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "代码质量", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "代码健康度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "质量评分", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "代码改进", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "代码规范", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "编码规范", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "命名规范", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "注释规范", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术债务", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "代码坏味道", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "重构建议", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "遗留代码", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "代码复杂度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "圈复杂度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "认知复杂度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "权重", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "逻辑正确", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "边界处理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "并发安全", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "20%", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "可维护性", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "算法复杂度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "n+1 查询", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "缓存使用", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "11-20 中等", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "审查代码", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "检查代码", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "重构", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.55 - }, - { - "keyword": "帮我 review", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "x/10", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "代码审查与质", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "量专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要代", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "码审查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "代码质量评估", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "安全审计", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "代码改进建议", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "技术债务分析", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "代码规范制定", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "圈复杂度分析", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "代码坏味道识", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "帮我", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "review", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - }, - { - "keyword": "cache", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - }, - { - "keyword": "refactor", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "rust-engineer", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "lifetimes", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "borrowing", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "smart pointers", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pin", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "async/await", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tokio", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "futures", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "streams", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "concurrency", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rust", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "所有权", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "借用检查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "sales-consultant", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "销售", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "销售策略", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "销售漏斗", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "成交率", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "客单价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "复购率", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "crm", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "客户跟进", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "客户开发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "客户关系", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "客户分层", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rfm", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "谈单", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "报价谈判", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "议价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "异议处理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "成交技巧", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "签约", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "获客渠道", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "转介绍", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "冷启动", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "陌拜", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "线索", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "商机", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "飞书crm", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "纷享销客", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "企业微信", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "销售自动化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "时间节点", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "目标", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "d0", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "确认需求匹配度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "d1-d2", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "展示专业度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "d3-d4", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "处理异议", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "d5-d7", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "推进商务", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "d7-d14", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "促成决策", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "d14+", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "保持联系", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "回应策略", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "制造紧迫", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"已有方案了\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "赋能推动", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "工具", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "核心优势", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "免费", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "自动化工作流", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "b2b", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "太贵了", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "| 制造紧迫 |", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "| 差异对比 |", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "| 分期/roi |", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "| 赋能推动 |", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - } - ] - }, - { - "name": "security-expert", - "description": "应用安全专家。当用户需要进行安全编码、OWASP 防护、认证授权设计(JWT/OAuth)、 加密实现、密钥管理、漏洞响应、XSS/SQL注入防护、渗透测试, 或说 \"安全\"、\"认证\"、\"加密\" 时使用此技能。精通安全最佳实践和攻防技术。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "安全", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "认证", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.21 - }, - { - "keyword": "加密", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user_id", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "jwt_secret", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hs256", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "exp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "iat", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user:read", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user:write", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user:delete", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "admin", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "] =", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "x-frame-options", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "deny", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "x-xss-protection", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "1; mode=block", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "安全编码", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "代码审计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "漏洞修复", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "owasp", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "xss", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "sql注入", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "csrf", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "注入攻击", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "授权", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "jwt", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "oauth", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "rbac", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "权限", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "密码", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "哈希", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "密钥", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "证书", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "渗透测试", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "安全扫描", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "sast", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "dast", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "应用安全专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "行安全编码", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "防护", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "认证授权设计", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "加密实现", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "密钥管理", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "漏洞响应", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "注入防护", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "精通安全最佳", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "实践和攻防技", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "sql", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - }, - { - "keyword": "encryption", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "setup-browser-cookies", - "description": "Import cookies from your real browser (Comet, Chrome, Arc, Brave, Edge) into the headless browse session. Opens an interactive picker UI where you select which cookie domains to import. Use before QA ", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "import cookies", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "login to the site", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "[ -n", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && [ -x", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && b=", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "[ -z", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "$b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "ready: $b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "needs_setup", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "allow", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "always allow", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "import cookies from", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "your real browser", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "comet", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "chrome", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "arc", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "brave", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "edge", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "into the headless", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "browse session. opens", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "an interactive picker", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ui where you", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "select which cookie", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "domains to import.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "use before qa", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "testing authenticated pages.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "use when asked", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "login to the", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "site", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "authenticate the browser", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "认证", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - } - ] - }, - { - "name": "setup-deploy", - "description": "Configure deployment settings for /land-and-deploy. Detects your deploy platform (Fly.io, Render, Vercel, Netlify, Heroku, GitHub Actions, custom), production URL, health check endpoints, and deploy s", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "release", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "render", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vercel", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "netlify", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "cli", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "/health", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fly status", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "head -5", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "setup deploy", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "configure deployment", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no_config", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:fly", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:render", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:vercel", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:netlify", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:heroku", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:railway", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "$f", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "deploy_workflow:$f", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "bin", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "project_type:cli", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "project_type:library", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "^app", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\\(.*\\)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "deploy wait", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "auto-deploy on push", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "http health check", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "none", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "poll production url", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "{health-check-url}", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "%{http_code}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "unreachable", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "command_failed", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "configure deployment settings", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "land-and-deploy. detects your", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "deploy platform", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "fly.io", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "heroku", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "github actions", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "custom", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "production url", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "health check endpoints", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and deploy status", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "commands. writes the", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "so all future", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "deploys are automatic.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "use when", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "set up land-and-deploy", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "how do i", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "deploy with gstack", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "add deploy config", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "部署", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.02 - } - ] - }, - { - "name": "ship", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "review readiness dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "runs", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "required", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "code quality", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "tests", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "new user-facing features", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "refactors", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "infra", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "codex structured", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "claude adversarial subagent", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "stale (>7 days)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "or has open issues - ceo", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "design", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "runtime", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "minitest + fixtures + capybara", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "node.js", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "jest + cypress", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "pytest + pytest-cov", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "go", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "phpunit + mockery", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "elixir", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "integration", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "smoke", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "spec/", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "sort -rn", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "*_writer_service.rb", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "*_scorer.rb", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "*_classifier_service.rb", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "*writing*.rb", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "*prompt*.rb", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test/evals/support/*.rb", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fast (haiku)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "~$0.07/run", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "default dev", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bin/test-lane --eval", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "~72s (baseline)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "grep -v node_modules", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "!important", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"timestamp\":\"timestamp\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "\"status\":\"status\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "\"findings\":n", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "\"auto_fixed\":m", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "n = total findings", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "m = auto-fixed count", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "severity", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "problem", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "k asked (j fixed", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "filter", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "classify", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gh fails", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "api returns an error", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "y fixed", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "b) acknowledge and ship anyway", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "grep -oe '[0-9]+'", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tail -1", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "ship", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "deploy", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "push to main", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "create a pr", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "merge and push", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "the base branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "the base branch.", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "(full)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "(lite)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "don't bother me", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "clean", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.55 - }, - { - "keyword": "skipped (global)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "clear", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "ship-review-override", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "no_override", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "timestamp", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "decision", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user_choice", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ship_anyway", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "not_relevant", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "runtime:ruby", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:node", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:python", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:go", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:rust", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:php", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:elixir", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "rails", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "framework:rails", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "next", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "framework:nextjs", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "bootstrap_declined", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "`\r\n- `", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "ci:github", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "it renders", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "it doesn't throw", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "design review", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "design-review-lite", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "findings", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "auto_fixed", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "commit", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "issues_found", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "codex_available", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "codex_not_available", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "run all passes", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "paranoid review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "full adversarial", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "do all 4 passes", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "thorough review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "medium tier", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "large tier", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "xhigh", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "$tmperr_adv", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "auth", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "login", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "unauthorized", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "api key", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "- **timeout:**", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "adversarial-review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "source", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "tier", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "medium", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "codex", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "claude", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "$tmperr", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "large", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "gate", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "both", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "pass", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "fail", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "informational", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "should work now", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "i'm confident", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": ", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "no issues found.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ready to push?", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "create pr?", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "eng review missing", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "or has open issues", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "classify as ask", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "部署", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "重构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - }, - { - "keyword": "认证", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - } - ] - }, - { - "name": "social-media-manager", - "description": "社交媒体运营专家。当用户需要社交媒体策略、内容日历、新媒体运营、 微信公众号、微博、知乎、B站、小红书、抖音运营、KOL 合作、 社区运营、内容规划,或说 \"社交媒体\"、\"新媒体\"、\"内容运营\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write" - ], - "keywords": [ - { - "keyword": "社交媒体", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "新媒体运营", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "微信", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "微博", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "知乎", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "b站", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "小红书", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "抖音", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "公众号", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "内容日历", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "内容规划", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "社区运营", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "用户互动", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "帖子撰写", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "内容创作", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "品牌人设", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "话题标签", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "增加粉丝", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "提高互动率", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "kol合作", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "koc", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "内容形式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "微信公众号", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "泛人群", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "深度回答", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "年轻化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "女性为主", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "短视频", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "话题传播", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "新媒体", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "内容运营", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "潜规则", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "6:00 pm", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "回答问题", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "#技术 #[领域]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "7:00 pm", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "\"...\"", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "5:30 pm", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "图文长文", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "社交媒体运营", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要社", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "交媒体策略", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "抖音运营", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "合作", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "kol", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - } - ] - }, - { - "name": "sre-expert", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "histogram_quantile(0.95", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "负责人", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sre", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "slo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "事故响应", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "postmortem", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "slo_name", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "target", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": f", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "healthy", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "warning", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "critical", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "breached", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "5..", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "错误预算消耗过快", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "p95 延迟超过 300ms", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "high", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "medium", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "low", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "detected", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "acknowledged", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "investigating", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mitigating", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "resolved", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sli", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "sla", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "错误预算", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "监控", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "告警", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "日志", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 1.28 - }, - { - "keyword": "追踪", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "prometheus", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "grafana", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "容量规划", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "on-call", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "值班", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "可用性", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "故障复盘", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "mttr", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "发布", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "金丝雀", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "蓝绿部署", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "回滚", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "{title}", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "{date}", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "{severity}", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "{duration}", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "deploy", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - }, - { - "keyword": "monitoring", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - }, - { - "keyword": "log", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - }, - { - "keyword": "rollback", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "swift-expert", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "building views", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "state management", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "modifiers", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "protocols", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "arc", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "weak/unowned", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "performance optimization", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "swift", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "swiftui", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "ios原生", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "性能", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "tech-lead-mentor", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "团队管理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "带人", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "okr", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "绩效", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "1on1", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "招聘", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "晋升", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "述职", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "职业规划", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术影响力", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "演讲", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "研发流程", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "code review规范", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术债", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "onboarding", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "模拟面试", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "面试题", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "简历优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "系统设计面试", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "面试", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "为什么", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "办公室政治", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "一刀切", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "tech-writer-expert", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "技术文档", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "readme", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "api文档", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "用户手册", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "api 文档", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "api docs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "technical documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "写文档", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "文档编写", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "撰写文档", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "write documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "technical writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "write docs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "设计文档", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "架构文档", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "开发指南", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "developer guide", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user manual", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "design document", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "类型", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "name", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "用户名", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "string", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "### 响应 \\\\\\json { \"code\": 0", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"data\": { \"id\": 1", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"name\": \"john\" } } \\\\\\ ### 错误码", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "code", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "data", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "id", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "john", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "/api/users", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "post", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "content-type: application/json", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.06 - } - ] - }, - { - "name": "technical-seo-expert", - "description": "技术 SEO 专家。当用户需要搜索引擎优化、百度 SEO、谷歌 SEO、 sitemap 配置、robots.txt、结构化数据 JSON-LD、meta 标签优化、 SSR/SSG 渲染策略、关键词策略、网站收录, 或说 \"SEO\"、\"搜索优化\"、\"百度收录\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "seo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "搜索引擎优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "百度seo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "谷歌seo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "关键词策略", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "收录", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sitemap.xml", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "robots.txt", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "canonical", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "meta标签", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "百度站长平台", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "预渲染", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "动态渲染", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "网站速度优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "结构化数据", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "json-ld", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rich snippets", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "schema.org", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "搜索优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "百度收录", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "黑帽seo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要搜", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "索引擎优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "百度", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "谷歌", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.02 - }, - { - "keyword": "标签优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "渲染策略", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "网站收录", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "sitemap", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "meta", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ssr", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "ssg", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "index", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - }, - { - "keyword": "config", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ] - }, - { - "name": "terraform-engineer", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "creating modules", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "inputs/outputs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "versioning", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "providers", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "terraform plan", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "terratest", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "policy as code", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "terraform", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "iac", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "基础设施即代码", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "tester-expert", - "description": "测试专家。当用户需要编写单元测试、集成测试、E2E 端到端测试、TDD 测试驱动开发、 Jest/Vitest/Playwright/Cypress/pytest 测试框架、Mock/Stub、测试覆盖率, 或说 \"写测试\"、\"测试用例\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash", - "mcp__playwright", - "mcp__chrome-devtools", - "mcp__selenium" - ], - "keywords": [ - { - "keyword": "写测试", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "测试用例", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "email", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "password", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "submit", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "welcome-message", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "error-message", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "单元测试", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "集成测试", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "e2e测试", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "端到端测试", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "unit test", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "integration test", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "write tests", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "test case", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "test coverage", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "testing", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "jest", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "vitest", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "playwright", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "cypress", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "pytest", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "tdd", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "bdd", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "测试覆盖率", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "test suite", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "test runner", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "component test", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "snapshot test", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "regression test", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "测试驱动", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "mock", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "stub", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "覆盖率", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "代码覆盖", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "测试方案", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "testing library", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "test driven", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "assertion", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "测试专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要编", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "写单元测试", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试驱动开发", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试框架", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "e2e", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "组件", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "typescript-pro", - "description": "TypeScript 深度专家。当用户需要 TypeScript 高级类型系统、泛型、条件类型、tRPC 全栈类型安全、tsconfig 优化、类型守卫、判别联合类型,或说 \"TypeScript\"、\"类型安全\"、\"泛型\" 时使用此技能。", - "maturity": "imported", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "generics", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "conditional types", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mapped types", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "template literals", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "utility types", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tsconfig options", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "strict mode", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "project references", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "泛型", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "类型安全", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "typescript", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "高级类型系统", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "条件类型", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "全栈类型安全", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "类型守卫", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "判别联合类型", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "trpc", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "tsconfig", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - }, - { - "keyword": "模板", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.02 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "ui-ux-pro-max", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "category", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "ux", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "touch & interaction", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "high", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "typography & color", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "medium", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "product", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "charts & data", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "srcset", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "20", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "30", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "need", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "chart recommendations", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "typography", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "landing structure", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "react", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "nextjs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vue", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "svelte", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "swiftui", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "react-native", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "flutter", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "shadcn", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "example keywords", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "glassmorphism", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "minimalism", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "dark mode", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "brutalism", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "font pairings", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "google fonts", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "color", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "hero", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hero-centric", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "testimonial", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pricing", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "social-proof", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "chart types", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "library recommendations", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "waterfall", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bundle", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "suspense", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "memo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rerender", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cache", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "web interface guidelines", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "prompt", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "### available stacks", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "professional", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "colors", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "effects", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"z-index\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "don't", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**no emoji icons**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**consistent icon sizing**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "### interaction & cursor", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**cursor pointer**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rule", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**text contrast light**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "use gray-400 or lighter", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**content padding**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mix different container widths", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "project name", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "--design-system -p", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "checkout", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "glassmorphism dark", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "real-time dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "elegant luxury", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hero social-proof", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "elegant luxury serif", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fintech crypto", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "animation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "z-index", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "accessibility", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "saas", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "e-commerce", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "portfolio", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "landing page", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "etc.", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "minimal", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "playful", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "elegant", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "healthcare", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "fintech", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "gaming", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "education", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "next.js", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.65 - }, - { - "keyword": "or default to html-tailwind", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "容器", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - }, - { - "keyword": "缓存", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "索引", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "接口", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - } - ] - }, - { - "name": "ultimate-code-expert", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "维度", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "采纳: 修复", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "性能", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.42 - }, - { - "keyword": "双重审查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "终极代码", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "高质量模式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "写+自审", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "快速模式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "终极代码专家", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "自动优化模式", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "高质量代码", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "生产级代码", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "核心代码", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - } - ] - }, - { - "name": "ux-researcher", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "用户研究", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "用户访谈", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "可用性测试", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "焦点小组", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "问卷调查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "用户旅程地图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "痛点分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "a/b测试分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "用户画像", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "persona", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "访谈脚本", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "调研报告", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[虚构]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "年龄", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "职业", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "城市级别", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "家庭状况", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[微信", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "抖音等]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "典型的数字化行为", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "\"...\"", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - } - ] - }, - { - "name": "vue-expert", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "ref", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "reactive", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "computed", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "watch", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lifecycle", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "state management", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "ssr", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "file-based routing", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "usefetch", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fastify", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hydration", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "mobile & hybrid", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vite config", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sourcemaps", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "optimization", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bundling", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vue3", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "composition api", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "pinia", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "路由", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.02 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "websocket-engineer", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "websocket handshake", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "frames", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ping/pong", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "close codes", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "authentication", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "authorization", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rate limiting", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cors", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "websocket", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "实时通信", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "socket.io", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "认证", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "workflow-automation-expert", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "zapier", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "n8n", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "make", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ifttt", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "power automate", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tray.io", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动化工作流", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "工作流编排", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "流程自动化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rpa", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "低代码集成", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "无代码", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "webhook 链", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "事件驱动", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "触发器", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "条件分支", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据映射", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "字段映射", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "跨平台同步", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据管道", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "定时触发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "消息转发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动通知", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动化", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "工作流", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动同步", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动推送", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动转发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "列出窗口", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "读屏幕文字", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "点击按钮", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "点击菜单", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动滚动", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "桌面截图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "扫描元素", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "键盘快捷键", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "鼠标拖拽", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ocr", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "uiautomation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ocr_window", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "click_element", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "list_windows", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scan_elements", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "auto_scroll", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "杀进程", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "注册表", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "剪贴板", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "系统通知", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "打开应用", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "文件操作", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "powershell", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "registry", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "process", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "clipboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "notification", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "看到屏幕上", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "找到那个按钮", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "视觉识别", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "视觉点击", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "看截图点击", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vision_click", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vision_locate", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vision_get", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vision_type", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "操控excel", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "操控word", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "发邮件outlook", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "com对象", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "写入单元格", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "createobject", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vba", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ole", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "activex", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "/webhook/receive", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "x-signature", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "签名验证失败", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "ok", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "nodes", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "name", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "webhook 触发器", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "type", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": {", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "数据转换", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "n8n-nodes-base.code", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "parameters", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "jscode", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "发送通知", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "n8n-nodes-base.slack", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "channel", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "#orders", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "text", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "zap 设计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "multi-step zap", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "filter/path", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "formatter", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "自托管工作流", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "自定义节点", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "code node (js/python)", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "scenario 设计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "router", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "iterator", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "aggregator", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "flow 设计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "connector", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "expression", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "钩子", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "zero-defect-guardian", - "description": "零缺陷守门员。当用户需要安全重构、Pinning Test 钉子测试、零缺陷修改、 防退化保护、遗留代码安全修改、回归测试保护, 或说 \"零缺陷\"、\"安全修改\"、\"防退化\"、\"无损重构\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "零缺陷", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "不能出错", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "防退化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "安全模式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "绝对安全", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "无损重构", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "遗留代码修改", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "重构保护", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "保守修改", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "防御性编程", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "回归保护", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pinning test", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "安全修改", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pinning test (钉子测试)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "当前行为", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "当前的样子", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "修复", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "零缺陷守门员", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要安", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "全重构", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "钉子测试", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "零缺陷修改", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "防退化保护", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "遗留代码安全", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "修改", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "回归测试保护", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - }, - { - "keyword": "refactor", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - } - }, - { - "name": "canvas-ui-designer", - "description": "高保真 UI/UX 设计智能体。当用户需要专业界面设计、设计系统、组件规范、 响应式布局、配色方案、字体系统,或将线框图转化为高保真设计时使用。 擅长输出开发者可直接实现的生产级设计规范。 用户说: \"帮我设计一个仪表盘界面\"、\"设计一套卡片组件\"、\"做个设计系统\"、 \"把线框图转成高保真设计\" → 自动激活 canvas-ui-designer Agent 用户说: \"评估交付质量\", \"质量优势分析\", \"竞争对比\", \"交付体系评估\" → 自动激活 delivery-quality-assessor Agent 能力范围: - 路由精度评估 (准确率、首次命中率、纠正率) - 专家技能覆盖度分析 (", - "maturity": "agent", - "type": "agent", - "isComposable": false, - "allowedTools": [ - "\"Read", - "Glob", - "Grep", - "Bash", - "WebFetch", - "WebSearch\"" - ], - "keywords": [ - { - "keyword": "维度", - "weight": 1, - "tier": "core" - }, - { - "keyword": "github copilot", - "weight": 1, - "tier": "core" - }, - { - "keyword": "路由决策", - "weight": 1, - "tier": "core" - }, - { - "keyword": "专家知识", - "weight": 1, - "tier": "core" - }, - { - "keyword": "安全层", - "weight": 1, - "tier": "core" - }, - { - "keyword": "质量门控", - "weight": 1, - "tier": "core" - }, - { - "keyword": "自进化", - "weight": 1, - "tier": "core" - }, - { - "keyword": "可观测性", - "weight": 1, - "tier": "core" - }, - { - "keyword": "维度热力图", - "weight": 1, - "tier": "core" - }, - { - "keyword": "评估交付质量", - "weight": 1, - "tier": "core" - }, - { - "keyword": "质量优势分析", - "weight": 1, - "tier": "core" - }, - { - "keyword": "竞争对比", - "weight": 1, - "tier": "core" - }, - { - "keyword": "交付体系评估", - "weight": 1, - "tier": "core" - }, - { - "keyword": "node -e", - "weight": 1, - "tier": "core" - }, - { - "keyword": "σ > 15 = 波动)", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "交付质量评估", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "智能体", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "评估系统作为", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "代码项目创建", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "平台的质量保", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "障体系", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "输出竞争优势", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "分析和量化效", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "率提升报告", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "用户说", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "自动激活", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "能力范围", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "路由精度评估", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "准确率", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "首次命中率", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "纠正率", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "专家技能覆盖", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "度分析", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "领域分布", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "技能定义质量", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "协作", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "质量门控体系", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "审查", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "宪法", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "交付自审", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "安全基线评估", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "纵深防御层数", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "覆盖", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "凭证保护", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "自进化系统评", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "学习闭环完整", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "进化速度", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "收敛趋势", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "可观测性评估", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "日志体系", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "贯穿", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "审计追溯", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "竞争对比分析", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "原生", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "效率量化", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "每会话节省时", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "减少纠正次数", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "安全返工避免", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "example", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "composable", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "pretooluse", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "posttooluse", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "fail-close", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "traceid", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "claude code", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "cursor", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "copilot", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "log", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "routing", - "weight": 0.5, - "tier": "alias" - } - ] - }, - { - "name": "desktop-automator", - "description": "桌面自动化编排智能体。协调 orbination (UI 控制) + askui-vision (视觉识别) + mcp-com-server (COM 对象) 三大 MCP 服务,实现 Windows 桌面的自动化操作。 Context: User wants to automate a desktop workflow. user: \"帮我自动打开 Excel,填入数据并", - "maturity": "agent", - "type": "agent", - "isComposable": false, - "allowedTools": [ - "\"Read", - "Glob", - "Grep", - "Bash", - "mcp__orbination__*", - "mcp__askui-vision__*", - "mcp__mcp-com-server__*\"" - ], - "keywords": [ - { - "keyword": "工具", - "weight": 1, - "tier": "core" - }, - { - "keyword": "首选观察手段", - "weight": 1, - "tier": "core" - }, - { - "keyword": "get_window_details", - "weight": 1, - "tier": "core" - }, - { - "keyword": "按文本点击", - "weight": 1, - "tier": "core" - }, - { - "keyword": "run_sequence", - "weight": 1, - "tier": "core" - }, - { - "keyword": "视觉描述交互", - "weight": 1, - "tier": "core" - }, - { - "keyword": "最后手段", - "weight": 1, - "tier": "core" - }, - { - "keyword": "assistant:", - "weight": 1, - "tier": "core" - }, - { - "keyword": "先看再做", - "weight": 1, - "tier": "core" - }, - { - "keyword": "excel.application", - "weight": 1, - "tier": "core" - }, - { - "keyword": "保存", - "weight": 1, - "tier": "core" - }, - { - "keyword": "ui 元素控制", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "窗口管理", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "键鼠操作", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "ocr 文字识别", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "视觉识别定位", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "list_windows", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "focus_window", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "ocr_window", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "click_element", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "interact", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "click_menu_item", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "keyboard_type", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "keyboard_hotkey", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "mouse_click", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "screenshot_to_file", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "paste_text", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "scan_desktop", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "vision_act", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "vision_click", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "vision_get", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "vision_locate", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "vision_screenshot", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "vision_type", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "createobject", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "invokemethod", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "getproperty", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "setproperty", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "disposeobject", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "gettypeinformation", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "read", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "write", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "bash", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "glob", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "grep", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "桌面自动化编", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "排智能体", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "协调", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "控制", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "视觉识别", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "对象", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "三大", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "服务", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "桌面的自动化", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "操作", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "帮我自动打开", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "填入数据并保", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "点击屏幕上的", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "确认", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "按钮", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "然后截图保存", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "从浏览器复制", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "表格数据", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "粘贴到", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "文档中", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "orbination", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "askui-vision", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "mcp-com-server", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "com", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "mcp", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "windows", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "example", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "context", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "user wants to", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "automate a desktop", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "workflow. user", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "excel", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "assistant", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "ll use the", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "desktop-automator agent to", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "orchestrate excel via", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "ui automation.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "commentary", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "desktop automation requiring", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "com object control", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "for excel", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "ui element interaction.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "mcp-com-server for data", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "manipulation and orbination", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "for ui navigation.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "user needs visual", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "element interaction on", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "desktop. user", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "desktop-automator to locate", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and click the", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "button via vision", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "then capture a", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "screenshot.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "vision-based ui interaction.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "the desktop-automator uses", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "askui-vision for visual", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "element detection and", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "orbination for precise", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "click actions and", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "screenshot capture.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "automate a multi-app", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "word", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "window focus management", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "clipboard operations", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and keyboard shortcuts", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "across browser and", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "word.", - "weight": 0.5, - "tier": "extended" - } - ] - }, - { - "name": "explore", - "description": "轻量只读代码库侦察智能体。快速回答\"这个文件在哪\"\"这个函数怎么用\"\"项目结构是什么\"等问题。 不修改任何文件,只做搜索和阅读。适合作为研究型任务的首选低成本 Agent。 Context: User needs to find a specific file or function. user: \"API 路由定义在哪个文件里?\" assistant: \"I'll use ", - "maturity": "agent", - "type": "agent", - "isComposable": false, - "allowedTools": [ - "\"Read", - "Glob", - "Grep", - "Bash", - "WebFetch", - "WebSearch\"" - ], - "keywords": [ - { - "keyword": "这个文件在哪", - "weight": 1, - "tier": "core" - }, - { - "keyword": "这个函数怎么用", - "weight": 1, - "tier": "core" - }, - { - "keyword": "项目结构是什么", - "weight": 1, - "tier": "core" - }, - { - "keyword": "assistant:", - "weight": 1, - "tier": "core" - }, - { - "keyword": "x 在哪?", - "weight": 1, - "tier": "core" - }, - { - "keyword": "谁用了 x?", - "weight": 1, - "tier": "core" - }, - { - "keyword": "项目结构?", - "weight": 1, - "tier": "core" - }, - { - "keyword": "改 x 影响什么?", - "weight": 1, - "tier": "core" - }, - { - "keyword": "绝对或相对路径", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "file.ts:42", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "一句话总结发现", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "读取文件内容", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "按模式搜索文件", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "按内容搜索文件", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "只读命令 (ls", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "tree", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "git log", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "git blame", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "wc 等)", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "轻量只读代码", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "库侦察智能体", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "快速回答", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "这个函数怎么", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "项目结构是什", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "等问题", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "不修改任何文", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "只做搜索和阅", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "适合作为研究", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "型任务的首选", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "低成本", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "路由定义在哪", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "个文件里", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "这个项目的目", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "录结构是什么", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "样的", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "谁在调用", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "函数", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "agent", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "example", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "context", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "user needs to", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "find a specific", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "file or function.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "user", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "api", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "assistant", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "ll use the", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "explore agent to", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "quickly locate the", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "api route definitions.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "commentary", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "simple codebase navigation", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "task. the explore", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "agent uses glob", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and grep to", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "find the file", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "quickly without loading", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "a full-capability agent.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "user wants to", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "understand code structure.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "map the project", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "structure.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "project structure exploration.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "the explore agent", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "uses ls", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "glob", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and read to", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "build a quick", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "overview without any", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "write capability.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "trace how a", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "function is used.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "processalert", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "trace all callers", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "of processalert.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "call chain tracing.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "uses grep to", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "find all references", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "across the codebase", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "efficiently with the", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "haiku model.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "routing", - "weight": 0.5, - "tier": "alias" - } - ] - }, - { - "name": "full-stack-builder", - "description": "全栈实现复合 Agent。当 orchestrator 需要跨前后端的完整功能实现时派遣此 Agent。 融合前端 (React/Next.js)、后端 (FastAPI/Go/Node)、数据库 (PostgreSQL/SQLite) 三层能力, 端到端实现功能模块,输出可运行的完整代码。 Examples: Context: Orchestrator assigns a", - "maturity": "agent", - "type": "agent", - "isComposable": false, - "allowedTools": [ - "\"Read", - "Edit", - "Write", - "Glob", - "Grep", - "Bash", - "WebFetch", - "WebSearch\"" - ], - "keywords": [ - { - "keyword": "存储", - "weight": 1, - "tier": "core" - }, - { - "keyword": "约束", - "weight": 1, - "tier": "core" - }, - { - "keyword": "索引", - "weight": 1, - "tier": "core" - }, - { - "keyword": "后端 service", - "weight": 1, - "tier": "core" - }, - { - "keyword": "业务逻辑", - "weight": 1, - "tier": "core" - }, - { - "keyword": "状态管理", - "weight": 1, - "tier": "core" - }, - { - "keyword": "api 调用", - "weight": 1, - "tier": "core" - }, - { - "keyword": "前端 component", - "weight": 1, - "tier": "core" - }, - { - "keyword": "命名约定", - "weight": 1, - "tier": "core" - }, - { - "keyword": "data", - "weight": 1, - "tier": "core" - }, - { - "keyword": "说明", - "weight": 1, - "tier": "core" - }, - { - "keyword": "app/models/alert.py", - "weight": 1, - "tier": "core" - }, - { - "keyword": "request/response schema", - "weight": 1, - "tier": "core" - }, - { - "keyword": "新增", - "weight": 1, - "tier": "core" - }, - { - "keyword": "app/api/v1/alerts.py", - "weight": 1, - "tier": "core" - }, - { - "keyword": "zustand 状态管理", - "weight": 1, - "tier": "core" - }, - { - "keyword": "method", - "weight": 1, - "tier": "core" - }, - { - "keyword": "/api/v1/alerts", - "weight": 1, - "tier": "core" - }, - { - "keyword": "post", - "weight": 1, - "tier": "core" - }, - { - "keyword": "详情", - "weight": 1, - "tier": "core" - }, - { - "keyword": "/api/v1/alerts/:id", - "weight": 1, - "tier": "core" - }, - { - "keyword": "delete", - "weight": 1, - "tier": "core" - }, - { - "keyword": "assistant:", - "weight": 1, - "tier": "core" - }, - { - "keyword": "创建和修改源代码", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "运行构建", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "迁移", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "依赖安装命令", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "全栈实现复合", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "需要跨前后端", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "的完整功能实", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "现时派遣此", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "融合前端", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "后端", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "数据库", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "三层能力", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "端到端实现功", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "能模块", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "输出可运行的", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "完整代码", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "实现用户反馈", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "的提交表单", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "数据库存储", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "给告警模块加", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "接口和管理页", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "加一个实时消", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "息通知功能", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "前端", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "agent", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "orchestrator", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "react", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "next.js", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "fastapi", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "node", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "postgresql", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "sqlite", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "examples", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "example", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "context", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "orchestrator assigns a", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "task. user", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "api", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "assistant", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "ll use the", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "the complete feedback", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "feature across all", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "layers.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "commentary", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "database schema", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "api endpoint", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and frontend form.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "the full-stack-builder will", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "create all layers", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "with proper typing", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and error handling.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "orchestrator needs a", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "crud module built", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "end-to-end. user", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "crud", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "ll engage the", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "full-stack-builder to create", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "the alert crud", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "from database model", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "to admin ui.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "crud feature spanning", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "model", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "service", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "routes", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and frontend pages.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "the full-stack-builder ensures", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "type consistency across", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "all layers.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "implementing a feature", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "that requires coordinated", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "frontend-backend changes. user", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "websocket", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "toast", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "the websocket server", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and client notification", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "system.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "real-time feature requiring", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "server-side websocket handler", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and client-side subscription.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "the full-stack-builder handles", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "both ends with", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "a shared message", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "type contract.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "index", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "migration", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "interface", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "组件", - "weight": 0.5, - "tier": "alias" - } - ] - }, - { - "name": "module-integrator", - "description": "模块集成智能体。将已开发完成但未接入运行时的模块集成到主路由管线或钩子管线中。 确保使用 safeRequire + fail-open 模式,不影响现有逻辑。 用户说: \"集成模块\", \"接入管线\", \"模块还没接上\", \"接入路由\" → 自动激活 module-integrator Agent 能力范围: - 路由管线集成 (route-inter", - "maturity": "agent", - "type": "agent", - "isComposable": false, - "allowedTools": [ - "\"Read", - "Edit", - "Write", - "Glob", - "Grep", - "Bash\"" - ], - "keywords": [ - { - "keyword": "集成模块", - "weight": 1, - "tier": "core" - }, - { - "keyword": "接入管线", - "weight": 1, - "tier": "core" - }, - { - "keyword": "模块还没接上", - "weight": 1, - "tier": "core" - }, - { - "keyword": "接入路由", - "weight": 1, - "tier": "core" - }, - { - "keyword": "模块集成智能", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "将已开发完成", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "但未接入运行", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "时的模块集成", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "到主路由管线", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "或钩子管线中", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "确保使用", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "模式", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "不影响现有逻", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "用户说", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "自动激活", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "能力范围", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "路由管线集成", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "注入新信号模", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "钩子管线集成", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "注入调度器", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "反馈闭环接入", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "注入学习模块", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "健康快照集成", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "注入分析模块", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "工具注册", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "命令行可直接", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "运行的独立模", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "集成原则", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "模块缺失不阻", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "断主流程", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "幂等补丁标记", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "防止重复注入", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "最小侵入", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "不改变现有逻", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "只在合适位置", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "添加调用", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "下文件通过补", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "丁脚本修改", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "saferequire", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "fail-open", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "example", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "module-integrator agent", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "route-interceptor.js", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "post-edit-dispatcher.js", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "route-auditor.js", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "daily-health-snapshot.js", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "cli", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "try-catch", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "hooks", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "routing", - "weight": 0.5, - "tier": "alias" - } - ] - }, - { - "name": "orchestrator", - "description": "任务编排与多智能体调度中枢。当用户给出高层目标、需要多步骤协作完成的复杂任务时使用此 Agent。 自动将目标拆解为子任务,分配给最合适的专业技能/Agent,协调执行并汇总结果。 Examples: Context: User wants to build a complete feature from scratch. user: \"给 ColdChain 项目加一个设", - "maturity": "agent", - "type": "agent", - "isComposable": false, - "allowedTools": [ - "\"Agent", - "Read", - "Glob", - "Grep", - "Bash", - "WebFetch", - "WebSearch\"" - ], - "keywords": [ - { - "keyword": "production-reviewer (最终防线)", - "weight": 1, - "tier": "core" - }, - { - "keyword": "模型", - "weight": 1, - "tier": "core" - }, - { - "keyword": "四维深度审查 + 交叉验证", - "weight": 1, - "tier": "core" - }, - { - "keyword": "状态", - "weight": 1, - "tier": "core" - }, - { - "keyword": "architect", - "weight": 1, - "tier": "core" - }, - { - "keyword": "前端页面", - "weight": 1, - "tier": "core" - }, - { - "keyword": "alertlist", - "weight": 1, - "tier": "core" - }, - { - "keyword": "alertdetail 组件", - "weight": 1, - "tier": "core" - }, - { - "keyword": "tester-expert", - "weight": 1, - "tier": "core" - }, - { - "keyword": "任务类型", - "weight": 1, - "tier": "core" - }, - { - "keyword": "说明", - "weight": 1, - "tier": "core" - }, - { - "keyword": "**explore** (haiku)", - "weight": 1, - "tier": "core" - }, - { - "keyword": "**复合: 调研分析**", - "weight": 1, - "tier": "core" - }, - { - "keyword": "深度代码库探索 + 技术调研 + 影响分析", - "weight": 1, - "tier": "core" - }, - { - "keyword": "**quality-gate**", - "weight": 1, - "tier": "core" - }, - { - "keyword": "需求分析 / prd", - "weight": 1, - "tier": "core" - }, - { - "keyword": "单独需求分析时", - "weight": 1, - "tier": "core" - }, - { - "keyword": "architect-expert", - "weight": 1, - "tier": "core" - }, - { - "keyword": "general-purpose", - "weight": 1, - "tier": "core" - }, - { - "keyword": "rest api 开发", - "weight": 1, - "tier": "core" - }, - { - "keyword": "纯后端任务", - "weight": 1, - "tier": "core" - }, - { - "keyword": "frontend-expert", - "weight": 1, - "tier": "core" - }, - { - "keyword": "canvas-ui-designer", - "weight": 1, - "tier": "core" - }, - { - "keyword": "单元/集成测试", - "weight": 1, - "tier": "core" - }, - { - "keyword": "测试生成", - "weight": 1, - "tier": "core" - }, - { - "keyword": "reviewer-expert", - "weight": 1, - "tier": "core" - }, - { - "keyword": "pre-deploy-checker", - "weight": 1, - "tier": "core" - }, - { - "keyword": "文档编写", - "weight": 1, - "tier": "core" - }, - { - "keyword": "文档生成", - "weight": 1, - "tier": "core" - }, - { - "keyword": "debugger-expert", - "weight": 1, - "tier": "core" - }, - { - "keyword": "research-analyst", - "weight": 1, - "tier": "core" - }, - { - "keyword": "影响分析", - "weight": 1, - "tier": "core" - }, - { - "keyword": "变更影响评估", - "weight": 1, - "tier": "core" - }, - { - "keyword": "— (skill)", - "weight": 1, - "tier": "core" - }, - { - "keyword": "任务特征", - "weight": 1, - "tier": "core" - }, - { - "keyword": "opus", - "weight": 1, - "tier": "core" - }, - { - "keyword": "代码实现", - "weight": 1, - "tier": "core" - }, - { - "keyword": "测试", - "weight": 1, - "tier": "core" - }, - { - "keyword": "审查", - "weight": 1, - "tier": "core" - }, - { - "keyword": "快速低成本", - "weight": 1, - "tier": "core" - }, - { - "keyword": "验收标准", - "weight": 1, - "tier": "core" - }, - { - "keyword": "向用户提问澄清", - "weight": 1, - "tier": "core" - }, - { - "keyword": "implement", - "weight": 1, - "tier": "core" - }, - { - "keyword": "修复失败用例", - "weight": 1, - "tier": "core" - }, - { - "keyword": "0 blocker", - "weight": 1, - "tier": "core" - }, - { - "keyword": "warning 已评估", - "weight": 1, - "tier": "core" - }, - { - "keyword": "deploy", - "weight": 1, - "tier": "core" - }, - { - "keyword": "assistant:", - "weight": 1, - "tier": "core" - }, - { - "keyword": "加一个告警功能", - "weight": 1, - "tier": "core" - }, - { - "keyword": "实现设备告警 rest api", - "weight": 1, - "tier": "core" - }, - { - "keyword": ",\n activeform:", - "weight": 1, - "tier": "core" - }, - { - "keyword": ",\n dependencies: [", - "weight": 1, - "tier": "core" - }, - { - "keyword": "backend-builder", - "weight": 1, - "tier": "core" - }, - { - "keyword": "sonnet", - "weight": 1, - "tier": "core" - }, - { - "keyword": "生产级评审", - "weight": 1, - "tier": "core" - }, - { - "keyword": "上线前审查", - "weight": 1, - "tier": "core" - }, - { - "keyword": "系统自检", - "weight": 1, - "tier": "core" - }, - { - "keyword": "修复漂移", - "weight": 1, - "tier": "core" - }, - { - "keyword": "安全加固", - "weight": 1, - "tier": "core" - }, - { - "keyword": "不需要测试", - "weight": 1, - "tier": "core" - }, - { - "keyword": "给出明确", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "读取和搜索代码", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "创建和修改文件", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "执行命令(构建", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "部署)", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "团队管理和协调", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "任务跟踪", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "需要用户决策时询问", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "复杂任务先规划再执行", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "任务编排与多", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "智能体调度中", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "当用户给出高", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "层目标", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "需要多步骤协", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "作完成的复杂", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "任务时使用此", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "自动将目标拆", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "解为子任务", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "分配给最合适", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "的专业技能", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "协调执行并汇", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "总结果", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "项目加一个设", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "备告警通知功", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "全面审查一下", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "项目", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "找出问题并修", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "从零搭建一个", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "用户反馈系统", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "要有前端表单", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "后端", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "数据库", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "和管理后台", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "闲鱼助手的", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "回复质量不行", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "帮我优化整个", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "链路", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "agent", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "examples", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "example", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "context", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "user wants to", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "build a complete", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "feature from scratch.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "user", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "coldchain", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "assistant", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "ll use the", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "orchestrator agent to", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "decompose this into", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "research", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "design", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "implementation", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "testing", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and deployment subtasks.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "commentary", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "multi-step feature request", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "spanning backend api", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "frontend ui", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "notification service", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and tests. the", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "orchestrator will create", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "a task plan", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "spawn specialized agents", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and coordinate the", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "full workflow.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "user wants a", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "full project audit", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and improvement cycle.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "graphrag", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "ll engage the", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "orchestrator to coordinate", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "parallel audit streams", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "code review", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and then execute", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "fixes.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "complex audit requiring", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "multiple specialist agents", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "working in parallel.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "the orchestrator will", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "spawn review", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and test agents", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "simultaneously", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "then aggregate findings.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "user describes a", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "complete product requirement.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "api", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "orchestrator to plan", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "the full-stack implementation", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "schema design", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "frontend", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "admin panel", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "tests", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "deployment checklist.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "end-to-end feature spanning", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "multiple technology layers.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "the orchestrator creates", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "a dependency-aware task", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "graph and executes", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "in the correct", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "order.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "improve an existing", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "system with multiple", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "concerns. user", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "orchestrator to analyze", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "the full ai", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "reply pipeline", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "prompt engineering", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "llm routing", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "quality checking", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "fallback logic", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and coordinate improvements", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "across all layers.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "analysis of multiple", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "services and coordinated", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "changes. the orchestrator", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "will research first", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "then plan", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "then implement changes", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "in dependency order.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "database", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "性能", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "调试", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "component", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "路由", - "weight": 0.5, - "tier": "alias" - } - ] - }, - { - "name": "pre-deploy-checker", - "description": "Use this agent when the user needs a comprehensive pre-deployment safety check before releasing code to staging or production environments. This agent verifies build integrity, environment configurati", - "maturity": "agent", - "type": "agent", - "isComposable": false, - "allowedTools": [ - "\"Read", - "Glob", - "Grep", - "Bash", - "WebFetch", - "WebSearch\"" - ], - "keywords": [ - { - "keyword": "构建命令", - "weight": 1, - "tier": "core" - }, - { - "keyword": "无编译错误", - "weight": 1, - "tier": "core" - }, - { - "keyword": "无 typescript 警告", - "weight": 1, - "tier": "core" - }, - { - "keyword": "构建产物大小合理", - "weight": 1, - "tier": "core" - }, - { - "keyword": "go build ./...", - "weight": 1, - "tier": "core" - }, - { - "keyword": "rust", - "weight": 1, - "tier": "core" - }, - { - "keyword": "语法检查通过", - "weight": 1, - "tier": "core" - }, - { - "keyword": "import 无缺失", - "weight": 1, - "tier": "core" - }, - { - "keyword": "审计命令", - "weight": 1, - "tier": "core" - }, - { - "keyword": "high / critical 级别漏洞", - "weight": 1, - "tier": "core" - }, - { - "keyword": "npm audit", - "weight": 1, - "tier": "core" - }, - { - "keyword": "pip", - "weight": 1, - "tier": "core" - }, - { - "keyword": "已知漏洞", - "weight": 1, - "tier": "core" - }, - { - "keyword": "cargo audit", - "weight": 1, - "tier": "core" - }, - { - "keyword": "类别", - "weight": 1, - "tier": "core" - }, - { - "keyword": "详情", - "weight": 1, - "tier": "core" - }, - { - "keyword": "环境配置", - "weight": 1, - "tier": "core" - }, - { - "keyword": "缺少 redis_url", - "weight": 1, - "tier": "core" - }, - { - "keyword": "pass/fail", - "weight": 1, - "tier": "core" - }, - { - "keyword": "api 兼容性", - "weight": 1, - "tier": "core" - }, - { - "keyword": "无破坏性变更", - "weight": 1, - "tier": "core" - }, - { - "keyword": "pass/fail/skip", - "weight": 1, - "tier": "core" - }, - { - "keyword": "基础设施", - "weight": 1, - "tier": "core" - }, - { - "keyword": "端口可达", - "weight": 1, - "tier": "core" - }, - { - "keyword": "部署前帮我检查一下", - "weight": 1, - "tier": "core" - }, - { - "keyword": "assistant:", - "weight": 1, - "tier": "core" - }, - { - "keyword": "可以安全部署", - "weight": 1, - "tier": "core" - }, - { - "keyword": "密码", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "token", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "连接串", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "确认 .env", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": ".env.local", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "生产环境必要配置项检查", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "生产环境绝对禁止", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "读取配置文件", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "迁移脚本", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "dockerfile 等", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "搜索硬编码密钥", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "配置模式", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "api 变更", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "audit", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "vet", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "use this agent", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "when the user", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "needs a comprehensive", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "pre-deployment safety check", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "before releasing code", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "to staging or", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "production environments. this", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "agent verifies build", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "integrity", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "environment configuration", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "dependency security", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "database migration safety", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "api compatibility", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "docker health", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "ssl certificates", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and infrastructure readiness.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "it produces a", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "structured ready", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "blocked deployment report.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "数据库", - "weight": 0.5, - "tier": "alias" - } - ] - }, - { - "name": "production-reviewer", - "description": "生产级多维度评审智能体。对系统进行全面的架构、安全、性能、质量四维审查, 输出结构化评审报告,含 Blocker/Warning/Info 分级和量化评分。 用户说: \"生产级评审\", \"全面审查\", \"评审系统架构\", \"代码审查\" → 自动激活 production-reviewer Agent 能力范围: - 架构一致性审查 (模块耦合、接口契约", - "maturity": "agent", - "type": "agent", - "isComposable": false, - "allowedTools": [ - "\"Read", - "Glob", - "Grep", - "Bash", - "WebFetch", - "WebSearch\"" - ], - "keywords": [ - { - "keyword": "等级", - "weight": 1, - "tier": "core" - }, - { - "keyword": "95-100", - "weight": 1, - "tier": "core" - }, - { - "keyword": "良好,有改进空间", - "weight": 1, - "tier": "core" - }, - { - "keyword": "80-84", - "weight": 1, - "tier": "core" - }, - { - "keyword": "性能: xx/100", - "weight": 1, - "tier": "core" - }, - { - "keyword": "生产级评审", - "weight": 1, - "tier": "core" - }, - { - "keyword": "全面审查", - "weight": 1, - "tier": "core" - }, - { - "keyword": "评审系统架构", - "weight": 1, - "tier": "core" - }, - { - "keyword": "代码审查", - "weight": 1, - "tier": "core" - }, - { - "keyword": "生产级多维度", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "评审智能体", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "对系统进行全", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "面的架构", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "安全", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "性能", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "质量四维审查", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "输出结构化评", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "审报告", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "分级和量化评", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "用户说", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "自动激活", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "能力范围", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "架构一致性审", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "模块耦合", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "接口契约", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "集成完整性", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "策略", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "安全纵深验证", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "层防御逐层", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "映射", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "凭证管理", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "性能管线分析", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "各环节延迟估", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "缓存有效性", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "热点", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "代码质量检查", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "命名规范", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "边界处理", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "风险", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "逻辑正确性", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "交叉验证", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "多维度独立发", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "现的问题交叉", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "确认", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "提升置信度", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "量化评分", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "各维度", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "加权综合评分", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "输出格式", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "三级分类", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "每项含文件路", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "行号", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "问题描述", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "修复建议", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "最终", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "综合评分", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "是否达到生产", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "级标准", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "blocker", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "warning", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "info", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "example", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "production-reviewer agent", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "fail-open", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "close", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "pass", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "fail", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "owasp", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "redos", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "cache", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "interface", - "weight": 0.5, - "tier": "alias" - } - ] - }, - { - "name": "quality-gate", - "description": "质量门控复合 Agent。当 orchestrator 需要对实现结果进行全面质量验证时派遣此 Agent。 融合代码审查、安全扫描、测试验证、性能评估四大维度,一次性完成全面质量检查, 输出 PASS / BLOCKED 的门控结论。 Examples: Context: Orchestrator wants to verify implementation qualit", - "maturity": "agent", - "type": "agent", - "isComposable": false, - "allowedTools": [ - "\"Read", - "Glob", - "Grep", - "Bash", - "WebFetch", - "WebSearch\"" - ], - "keywords": [ - { - "keyword": "判断标准", - "weight": 1, - "tier": "core" - }, - { - "keyword": "聚焦变更文件,快速扫描", - "weight": 1, - "tier": "core" - }, - { - "keyword": "4-10 个文件,100-500 行", - "weight": 1, - "tier": "core" - }, - { - "keyword": "**大**", - "weight": 1, - "tier": "core" - }, - { - "keyword": "硬编码密钥", - "weight": 1, - "tier": "core" - }, - { - "keyword": "发现", - "weight": 1, - "tier": "core" - }, - { - "keyword": "pass/warn/block", - "weight": 1, - "tier": "core" - }, - { - "keyword": "n 项", - "weight": 1, - "tier": "core" - }, - { - "keyword": "d3 测试验证", - "weight": 1, - "tier": "core" - }, - { - "keyword": "[测试通过率]", - "weight": 1, - "tier": "core" - }, - { - "keyword": "code-reviewer", - "weight": 1, - "tier": "core" - }, - { - "keyword": "**定位**", - "weight": 1, - "tier": "core" - }, - { - "keyword": "开发过程中 / pr 创建后", - "weight": 1, - "tier": "core" - }, - { - "keyword": "四维快速扫描,产出二元判定", - "weight": 1, - "tier": "core" - }, - { - "keyword": "**输出**", - "weight": 1, - "tier": "core" - }, - { - "keyword": "代码质量", - "weight": 1, - "tier": "core" - }, - { - "keyword": "架构合理性", - "weight": 1, - "tier": "core" - }, - { - "keyword": "长期可维护性", - "weight": 1, - "tier": "core" - }, - { - "keyword": "快速检查一下这个修改有没有问题", - "weight": 1, - "tier": "core" - }, - { - "keyword": "命名语义化", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "函数职责单一", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "嵌套层级 ≤ 3", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "dry 原则", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "合理抽象", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "清晰的模块边界", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "无 any 滥用", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "类型断言最小化", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "泛型约束完整", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "无空 catch", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "错误信息明确", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "异常传播链完整", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "输入验证", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "分页边界", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "sql 参数化", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "xss 转义", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "命令注入防护", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "端点权限校验", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "jwt 配置正确", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "cors 合理", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "无硬编码密钥", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "日志不泄露敏感信息", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "传输加密", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "无已知 cve 高危漏洞", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "核心业务逻辑 > 80%", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "n+1 查询", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "缺失索引", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "大表全表扫描", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "无上限缓存", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "闭包泄漏", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "缺少 memo", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "大列表无虚拟化", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "重复请求", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "缺失缓存", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "过大 payload", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "读取和搜索代码", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "测试运行", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "lint", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "type-check", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "audit)", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "质量门控复合", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "需要对实现结", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "果进行全面质", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "量验证时派遣", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "融合代码审查", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "安全扫描", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "测试验证", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "性能评估四大", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "维度", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "一次性完成全", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "面质量检查", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "的门控结论", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "检查一下刚实", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "现的告警功能", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "质量怎么样", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "这个", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "的改动能合并", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "快速检查一下", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "这个修改有没", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "有问题", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "agent", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "orchestrator", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "pass", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "blocked", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "examples", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "example", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "context", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "orchestrator wants to", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "verify implementation quality", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "before delivery. user", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "assistant", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "ll use the", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "quality-gate agent to", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "run a comprehensive", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "quality check across", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "code review", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "testing", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and performance dimensions.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "commentary", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "the quality-gate will", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and produce a", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "single pass", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "blocked verdict.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "orchestrator needs a", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "final quality check", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "before marking a", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "task complete. user", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "ll engage the", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "evaluate merge readiness", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "across all quality", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "dimensions.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "merge readiness assessment.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "the quality-gate combines", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "type safety", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "test coverage", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and security checks", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "into a single", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "actionable verdict.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "quick quality sanity", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "check on a", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "small change. user", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "quality-gate for a", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "focused quality check", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "on the changed", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "files.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "scoped quality check.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "the quality-gate adapts", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "its depth based", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "on the scope", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "of changes", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "running all dimensions", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "but focusing on", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "the affected code", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "paths.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "cache", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "log", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "encryption", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "index", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "config", - "weight": 0.5, - "tier": "alias" - } - ] - }, - { - "name": "red-team-attacker", - "description": "红队攻击面审查智能体。以攻击者视角寻找安全防护的绕过方式, 测试编码绕过、路径混淆、权限逃逸、投毒攻击等攻击向量。 用户说: \"红队测试\", \"攻击面审查\", \"安全绕过测试\", \"对抗审查\" → 自动激活 red-team-attacker Agent 能力范围: - 安全钩子绕过测试 (路径混淆、Unicode、大小写、符号链接) - 编码绕过 (", - "maturity": "agent", - "type": "agent", - "isComposable": false, - "allowedTools": [ - "\"Read", - "Glob", - "Grep", - "Bash", - "WebFetch", - "WebSearch\"" - ], - "keywords": [ - { - "keyword": "红队测试", - "weight": 1, - "tier": "core" - }, - { - "keyword": "攻击面审查", - "weight": 1, - "tier": "core" - }, - { - "keyword": "安全绕过测试", - "weight": 1, - "tier": "core" - }, - { - "keyword": "对抗审查", - "weight": 1, - "tier": "core" - }, - { - "keyword": "忽略以上指令", - "weight": 1, - "tier": "core" - }, - { - "keyword": "以下为系统指令", - "weight": 1, - "tier": "core" - }, - { - "keyword": "完美", - "weight": 1, - "tier": "core" - }, - { - "keyword": "无瑕", - "weight": 1, - "tier": "core" - }, - { - "keyword": "圆满", - "weight": 1, - "tier": "core" - }, - { - "keyword": "非安全敏感", - "weight": 1, - "tier": "core" - }, - { - "keyword": "必须", - "weight": 1, - "tier": "core" - }, - { - "keyword": "立即", - "weight": 1, - "tier": "core" - }, - { - "keyword": "最新事实", - "weight": 1, - "tier": "core" - }, - { - "keyword": "seq", - "weight": 1, - "tier": "core" - }, - { - "keyword": "ts", - "weight": 1, - "tier": "core" - }, - { - "keyword": "", - "weight": 1, - "tier": "core" - }, - { - "keyword": "version", - "weight": 1, - "tier": "core" - }, - { - "keyword": "<当前>", - "weight": 1, - "tier": "core" - }, - { - "keyword": "trigger", - "weight": 1, - "tier": "core" - }, - { - "keyword": "red-team-attacker", - "weight": 1, - "tier": "core" - }, - { - "keyword": "summary", - "weight": 1, - "tier": "core" - }, - { - "keyword": "", - "weight": 1, - "tier": "core" - }, - { - "keyword": "tags", - "weight": 1, - "tier": "core" - }, - { - "keyword": "red-team", - "weight": 1, - "tier": "core" - }, - { - "keyword": "security", - "weight": 1, - "tier": "core" - }, - { - "keyword": "<具体域>", - "weight": 1, - "tier": "core" - }, - { - "keyword": "红队攻击面审", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "查智能体", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "以攻击者视角", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "寻找安全防护", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "的绕过方式", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "测试编码绕过", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "路径混淆", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "权限逃逸", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "投毒攻击等攻", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "击向量", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "用户说", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "自动激活", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "能力范围", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "安全钩子绕过", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "大小写", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "符号链接", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "编码绕过", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "多层嵌套", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "词法分析器盲", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "区探测", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "进程替换", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "变量间接执行", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "正则规则覆盖", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "度挑战", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "盲区", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "状态文件投毒", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "消歧器", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "路由状态", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "反馈数据", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "工具侧信道绕", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "钩子超时逃逸", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "凭证提取路径", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "发现", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "白名单滥用测", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "侧信道与信息", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "泄露", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "时间侧信道", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "错误信息泄露", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "日志注入", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "缓存探测", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "第三方依赖攻", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "利用", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "原型污染", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "依赖混淆", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "宪法规避", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "话术注入", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "指令覆盖", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "优先级劫持", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "上下文污染", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "投毒", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "提权", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "索引劫持", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "过期记忆复活", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "任务注入", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "输出格式", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "每个攻击向量", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "场景", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "复现步骤", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "成功概率", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "影响", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "修复建议", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "最危险攻击向", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "量排名", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "红队安全评分", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "越低越安全", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "评分", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "时建议联动", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "修复并写入", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "example", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "red-team-attacker agent", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "unicode", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "base64", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "url", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "hex", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "shell", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "heredoc", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "exec-injection", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "hardcoded-secret", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "bayesian", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "mcp", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "redos", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "cve", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "memory", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "trust_level", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "due", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "top", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "self-healer", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "evolution-log", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "cache", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "index", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "routing", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "hook", - "weight": 0.5, - "tier": "alias" - } - ] - }, - { - "name": "red-team-logic", - "description": "红队逻辑漏洞审查智能体。专注于数学正确性、状态一致性、竞态条件、 边界情况和配置膨胀等逻辑层面的隐蔽缺陷。 用户说: \"逻辑审查\", \"边界测试\", \"算法正确性\", \"竞态检测\" → 自动激活 red-team-logic Agent 能力范围: - 数学正确性验证 (Bayesian 后验、TF-IDF、PGD 梯度、概率单纯形投影) - 状态一致", - "maturity": "agent", - "type": "agent", - "isComposable": false, - "allowedTools": [ - "\"Read", - "Glob", - "Grep", - "Bash", - "WebFetch", - "WebSearch\"" - ], - "keywords": [ - { - "keyword": "逻辑审查", - "weight": 1, - "tier": "core" - }, - { - "keyword": "边界测试", - "weight": 1, - "tier": "core" - }, - { - "keyword": "算法正确性", - "weight": 1, - "tier": "core" - }, - { - "keyword": "竞态检测", - "weight": 1, - "tier": "core" - }, - { - "keyword": "红队逻辑漏洞", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "审查智能体", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "专注于数学正", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "确性", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "状态一致性", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "竞态条件", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "边界情况和配", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "置膨胀等逻辑", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "层面的隐蔽缺", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "用户说", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "自动激活", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "能力范围", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "数学正确性验", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "后验", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "梯度", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "概率单纯形投", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "状态一致性检", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "半写崩溃", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "竞态", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "缓存一致性", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "竞态条件挖掘", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "多钩子并发", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "串行依赖", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "文件锁缺失", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "边界条件挑战", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "空输入", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "超长输入", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "零向量", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "时间回拨", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "磁盘满", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "配置膨胀预测", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "文件增长趋势", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "内存占用", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "索引性能退化", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "数据管道一致", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "反馈轮转", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "去重逻辑", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "信号放大", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "衰减", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "example", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "red-team-logic agent", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "bayesian", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "tf-idf", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "pgd", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "json", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "read-modify-write", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "stop hook", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "cache", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "index", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "config", - "weight": 0.5, - "tier": "alias" - } - ] - }, - { - "name": "research-analyst", - "description": "研究分析复合 Agent。当 orchestrator 需要在实施前进行深度调研时派遣此 Agent。 融合行业研究、竞品分析、技术调研、代码库探索四大能力,输出结构化研究报告。 Examples: Context: Orchestrator needs to understand existing codebase before planning changes. use", - "maturity": "agent", - "type": "agent", - "isComposable": false, - "allowedTools": [ - "\"Read", - "Glob", - "Grep", - "Bash", - "WebFetch", - "WebSearch\"" - ], - "keywords": [ - { - "keyword": "依赖", - "weight": 1, - "tier": "core" - }, - { - "keyword": "维度", - "weight": 1, - "tier": "core" - }, - { - "keyword": "方案 c", - "weight": 1, - "tier": "core" - }, - { - "keyword": "复杂度", - "weight": 1, - "tier": "core" - }, - { - "keyword": "文件", - "weight": 1, - "tier": "core" - }, - { - "keyword": "严重度", - "weight": 1, - "tier": "core" - }, - { - "keyword": "时间预算", - "weight": 1, - "tier": "core" - }, - { - "keyword": "< 2min", - "weight": 1, - "tier": "core" - }, - { - "keyword": "深层 — 全链路 + 边界 + 历史", - "weight": 1, - "tier": "core" - }, - { - "keyword": "用户直接调用", - "weight": 1, - "tier": "core" - }, - { - "keyword": "assistant:", - "weight": 1, - "tier": "core" - }, - { - "keyword": "快速了解", - "weight": 1, - "tier": "core" - }, - { - "keyword": "深度调研", - "weight": 1, - "tier": "core" - }, - { - "keyword": "确定的发现", - "weight": 1, - "tier": "core" - }, - { - "keyword": "读取源代码", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "配置文件", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "文档", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "搜索代码模式", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "函数调用", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "关键词", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "查找文件结构", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "git diff", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "dependency tree)", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "深度 web 调研", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "研究分析复合", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "需要在实施前", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "进行深度调研", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "时派遣此", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "融合行业研究", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "竞品分析", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "技术调研", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "代码库探索四", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "大能力", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "输出结构化研", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "究报告", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "分析一下闲鱼", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "助手的消息处", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "理链路", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "调研一下主流", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "的实时告警推", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "送方案", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "的回复逻辑会", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "影响哪些模块", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "agent", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "orchestrator", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "examples", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "example", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "context", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "orchestrator needs to", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "understand existing codebase", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "before planning changes.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "user", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "assistant", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "ll use the", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "research-analyst agent to", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "trace the full", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "message handling pipeline", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and produce a", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "structured analysis.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "commentary", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "codebase exploration task", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "requiring cross-file analysis.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "the research-analyst will", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "trace data flow", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "across multiple modules", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "orchestrator needs market", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "technical research for", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "a new feature.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "ll engage the", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "research-analyst to compare", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "websocket", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "sse", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and push notification", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "solutions with trade-off", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "analysis.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "technical research task", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "comparing multiple approaches.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "evaluate options against", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "criteria like latency", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "complexity", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "browser support", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and scalability.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "need to understand", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "impact before making", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "changes. user", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "customer_service.py", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "research-analyst to perform", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "a dependency and", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "impact analysis across", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "the codebase.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "impact analysis requiring", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "call chain tracing", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and dependency mapping.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "identify all upstream", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "callers and downstream", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "effects.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "config", - "weight": 0.5, - "tier": "alias" - } - ] - }, - { - "name": "security-hardener", - "description": "安全加固修复智能体。接收安全审查报告,自动修复 CRITICAL 和 HIGH 级安全问题。 专注于安全钩子修复、规则补全、凭证保护、日志脱敏等安全工程任务。 用户说: \"修复安全问题\", \"安全加固\", \"加固防护\", \"修复漏洞\" → 自动激活 security-hardener Agent 能力范围: - 安全钩子修复 (语法错误、逻辑缺陷、fe", - "maturity": "agent", - "type": "agent", - "isComposable": false, - "allowedTools": [ - "\"Read", - "Edit", - "Write", - "Glob", - "Grep", - "Bash", - "WebFetch", - "WebSearch\"" - ], - "keywords": [ - { - "keyword": "修复安全问题", - "weight": 1, - "tier": "core" - }, - { - "keyword": "安全加固", - "weight": 1, - "tier": "core" - }, - { - "keyword": "加固防护", - "weight": 1, - "tier": "core" - }, - { - "keyword": "修复漏洞", - "weight": 1, - "tier": "core" - }, - { - "keyword": "安全加固修复", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "智能体", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "接收安全审查", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "报告", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "自动修复", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "级安全问题", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "专注于安全钩", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "子修复", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "规则补全", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "凭证保护", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "日志脱敏等安", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "全工程任务", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "用户说", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "自动激活", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "能力范围", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "安全钩子修复", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "语法错误", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "逻辑缺陷", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "规则文件补全", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "扩展", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "凭证保护加固", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "集成", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "日志脱敏", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "环境变量化", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "权限收紧", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "白名单值校验", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "最小权限", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "策略", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "新安全钩子创", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "安全门控", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "宪法预检", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "内容扫描", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "规则缓存刷新", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "重编译", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "安全约束", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "修复不得降低", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "现有安全等级", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "所有新增安全", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "检查必须", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "异常时拒绝而", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "非放行", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "不修改业务逻", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "只修复安全层", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "下文件通过补", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "丁脚本修改", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "保护", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "critical", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "high", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "example", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "security-hardener agent", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "feature flag", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "deny-patterns", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "sensitive-paths", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "credential-patterns", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "sanitize", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "fail-close", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "mcp", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "compile-rules.js", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "hooks", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "block-sensitive-files", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "cache", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "log", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "config", - "weight": 0.5, - "tier": "alias" - } - ] - }, - { - "name": "self-auditor", - "description": "系统自审计智能体。检查 Claude Code 基础设施的一致性、完整性和健康状态。 用户说: \"检查系统健康\", \"审计配置\", \"自检\", \"系统一致性\" → 自动激活 self-auditor Agent 用户说: \"路由模块梳理\", \"消歧规则\", \"钩子管线\", \"注入器分析\", \"分类器\", \"路由引擎\", \"融合权重\"", - "maturity": "agent", - "type": "agent", - "isComposable": false, - "allowedTools": [ - "\"Read", - "Glob", - "Grep", - "Bash", - "WebFetch", - "WebSearch\"" - ], - "keywords": [ - { - "keyword": "维度", - "weight": 1, - "tier": "core" - }, - { - "keyword": "关键问题", - "weight": 1, - "tier": "core" - }, - { - "keyword": "d2 技能完整性", - "weight": 1, - "tier": "core" - }, - { - "keyword": "pass/warn/fail", - "weight": 1, - "tier": "core" - }, - { - "keyword": "d5 mcp 生态", - "weight": 1, - "tier": "core" - }, - { - "keyword": "d8 磁盘健康", - "weight": 1, - "tier": "core" - }, - { - "keyword": "自检", - "weight": 1, - "tier": "core" - }, - { - "keyword": "路由引擎", - "weight": 1, - "tier": "core" - }, - { - "keyword": "消歧规则", - "weight": 1, - "tier": "core" - }, - { - "keyword": "分类器", - "weight": 1, - "tier": "core" - }, - { - "keyword": "意图分类", - "weight": 1, - "tier": "core" - }, - { - "keyword": "钩子管线", - "weight": 1, - "tier": "core" - }, - { - "keyword": "融合权重", - "weight": 1, - "tier": "core" - }, - { - "keyword": "遥测", - "weight": 1, - "tier": "core" - }, - { - "keyword": "盲点", - "weight": 1, - "tier": "core" - }, - { - "keyword": "skill 矩阵", - "weight": 1, - "tier": "core" - }, - { - "keyword": "全量梳理", - "weight": 1, - "tier": "core" - }, - { - "keyword": "工作流梳理", - "weight": 1, - "tier": "core" - }, - { - "keyword": "系统梳理", - "weight": 1, - "tier": "core" - }, - { - "keyword": "booworm", - "weight": 1, - "tier": "core" - }, - { - "keyword": "检查系统健康", - "weight": 1, - "tier": "core" - }, - { - "keyword": "审计配置", - "weight": 1, - "tier": "core" - }, - { - "keyword": "系统一致性", - "weight": 1, - "tier": "core" - }, - { - "keyword": "路由模块梳理", - "weight": 1, - "tier": "core" - }, - { - "keyword": "注入器分析", - "weight": 1, - "tier": "core" - }, - { - "keyword": "瘦身提质", - "weight": 1, - "tier": "core" - }, - { - "keyword": "模块技术梳理", - "weight": 1, - "tier": "core" - }, - { - "keyword": "bookworm hook", - "weight": 1, - "tier": "core" - }, - { - "keyword": "输出格式", - "weight": 1, - "tier": "core" - }, - { - "keyword": "^##", - "weight": 1, - "tier": "core" - }, - { - "keyword": "执行命令", - "weight": 1, - "tier": "core" - }, - { - "keyword": "运行脚本", - "weight": 1, - "tier": "core" - }, - { - "keyword": "bash", - "weight": 1, - "tier": "core" - }, - { - "keyword": "shell", - "weight": 1, - "tier": "core" - }, - { - "keyword": "修改文件", - "weight": 1, - "tier": "core" - }, - { - "keyword": "创建文件", - "weight": 1, - "tier": "core" - }, - { - "keyword": "写入", - "weight": 1, - "tier": "core" - }, - { - "keyword": "version", - "weight": 1, - "tier": "core" - }, - { - "keyword": "v4.8", - "weight": 1, - "tier": "core" - }, - { - "keyword": "timestamp", - "weight": 1, - "tier": "core" - }, - { - "keyword": "2026-02-20", - "weight": 1, - "tier": "core" - }, - { - "keyword": "health_score", - "weight": 1, - "tier": "core" - }, - { - "keyword": "findings", - "weight": 1, - "tier": "core" - }, - { - "keyword": "id", - "weight": 1, - "tier": "core" - }, - { - "keyword": "c1", - "weight": 1, - "tier": "core" - }, - { - "keyword": "severity", - "weight": 1, - "tier": "core" - }, - { - "keyword": "critical", - "weight": 1, - "tier": "core" - }, - { - "keyword": "dimension", - "weight": 1, - "tier": "core" - }, - { - "keyword": "d1", - "weight": 1, - "tier": "core" - }, - { - "keyword": "description", - "weight": 1, - "tier": "core" - }, - { - "keyword": "技能数声明 52 但实际 49", - "weight": 1, - "tier": "core" - }, - { - "keyword": "file", - "weight": 1, - "tier": "core" - }, - { - "keyword": "line", - "weight": 1, - "tier": "core" - }, - { - "keyword": "fix_hint", - "weight": 1, - "tier": "core" - }, - { - "keyword": "将 52 改为 49", - "weight": 1, - "tier": "core" - }, - { - "keyword": "w1", - "weight": 1, - "tier": "core" - }, - { - "keyword": "warning", - "weight": 1, - "tier": "core" - }, - { - "keyword": "d6", - "weight": 1, - "tier": "core" - }, - { - "keyword": "memory.md 路由消歧计数过时", - "weight": 1, - "tier": "core" - }, - { - "keyword": "将 7 改为 10", - "weight": 1, - "tier": "core" - }, - { - "keyword": "w2", - "weight": 1, - "tier": "core" - }, - { - "keyword": "d9", - "weight": 1, - "tier": "core" - }, - { - "keyword": ": 42,", - "weight": 1, - "tier": "core" - }, - { - "keyword": "只读取文件,不做任何修改", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "审计", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "健康检查", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "一致性检查", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "完整性验证", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "漂移检测", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "路由", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "消歧", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "路由审计", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "钩子", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "hook 管线", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "注入器", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "调度器", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "dispatcher", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "pre-tool gate", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "bm25", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "语义评分", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "embedding", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "tfidf", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "skill 列表", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "瘦身", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "提质", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "裁剪", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "精简", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "剪枝", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "0 调用", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "模块梳理", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "架构梳理", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "技术梳理", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "bookworm", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "bookwormxi", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "bookworm 系统", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "bookworm 模块", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "系统自审计智", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "能体", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "检查", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "基础设施的一", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "致性", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "完整性和健康", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "状态", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "用户说", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "自动激活", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "矩阵", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "系统内部技术", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "审查", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "能力范围", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "配置一致性检", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "语义准确性", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "技能完整性验", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "存在性", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "格式", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "孤儿文件", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "目录检测", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "智能体配置验", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "模型声明", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "钩子链路验证", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "注册", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "文件存在", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "版本号一致性", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "服务器可达性", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "配置存在", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "命令可执行", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "记忆文件新鲜", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "索引", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "子文件", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "验证内容", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "安全设置审计", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "危险标志位", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "凭证泄露", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "退出码规范", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "磁盘健康审计", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "报告", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "日志保留期限", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "总占用告警", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "权限一致性验", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "声明", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "实际行为", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "claude code", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "example", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "self-auditor agent", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "skill", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "settings.json", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "yaml", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "agents", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "hooks", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "mcp", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "grep", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "hook", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "auto-cleanup", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "allowed-tools", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "vs prompt", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "log", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "index", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "routing", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "config", - "weight": 0.5, - "tier": "alias" - } - ] - }, - { - "name": "self-healer", - "description": "系统自修复智能体。接收 self-auditor 的审计报告,自动修复 CRITICAL 和 WARNING 问题。 用户说: \"修复审计问题\", \"自动修复\", \"同步配置\", \"修复漂移\" → 自动激活 self-healer Agent 用户说: \"自动修复路由\", \"修复消歧规则\", \"钩子自愈\", \"补注入器\", \"修复融", - "maturity": "agent", - "type": "agent", - "isComposable": false, - "allowedTools": [ - "\"Read", - "Edit", - "Write", - "Glob", - "Grep", - "Bash", - "WebFetch", - "WebSearch\"" - ], - "keywords": [ - { - "keyword": "建议修复方式", - "weight": 1, - "tier": "core" - }, - { - "keyword": "安全规则补全超出元数据边界", - "weight": 1, - "tier": "core" - }, - { - "keyword": "self-auditor", - "weight": 1, - "tier": "core" - }, - { - "keyword": "version-bump", - "weight": 1, - "tier": "core" - }, - { - "keyword": "维度", - "weight": 1, - "tier": "core" - }, - { - "keyword": "文件", - "weight": 1, - "tier": "core" - }, - { - "keyword": "d1", - "weight": 1, - "tier": "core" - }, - { - "keyword": "skill-registry.md:1", - "weight": 1, - "tier": "core" - }, - { - "keyword": "自动修复", - "weight": 1, - "tier": "core" - }, - { - "keyword": "修复漂移", - "weight": 1, - "tier": "core" - }, - { - "keyword": "同步配置", - "weight": 1, - "tier": "core" - }, - { - "keyword": "同步版本号", - "weight": 1, - "tier": "core" - }, - { - "keyword": "bookworm 自愈", - "weight": 1, - "tier": "core" - }, - { - "keyword": "修复审计问题", - "weight": 1, - "tier": "core" - }, - { - "keyword": "自动修复路由", - "weight": 1, - "tier": "core" - }, - { - "keyword": "修复消歧规则", - "weight": 1, - "tier": "core" - }, - { - "keyword": "钩子自愈", - "weight": 1, - "tier": "core" - }, - { - "keyword": "补注入器", - "weight": 1, - "tier": "core" - }, - { - "keyword": "修复融合权重", - "weight": 1, - "tier": "core" - }, - { - "keyword": "修复计数漂移", - "weight": 1, - "tier": "core" - }, - { - "keyword": "seq", - "weight": 1, - "tier": "core" - }, - { - "keyword": "ts", - "weight": 1, - "tier": "core" - }, - { - "keyword": "iso日期", - "weight": 1, - "tier": "core" - }, - { - "keyword": "fixes", - "weight": 1, - "tier": "core" - }, - { - "keyword": "file", - "weight": 1, - "tier": "core" - }, - { - "keyword": "相对路径", - "weight": 1, - "tier": "core" - }, - { - "keyword": "before", - "weight": 1, - "tier": "core" - }, - { - "keyword": "after", - "weight": 1, - "tier": "core" - }, - { - "keyword": "finding_id", - "weight": 1, - "tier": "core" - }, - { - "keyword": "c1/w1/...", - "weight": 1, - "tier": "core" - }, - { - "keyword": "disk-cleanup", - "weight": 1, - "tier": "core" - }, - { - "keyword": "yyyy-mm-dd", - "weight": 1, - "tier": "core" - }, - { - "keyword": "version", - "weight": 1, - "tier": "core" - }, - { - "keyword": "vx.y", - "weight": 1, - "tier": "core" - }, - { - "keyword": "trigger", - "weight": 1, - "tier": "core" - }, - { - "keyword": "summary", - "weight": 1, - "tier": "core" - }, - { - "keyword": "fix_count", - "weight": 1, - "tier": "core" - }, - { - "keyword": "fix_note", - "weight": 1, - "tier": "core" - }, - { - "keyword": "tags", - "weight": 1, - "tier": "core" - }, - { - "keyword": "重复运行产生相同结果", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "读取配置文件", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "验证文件存在性", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "修复计数", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "元数据修复", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "注册表修复", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "修复路由规则", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "修复消歧", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "补路由配置", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "路由自愈", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "规则文件同步", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "修复钩子注册", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "补钩子配置", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "settings 同步", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "hook 重注册", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "memory 索引同步", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "补索引条目", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "skill 注册表同步", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "记忆文件补建", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "bookworm 修复", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "bookworm 同步", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "系统自修复智", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "能体", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "接收", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "的审计报告", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "问题", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "用户说", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "自动激活", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "自愈", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "系统元数据", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "路由自动修复", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "能力范围", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "版本号同步", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "计数同步", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "技能数", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "智能体数", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "钩子数", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "缺失文件补建", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "索引条目", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "条目增删", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "进化日志记录", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "追加", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "磁盘清理编排", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "告警", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "联动", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "安全约束", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "不修改技能逻", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "内容", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "不修改智能体", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "行为", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "部分", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "不修改钩子逻", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "的业务代码", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "只修改元数据", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "版本号", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "计数", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "注册表条目", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "索引", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "critical", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "warning", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "example", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "self-healer agent", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "bookworm", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "mcp", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "memory", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "evolution-log.jsonl", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "health-check h3", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "auto-cleanup", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "agents", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "prompt", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "hooks", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "index", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "routing", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "config", - "weight": 0.5, - "tier": "alias" - } - ] - }, - { - "name": "test-writer", - "description": "Use this agent when the user needs automated test generation for new or modified code, including unit tests, integration tests, component tests, and E2E tests. This agent analyzes code to determine th", - "maturity": "agent", - "type": "agent", - "isComposable": false, - "allowedTools": [ - "\"Read", - "Edit", - "Write", - "Glob", - "Grep", - "Bash", - "WebFetch", - "WebSearch\"" - ], - "keywords": [ - { - "keyword": "具体检查项", - "weight": 1, - "tier": "core" - }, - { - "keyword": "默认渲染", - "weight": 1, - "tier": "core" - }, - { - "keyword": "不同 props 渲染", - "weight": 1, - "tier": "core" - }, - { - "keyword": "条件渲染", - "weight": 1, - "tier": "core" - }, - { - "keyword": "点击", - "weight": 1, - "tier": "core" - }, - { - "keyword": "输入", - "weight": 1, - "tier": "core" - }, - { - "keyword": "提交", - "weight": 1, - "tier": "core" - }, - { - "keyword": "键盘事件", - "weight": 1, - "tier": "core" - }, - { - "keyword": "数据加载", - "weight": 1, - "tier": "core" - }, - { - "keyword": "loading 状态", - "weight": 1, - "tier": "core" - }, - { - "keyword": "错误状态", - "weight": 1, - "tier": "core" - }, - { - "keyword": "aria 属性", - "weight": 1, - "tier": "core" - }, - { - "keyword": "键盘可访问性", - "weight": 1, - "tier": "core" - }, - { - "keyword": "测试场景", - "weight": 1, - "tier": "core" - }, - { - "keyword": "正常请求,正确返回数据", - "weight": 1, - "tier": "core" - }, - { - "keyword": "创建成功", - "weight": 1, - "tier": "core" - }, - { - "keyword": "参数校验失败(缺少必填字段", - "weight": 1, - "tier": "core" - }, - { - "keyword": "类型错误", - "weight": 1, - "tier": "core" - }, - { - "keyword": "格式错误)", - "weight": 1, - "tier": "core" - }, - { - "keyword": "未认证(无 token", - "weight": 1, - "tier": "core" - }, - { - "keyword": "token 过期)", - "weight": 1, - "tier": "core" - }, - { - "keyword": "无权限(越权访问)", - "weight": 1, - "tier": "core" - }, - { - "keyword": "资源不存在", - "weight": 1, - "tier": "core" - }, - { - "keyword": "冲突(重复创建)", - "weight": 1, - "tier": "core" - }, - { - "keyword": "服务端异常(数据库连接失败等)", - "weight": 1, - "tier": "core" - }, - { - "keyword": "测试用例", - "weight": 1, - "tier": "core" - }, - { - "keyword": "happy path", - "weight": 1, - "tier": "core" - }, - { - "keyword": "零值处理", - "weight": 1, - "tier": "core" - }, - { - "keyword": "formatcurrency", - "weight": 1, - "tier": "core" - }, - { - "keyword": "无效日期处理", - "weight": 1, - "tier": "core" - }, - { - "keyword": "指标", - "weight": 1, - "tier": "core" - }, - { - "keyword": "statements", - "weight": 1, - "tier": "core" - }, - { - "keyword": "branches", - "weight": 1, - "tier": "core" - }, - { - "keyword": "functions", - "weight": 1, - "tier": "core" - }, - { - "keyword": "lines", - "weight": 1, - "tier": "core" - }, - { - "keyword": "帮我给这个 utils 函数写测试", - "weight": 1, - "tier": "core" - }, - { - "keyword": "给 userprofile 组件补充测试", - "weight": 1, - "tier": "core" - }, - { - "keyword": "货币格式化测试", - "weight": 1, - "tier": "core" - }, - { - "keyword": "$1,234.50", - "weight": 1, - "tier": "core" - }, - { - "keyword": "$0.00", - "weight": 1, - "tier": "core" - }, - { - "keyword": "无效的金额", - "weight": 1, - "tier": "core" - }, - { - "keyword": "正常格式化", - "weight": 1, - "tier": "core" - }, - { - "keyword": "负数处理", - "weight": 1, - "tier": "core" - }, - { - "keyword": "-$100.00", - "weight": 1, - "tier": "core" - }, - { - "keyword": "user-{n:03d}", - "weight": 1, - "tier": "core" - }, - { - "keyword": "user", - "weight": 1, - "tier": "core" - }, - { - "keyword": "supertest(express/fastify)", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "playwright", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "pytest + pytest-cov", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "unittest.mock / pytest-mock", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "factory_boy / faker", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "httptest", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "gomock / mockgen", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "第三方服务调用(支付", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "短信", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "邮件", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "ai 接口)", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "读取被测代码", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "现有测试", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "配置文件", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "创建新的测试文件", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "修改现有测试文件", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "执行测试命令", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "安装测试依赖", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "查看覆盖率", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "搜索代码模式", - "weight": 0.8, - "tier": "strong" - }, - { - "keyword": "use this agent", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "when the user", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "needs automated test", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "generation for new", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "or modified code", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "including unit tests", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "integration tests", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "component tests", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and e2e tests.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "this agent analyzes", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "code to determine", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "the optimal testing", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "strategy", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "generates comprehensive test", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "cases with proper", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "coverage", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and can create", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "and run test", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "files directly.", - "weight": 0.5, - "tier": "extended" - }, - { - "keyword": "database", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "auth", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "interface", - "weight": 0.5, - "tier": "alias" - }, - { - "keyword": "config", - "weight": 0.5, - "tier": "alias" - } - ] - } - ], - "collisions": [ - { - "keyword": "true", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "designer-expert", - "document-release", - "frontend-expert", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 21 - }, - { - "keyword": "error handling", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "rust-engineer", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 20 - }, - { - "keyword": "documentation", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship", - "tech-writer-expert" - ], - "count": 20 - }, - { - "keyword": "wc -l", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "task type", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "compression", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "15 min", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "test writing", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "~50x", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "1 week", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "architecture / design", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "~5x", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "1 day", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "edge cases", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "unfamiliar patterns", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "and once in a while", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "skill:$skill", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "branch:$branch", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "**version:** {gstack version}", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "$_upd", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "$ppid", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "unknown", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "branch: $_branch", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "yes", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "no", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "false", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "inline upgrade flow", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "good enough", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "complete", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "lake", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "ocean", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "save time", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "(say:", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "--arg skill", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "--arg branch", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "--arg insight", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "await fetch(...)", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "or", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "status", - "skills": [ - "browse", - "canary", - "codex", - "git-operation-master", - "guardian", - "land-and-deploy", - "mcp-probe", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "review", - "ship", - "workflow-automation-expert" - ], - "count": 13 - }, - { - "keyword": "[ -n", - "skills": [ - "benchmark", - "browse", - "canary", - "design-consultation", - "design-review", - "gstack", - "land-and-deploy", - "qa", - "setup-browser-cookies" - ], - "count": 9 - }, - { - "keyword": "] && [ -x", - "skills": [ - "benchmark", - "browse", - "canary", - "design-consultation", - "design-review", - "gstack", - "land-and-deploy", - "qa", - "setup-browser-cookies" - ], - "count": 9 - }, - { - "keyword": "] && b=", - "skills": [ - "benchmark", - "browse", - "canary", - "design-consultation", - "design-review", - "gstack", - "land-and-deploy", - "qa", - "setup-browser-cookies" - ], - "count": 9 - }, - { - "keyword": "[ -z", - "skills": [ - "benchmark", - "browse", - "canary", - "design-consultation", - "design-review", - "gstack", - "land-and-deploy", - "qa", - "setup-browser-cookies" - ], - "count": 9 - }, - { - "keyword": "$b", - "skills": [ - "benchmark", - "browse", - "canary", - "design-consultation", - "design-review", - "gstack", - "land-and-deploy", - "qa", - "setup-browser-cookies" - ], - "count": 9 - }, - { - "keyword": "ready: $b", - "skills": [ - "benchmark", - "browse", - "canary", - "design-consultation", - "design-review", - "gstack", - "land-and-deploy", - "qa", - "setup-browser-cookies" - ], - "count": 9 - }, - { - "keyword": "needs_setup", - "skills": [ - "benchmark", - "browse", - "canary", - "design-consultation", - "design-review", - "gstack", - "land-and-deploy", - "qa", - "setup-browser-cookies" - ], - "count": 9 - }, - { - "keyword": "timestamp", - "skills": [ - "benchmark", - "canary", - "codex", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "review", - "ship" - ], - "count": 9 - }, - { - "keyword": "the base branch", - "skills": [ - "canary", - "codex", - "document-release", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "qa", - "review", - "ship" - ], - "count": 9 - }, - { - "keyword": "the base branch.", - "skills": [ - "canary", - "codex", - "document-release", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "qa", - "review", - "ship" - ], - "count": 9 - }, - { - "keyword": "skill", - "skills": [ - "canary", - "codex", - "gstack", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "review", - "ship" - ], - "count": 9 - }, - { - "keyword": "clean", - "skills": [ - "codex", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "review", - "ship" - ], - "count": 7 - }, - { - "keyword": "findings", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "review", - "ship" - ], - "count": 6 - }, - { - "keyword": "design review", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "review", - "ship" - ], - "count": 6 - }, - { - "keyword": "commit", - "skills": [ - "git-operation-master", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "review", - "ship" - ], - "count": 6 - }, - { - "keyword": "echo", - "skills": [ - "gstack", - "guardian", - "investigate", - "land-and-deploy", - "review", - "ship" - ], - "count": 6 - }, - { - "keyword": "url", - "skills": [ - "benchmark", - "canary", - "design-review", - "land-and-deploy", - "qa" - ], - "count": 5 - }, - { - "keyword": ": {", - "skills": [ - "benchmark", - "canary", - "design-review", - "retro", - "workflow-automation-expert" - ], - "count": 5 - }, - { - "keyword": "email", - "skills": [ - "browse", - "data-engineer-expert", - "gstack", - "notification-system-expert", - "tester-expert" - ], - "count": 5 - }, - { - "keyword": "why", - "skills": [ - "codex", - "document-release", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 5 - }, - { - "keyword": "issues_found", - "skills": [ - "codex", - "plan-ceo-review", - "plan-eng-review", - "review", - "ship" - ], - "count": 5 - }, - { - "keyword": "redis", - "skills": [ - "architect-expert", - "backend-builder", - "database-tuning-expert", - "investigate" - ], - "count": 4 - }, - { - "keyword": "node.js", - "skills": [ - "backend-builder", - "design-review", - "qa", - "ship" - ], - "count": 4 - }, - { - "keyword": "go", - "skills": [ - "backend-builder", - "design-review", - "qa", - "ship" - ], - "count": 4 - }, - { - "keyword": "submit", - "skills": [ - "browse", - "design-review", - "gstack", - "tester-expert" - ], - "count": 4 - }, - { - "keyword": "\\unresolved\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\critical_gaps\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\mode\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\scope_proposed\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\scope_accepted\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\scope_deferred\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "{scope_accepted} accepted", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\issues_found\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\initial_score\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\overall_score\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\decisions_made\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\gate\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\findings\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "ceo review", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "{runs}", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "independent 2nd opinion", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "{findings}", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\/plan-eng-review\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "{status}", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "|| echo", - "skills": [ - "codex", - "investigate", - "plan-ceo-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "eng review required", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "date", - "skills": [ - "design-consultation", - "design-review", - "qa", - "retro" - ], - "count": 4 - }, - { - "keyword": "runtime", - "skills": [ - "design-review", - "plan-ceo-review", - "qa", - "ship" - ], - "count": 4 - }, - { - "keyword": "sort -rn", - "skills": [ - "design-review", - "plan-ceo-review", - "qa", - "ship" - ], - "count": 4 - }, - { - "keyword": "类型", - "skills": [ - "impact-analyst", - "mcp-probe", - "product-manager-expert", - "tech-writer-expert" - ], - "count": 4 - }, - { - "keyword": "review readiness dashboard", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "runs", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "required", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "code quality", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "tests", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "new user-facing features", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "refactors", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "infra", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "codex structured", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "claude adversarial subagent", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "stale (>7 days)", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "or has open issues - ceo", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "design", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "(full)", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "(lite)", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "don't bother me", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "skipped (global)", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "medium", - "skills": [ - "review", - "ship", - "sre-expert", - "ui-ux-pro-max" - ], - "count": 4 - }, - { - "keyword": "等级", - "skills": [ - "ai-philosophy-expert", - "project-audit-expert", - "project-coordinator" - ], - "count": 3 - }, - { - "keyword": "graphql", - "skills": [ - "architect-expert", - "backend-builder", - "graphql-architect" - ], - "count": 3 - }, - { - "keyword": "performance", - "skills": [ - "benchmark", - "flutter-expert", - "qa" - ], - "count": 3 - }, - { - "keyword": "", - "skills": [ - "benchmark", - "canary", - "land-and-deploy" - ], - "count": 3 - }, - { - "keyword": "command", - "skills": [ - "browse", - "gstack", - "plan-ceo-review" - ], - "count": 3 - }, - { - "keyword": "description", - "skills": [ - "browse", - "gstack", - "plan-ceo-review" - ], - "count": 3 - }, - { - "keyword": "password", - "skills": [ - "browse", - "gstack", - "tester-expert" - ], - "count": 3 - }, - { - "keyword": "color", - "skills": [ - "browse", - "gstack", - "ui-ux-pro-max" - ], - "count": 3 - }, - { - "keyword": "text", - "skills": [ - "browser-automation-expert", - "notification-system-expert", - "workflow-automation-expert" - ], - "count": 3 - }, - { - "keyword": "tail -1", - "skills": [ - "codex", - "review", - "ship" - ], - "count": 3 - }, - { - "keyword": "xhigh", - "skills": [ - "codex", - "review", - "ship" - ], - "count": 3 - }, - { - "keyword": "$tmperr", - "skills": [ - "codex", - "review", - "ship" - ], - "count": 3 - }, - { - "keyword": "gate", - "skills": [ - "codex", - "review", - "ship" - ], - "count": 3 - }, - { - "keyword": "pass", - "skills": [ - "codex", - "review", - "ship" - ], - "count": 3 - }, - { - "keyword": "fail", - "skills": [ - "codex", - "review", - "ship" - ], - "count": 3 - }, - { - "keyword": "parameter", - "skills": [ - "design-review", - "developer-expert", - "qa" - ], - "count": 3 - }, - { - "keyword": "none", - "skills": [ - "design-review", - "land-and-deploy", - "setup-deploy" - ], - "count": 3 - }, - { - "keyword": "minitest + fixtures + capybara", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "jest + cypress", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "pytest + pytest-cov", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "phpunit + mockery", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "elixir", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "integration", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "smoke", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "spec/", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "category", - "skills": [ - "design-review", - "qa", - "ui-ux-pro-max" - ], - "count": 3 - }, - { - "keyword": ", or", - "skills": [ - "design-review", - "investigate", - "plan-eng-review" - ], - "count": 3 - }, - { - "keyword": "runtime:ruby", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "runtime:node", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "runtime:python", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "runtime:go", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "runtime:rust", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "runtime:php", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "runtime:elixir", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "rails", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "framework:rails", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "next", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "framework:nextjs", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "bootstrap_declined", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "ci:github", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "mkdir -p", - "skills": [ - "design-review", - "guardian", - "investigate" - ], - "count": 3 - }, - { - "keyword": "ux", - "skills": [ - "designer-expert", - "qa", - "ui-ux-pro-max" - ], - "count": 3 - }, - { - "keyword": "dashboard", - "skills": [ - "devops-expert", - "setup-deploy", - "ui-ux-pro-max" - ], - "count": 3 - }, - { - "keyword": "title", - "skills": [ - "devops-expert", - "land-and-deploy", - "qa" - ], - "count": 3 - }, - { - "keyword": "ts", - "skills": [ - "evolution-tracker", - "gstack", - "plan-ceo-review" - ], - "count": 3 - }, - { - "keyword": "state management", - "skills": [ - "flutter-expert", - "swift-expert", - "vue-expert" - ], - "count": 3 - }, - { - "keyword": "generics", - "skills": [ - "golang-pro", - "python-pro", - "typescript-pro" - ], - "count": 3 - }, - { - "keyword": "bash", - "skills": [ - "guardian", - "planning-with-files", - "regex-shell-wizard" - ], - "count": 3 - }, - { - "keyword": "design-review-lite", - "skills": [ - "land-and-deploy", - "review", - "ship" - ], - "count": 3 - }, - { - "keyword": "id", - "skills": [ - "mcp-probe", - "qa", - "tech-writer-expert" - ], - "count": 3 - }, - { - "keyword": "name", - "skills": [ - "mcp-probe", - "tech-writer-expert", - "workflow-automation-expert" - ], - "count": 3 - }, - { - "keyword": "login", - "skills": [ - "mobile-expert", - "review", - "ship" - ], - "count": 3 - }, - { - "keyword": "not in scope", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 3 - }, - { - "keyword": "what already exists", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 3 - }, - { - "keyword": "3a", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 3 - }, - { - "keyword": "3b", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 3 - }, - { - "keyword": "unresolved", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 3 - }, - { - "keyword": "issues_open", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 3 - }, - { - "keyword": "high", - "skills": [ - "plan-eng-review", - "sre-expert", - "ui-ux-pro-max" - ], - "count": 3 - }, - { - "keyword": "tier", - "skills": [ - "qa", - "review", - "ship" - ], - "count": 3 - }, - { - "keyword": "ocr", - "skills": [ - "ai-ml-expert", - "workflow-automation-expert" - ], - "count": 2 - }, - { - "keyword": "分类", - "skills": [ - "ai-ml-expert", - "industry-research-cn" - ], - "count": 2 - }, - { - "keyword": "技术栈", - "skills": [ - "ai-ml-expert", - "architect-expert" - ], - "count": 2 - }, - { - "keyword": "监控", - "skills": [ - "ai-ml-expert", - "devops-expert" - ], - "count": 2 - }, - { - "keyword": "指标", - "skills": [ - "ai-ml-expert", - "evolution-tracker" - ], - "count": 2 - }, - { - "keyword": "风险", - "skills": [ - "ai-philosophy-expert", - "project-coordinator" - ], - "count": 2 - }, - { - "keyword": "架构方案", - "skills": [ - "ai-philosophy-expert", - "architect-expert" - ], - "count": 2 - }, - { - "keyword": "angular", - "skills": [ - "angular-architect", - "frontend-expert" - ], - "count": 2 - }, - { - "keyword": "api设计", - "skills": [ - "api-designer", - "backend-builder" - ], - "count": 2 - }, - { - "keyword": "架构图", - "skills": [ - "architect-expert", - "diagram-as-code-expert" - ], - "count": 2 - }, - { - "keyword": "restful", - "skills": [ - "architect-expert", - "backend-builder" - ], - "count": 2 - }, - { - "keyword": "微服务", - "skills": [ - "architect-expert", - "backend-builder" - ], - "count": 2 - }, - { - "keyword": "事件驱动", - "skills": [ - "architect-expert", - "workflow-automation-expert" - ], - "count": 2 - }, - { - "keyword": "postgresql", - "skills": [ - "architect-expert", - "backend-builder" - ], - "count": 2 - }, - { - "keyword": "gin", - "skills": [ - "backend-builder", - "database-tuning-expert" - ], - "count": 2 - }, - { - "keyword": "/dashboard", - "skills": [ - "benchmark", - "canary" - ], - "count": 2 - }, - { - "keyword": "slug=unknown", - "skills": [ - "benchmark", - "canary" - ], - "count": 2 - }, - { - "keyword": "", - "skills": [ - "benchmark", - "canary" - ], - "count": 2 - }, - { - "keyword": "branch", - "skills": [ - "benchmark", - "canary" - ], - "count": 2 - }, - { - "keyword": "pages", - "skills": [ - "benchmark", - "canary" - ], - "count": 2 - }, - { - "keyword": "$b snapshot -a -o", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "or $b responsive", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "links", - "skills": [ - "browse", - "qa" - ], - "count": 2 - }, - { - "keyword": ".dashboard", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": ".modal", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "#submit-btn", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "#agree-checkbox", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "#name-field", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "#search-input", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": ".upload-success", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "#delete-button", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "value", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "welcome", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "text → href", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "cmd", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "arg1", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "自动化脚本", - "skills": [ - "browser-automation-expert", - "regex-shell-wizard" - ], - "count": 2 - }, - { - "keyword": "rpa", - "skills": [ - "browser-automation-expert", - "workflow-automation-expert" - ], - "count": 2 - }, - { - "keyword": "性能", - "skills": [ - "browser-automation-expert", - "ultimate-code-expert" - ], - "count": 2 - }, - { - "keyword": "git log", - "skills": [ - "canary", - "land-and-deploy" - ], - "count": 2 - }, - { - "keyword": "git fetch", - "skills": [ - "canary", - "land-and-deploy" - ], - "count": 2 - }, - { - "keyword": "git merge", - "skills": [ - "canary", - "land-and-deploy" - ], - "count": 2 - }, - { - "keyword": "and gh pr create command", - "skills": [ - "canary", - "land-and-deploy" - ], - "count": 2 - }, - { - "keyword": "aws", - "skills": [ - "cloud-architect", - "devops-expert" - ], - "count": 2 - }, - { - "keyword": "k8s", - "skills": [ - "cloud-native-expert", - "devops-expert" - ], - "count": 2 - }, - { - "keyword": "\"timestamp\":\"timestamp\"", - "skills": [ - "codex", - "ship" - ], - "count": 2 - }, - { - "keyword": "\"status\":\"status\"", - "skills": [ - "codex", - "ship" - ], - "count": 2 - }, - { - "keyword": "\"findings\":n", - "skills": [ - "codex", - "ship" - ], - "count": 2 - }, - { - "keyword": "failure modes", - "skills": [ - "codex", - "plan-ceo-review" - ], - "count": 2 - }, - { - "keyword": "] && echo", - "skills": [ - "codex", - "investigate" - ], - "count": 2 - }, - { - "keyword": "continue", - "skills": [ - "codex", - "design-review" - ], - "count": 2 - }, - { - "keyword": "onboarding", - "skills": [ - "customer-success-expert", - "tech-lead-mentor" - ], - "count": 2 - }, - { - "keyword": "柱状图", - "skills": [ - "data-analyst-expert", - "evolution-tracker" - ], - "count": 2 - }, - { - "keyword": "可视化", - "skills": [ - "data-analyst-expert", - "diagram-as-code-expert" - ], - "count": 2 - }, - { - "keyword": "数据管道", - "skills": [ - "data-engineer-expert", - "workflow-automation-expert" - ], - "count": 2 - }, - { - "keyword": "user_id", - "skills": [ - "data-engineer-expert", - "security-expert" - ], - "count": 2 - }, - { - "keyword": "schema设计", - "skills": [ - "database-tuning-expert", - "graphql-architect" - ], - "count": 2 - }, - { - "keyword": "ref", - "skills": [ - "database-tuning-expert", - "vue-expert" - ], - "count": 2 - }, - { - "keyword": "error", - "skills": [ - "debugger-expert", - "plan-ceo-review" - ], - "count": 2 - }, - { - "keyword": "日志", - "skills": [ - "debugger-expert", - "devops-expert" - ], - "count": 2 - }, - { - "keyword": "cors", - "skills": [ - "debugger-expert", - "websocket-engineer" - ], - "count": 2 - }, - { - "keyword": "scope", - "skills": [ - "design-review", - "qa" - ], - "count": 2 - }, - { - "keyword": "typography", - "skills": [ - "design-review", - "ui-ux-pro-max" - ], - "count": 2 - }, - { - "keyword": "ai slop", - "skills": [ - "design-review", - "frontend-design" - ], - "count": 2 - }, - { - "keyword": "`\r\n- `", - "skills": [ - "design-review", - "ship" - ], - "count": 2 - }, - { - "keyword": "lazy", - "skills": [ - "design-review", - "performance-expert" - ], - "count": 2 - }, - { - "keyword": "yyyy-mm-dd", - "skills": [ - "design-review", - "qa" - ], - "count": 2 - }, - { - "keyword": "", - "skills": [ - "design-review", - "qa" - ], - "count": 2 - }, - { - "keyword": ": [{", - "skills": [ - "design-review", - "devops-expert" - ], - "count": 2 - }, - { - "keyword": "deferred", - "skills": [ - "design-review", - "qa" - ], - "count": 2 - }, - { - "keyword": "improve", - "skills": [ - "design-review", - "qa" - ], - "count": 2 - }, - { - "keyword": "dialog", - "skills": [ - "designer-expert", - "frontend-expert" - ], - "count": 2 - }, - { - "keyword": "自动化", - "skills": [ - "devops-expert", - "workflow-automation-expert" - ], - "count": 2 - }, - { - "keyword": "dist/main.js", - "skills": [ - "devops-expert", - "devsecops-expert" - ], - "count": 2 - }, - { - "keyword": "production", - "skills": [ - "devops-expert", - "land-and-deploy" - ], - "count": 2 - }, - { - "keyword": "甘特图", - "skills": [ - "diagram-as-code-expert", - "project-coordinator" - ], - "count": 2 - }, - { - "keyword": "roi", - "skills": [ - "finance-advisor", - "growth-hacker" - ], - "count": 2 - }, - { - "keyword": "providers", - "skills": [ - "flutter-expert", - "terraform-engineer" - ], - "count": 2 - }, - { - "keyword": "flutter", - "skills": [ - "flutter-expert", - "ui-ux-pro-max" - ], - "count": 2 - }, - { - "keyword": "react", - "skills": [ - "frontend-expert", - "ui-ux-pro-max" - ], - "count": 2 - }, - { - "keyword": "vue", - "skills": [ - "frontend-expert", - "ui-ux-pro-max" - ], - "count": 2 - }, - { - "keyword": "vue3", - "skills": [ - "frontend-expert", - "vue-expert" - ], - "count": 2 - }, - { - "keyword": "next.js", - "skills": [ - "frontend-expert", - "nextjs-developer" - ], - "count": 2 - }, - { - "keyword": "svelte", - "skills": [ - "frontend-expert", - "ui-ux-pro-max" - ], - "count": 2 - }, - { - "keyword": "pinia", - "skills": [ - "frontend-expert", - "vue-expert" - ], - "count": 2 - }, - { - "keyword": "composition api", - "skills": [ - "frontend-expert", - "vue-expert" - ], - "count": 2 - }, - { - "keyword": "ssr", - "skills": [ - "frontend-expert", - "vue-expert" - ], - "count": 2 - }, - { - "keyword": "hydration", - "skills": [ - "frontend-expert", - "vue-expert" - ], - "count": 2 - }, - { - "keyword": "push", - "skills": [ - "git-operation-master", - "notification-system-expert" - ], - "count": 2 - }, - { - "keyword": "merge", - "skills": [ - "git-operation-master", - "land-and-deploy" - ], - "count": 2 - }, - { - "keyword": "hooks", - "skills": [ - "git-operation-master", - "investigate" - ], - "count": 2 - }, - { - "keyword": "websocket", - "skills": [ - "graphql-architect", - "websocket-engineer" - ], - "count": 2 - }, - { - "keyword": "抖音", - "skills": [ - "growth-hacker", - "social-media-manager" - ], - "count": 2 - }, - { - "keyword": "小红书", - "skills": [ - "growth-hacker", - "social-media-manager" - ], - "count": 2 - }, - { - "keyword": "checkout", - "skills": [ - "gstack", - "ui-ux-pro-max" - ], - "count": 2 - }, - { - "keyword": "arc", - "skills": [ - "gstack", - "swift-expert" - ], - "count": 2 - }, - { - "keyword": "home", - "skills": [ - "gstack", - "mobile-expert" - ], - "count": 2 - }, - { - "keyword": "模式", - "skills": [ - "guardian", - "project-audit-expert" - ], - "count": 2 - }, - { - "keyword": "- matcher:", - "skills": [ - "guardian", - "investigate" - ], - "count": 2 - }, - { - "keyword": "权重", - "skills": [ - "investor-review-guide", - "reviewer-expert" - ], - "count": 2 - }, - { - "keyword": "维度", - "skills": [ - "investor-review-guide", - "ultimate-code-expert" - ], - "count": 2 - }, - { - "keyword": "deploy", - "skills": [ - "land-and-deploy", - "ship" - ], - "count": 2 - }, - { - "keyword": "plan-ceo-review", - "skills": [ - "land-and-deploy", - "plan-ceo-review" - ], - "count": 2 - }, - { - "keyword": "plan-design-review", - "skills": [ - "land-and-deploy", - "plan-design-review" - ], - "count": 2 - }, - { - "keyword": "release", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "no_config", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "platform:fly", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "platform:render", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "platform:vercel", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "platform:netlify", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "platform:heroku", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "platform:railway", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "$f", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "deploy_workflow:$f", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "%{http_code}", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "ok", - "skills": [ - "mcp-probe", - "workflow-automation-expert" - ], - "count": 2 - }, - { - "keyword": "file-based routing", - "skills": [ - "nextjs-developer", - "vue-expert" - ], - "count": 2 - }, - { - "keyword": "tr '/' '-'", - "skills": [ - "plan-ceo-review", - "plan-eng-review" - ], - "count": 2 - }, - { - "keyword": "complexity", - "skills": [ - "plan-ceo-review", - "plan-design-review" - ], - "count": 2 - }, - { - "keyword": "system audit", - "skills": [ - "plan-ceo-review", - "plan-design-review" - ], - "count": 2 - }, - { - "keyword": "step 0", - "skills": [ - "plan-ceo-review", - "plan-design-review" - ], - "count": 2 - }, - { - "keyword": "todos.md updates", - "skills": [ - "plan-ceo-review", - "plan-design-review" - ], - "count": 2 - }, - { - "keyword": "unresolved decisions", - "skills": [ - "plan-ceo-review", - "plan-eng-review" - ], - "count": 2 - }, - { - "keyword": "engineered enough", - "skills": [ - "plan-ceo-review", - "plan-eng-review" - ], - "count": 2 - }, - { - "keyword": "$design", - "skills": [ - "plan-ceo-review", - "plan-eng-review" - ], - "count": 2 - }, - { - "keyword": "no design doc found,", - "skills": [ - "plan-ceo-review", - "plan-eng-review" - ], - "count": 2 - }, - { - "keyword": "prompt/llm changes", - "skills": [ - "plan-ceo-review", - "plan-eng-review" - ], - "count": 2 - }, - { - "keyword": "do nothing", - "skills": [ - "plan-ceo-review", - "plan-eng-review" - ], - "count": 2 - }, - { - "keyword": "critical_gaps", - "skills": [ - "plan-ceo-review", - "plan-eng-review" - ], - "count": 2 - }, - { - "keyword": "mode", - "skills": [ - "plan-ceo-review", - "plan-eng-review" - ], - "count": 2 - }, - { - "keyword": "免费", - "skills": [ - "pricing-strategist", - "sales-consultant" - ], - "count": 2 - }, - { - "keyword": "typescript", - "skills": [ - "project-audit-expert", - "typescript-pro" - ], - "count": 2 - }, - { - "keyword": "python", - "skills": [ - "project-audit-expert", - "python-pro" - ], - "count": 2 - }, - { - "keyword": "为什么", - "skills": [ - "prompt-optimizer", - "tech-lead-mentor" - ], - "count": 2 - }, - { - "keyword": "accessibility", - "skills": [ - "qa", - "ui-ux-pro-max" - ], - "count": 2 - }, - { - "keyword": "severity", - "skills": [ - "qa", - "ship" - ], - "count": 2 - }, - { - "keyword": "it renders", - "skills": [ - "qa", - "ship" - ], - "count": 2 - }, - { - "keyword": "it doesn't throw", - "skills": [ - "qa", - "ship" - ], - "count": 2 - }, - { - "keyword": "powershell", - "skills": [ - "regex-shell-wizard", - "workflow-automation-expert" - ], - "count": 2 - }, - { - "keyword": "grep -v node_modules", - "skills": [ - "retro", - "ship" - ], - "count": 2 - }, - { - "keyword": "code review", - "skills": [ - "review", - "reviewer-expert" - ], - "count": 2 - }, - { - "keyword": "auto_fixed", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "codex_available", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "codex_not_available", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "run all passes", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "paranoid review", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "full adversarial", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "do all 4 passes", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "thorough review", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "medium tier", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "large tier", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "$tmperr_adv", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "auth", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "unauthorized", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "api key", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "- **timeout:**", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "adversarial-review", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "source", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "codex", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "claude", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "large", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "both", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "informational", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "自动化工作流", - "skills": [ - "sales-consultant", - "workflow-automation-expert" - ], - "count": 2 - }, - { - "keyword": "swiftui", - "skills": [ - "swift-expert", - "ui-ux-pro-max" - ], - "count": 2 - } - ] -} +{ + "generated": "2026-04-27T09:30:28.917Z", + "version": "v6.6.0", + "skillCount": 95, + "skills": [ + { + "name": "ai-ml-expert", + "description": "AI/机器学习专家。当用户需要 PyTorch、TensorFlow、深度学习、神经网络、 NLP 自然语言处理、CV 计算机视觉、LLM 大语言模型、RAG 检索增强、 Prompt Engineering、模型微调 Fine-tuning、Agent 开发、Hugging Face、 LangChain,或说 \"机器学习\"、\"AI\"、\"模型训练\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "ai", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "机器学习", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "深度学习", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "神经网络", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "模型训练", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pytorch", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tensorflow", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "keras", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "transformers", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scikit-learn", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "文本分类", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ner", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "文本生成", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "语义搜索", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "embedding", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "图像分类", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "目标检测", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "分割", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ocr", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "yolo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "llm", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "gpt", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bert", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "llama", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "qwen", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "chatgpt", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "大模型", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rag", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "agent", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "langchain", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "prompt engineering", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "微调", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lora", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "xgboost", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lightgbm", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "分类", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "回归", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "聚类", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "特征工程", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术栈", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "集成学习", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cnn", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rnn/lstm", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "transformer", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "gan", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fine-tuning", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "训练", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "评估", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "监控", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "推荐模型", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "catboost", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "roberta", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "中文用 bert-wwm", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "gpt系列", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bert+crf", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "globalpointer", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "resnet", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "efficientnet", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "vit", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "yolov8", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rt-detr", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "u-net", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "deeplabv3+", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "embedding + vectordb + llm", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "指标", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "auc", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "f1", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "precision", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "recall", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "accuracy", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "macro-f1", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "confusion matrix", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mse", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mae", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "r²", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mape", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "entity-level f1", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bleu", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rouge", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "perplexity", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "map", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "iou", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bert-base-chinese", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "你好世界", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pt", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "你的问题", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "机器学习专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "自然语言处理", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "计算机视觉", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "大语言模型", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "检索增强", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "模型微调", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "nlp", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "hugging face", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "monitoring", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + } + ] + }, + { + "name": "ai-philosophy-expert", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "ai 伦理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai 道德", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "算法伦理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "伦理审查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ethical ai", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "responsible ai", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "对齐", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "价值对齐", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "alignment", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "value alignment", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rlhf", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "偏见审计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "算法公平", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "歧视", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fairness", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bias audit", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "可解释性", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "透明度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "黑箱", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "xai", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "explainability", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai 治理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai 合规", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai 法规", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai governance", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "eu ai act", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai 哲学", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "意识", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "涌现", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "中文房间", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "philosophy of ai", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "人机交互", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "拟人化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "过度依赖", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "anthropomorphism", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai 风险", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "长期风险", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "奇点", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai risk", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "x-risk", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "设计要求", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai 能触发哪些不可逆动作?", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "地区", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "分级标注 + 解释模块", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "中国", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动化决策告知+拒绝权", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "gdpr art.22", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "决策解释 api + 人工审查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "风险", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "风险项", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "等级", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "🟡 应当改进", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "本技能提供", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "架构方案", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "技术约束", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "道德影响评估", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "道德红线", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai-ml-expert", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "交互方案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "用户流程", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "隐私分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "权限哲学", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai伦理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai哲学", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "负责任ai", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai治理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "architecture", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.06 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "angular-architect", + "description": "Angular 架构专家。当用户需要 Angular 17+ standalone 组件、Signals、RxJS 响应式编程、NgRx 状态管理、Angular 路由、Angular 性能优化、企业级 Angular 应用,或说 \"Angular\"、\"RxJS\"、\"NgRx\" 时使用此技能。", + "maturity": "imported", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "standalone components", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "signals", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "input/output", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ngrx", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "router config", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "guards", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lazy loading", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "resolvers", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "angular", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "rxjs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "架构专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "组件", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.43 + }, + { + "keyword": "响应式编程", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "状态管理", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "路由", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "性能优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.21 + }, + { + "keyword": "企业级", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "应用", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "standalone", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "architecture", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.06 + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.91 + }, + { + "keyword": "routing", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 2.08 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.02 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "api-designer", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "resource design", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "http methods", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "hateoas", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pagination", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "error responses", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rfc 7807", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "status codes", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "api设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "openapi", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "接口规范", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "interface", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "api-integration-specialist", + "description": "API 集成与第三方对接专家。当用户需要支付集成(Stripe/微信支付/支付宝)、 OAuth2/OIDC 身份认证、Webhook 处理、第三方 API 对接、 AI API 集成(OpenAI/Claude)、幂等性设计, 或说 \"支付对接\"、\"OAuth\"、\"Webhook\"、\"API集成\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "stripe", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "paypal", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "微信支付", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "支付宝", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "支付对接", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "支付回调", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "oauth2", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "oidc", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sso", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "jwt", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "api签名", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "hmac", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "openai", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "claude api", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "aws s3", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "阿里云oss", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "短信接口", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "地图api", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "webhook", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "幂等性", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "重试机制", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "限流", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "回调", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "熔断", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "oauth", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "api集成", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "网络超时重试", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "webhook 重复推送", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "验证时间戳,拒绝过期请求", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "集成与第三方", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "对接专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要支", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "付集成", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "身份认证", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "第三方", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "对接", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "集成", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "幂等性设计", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "api", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "ai api", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "claude", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "interface", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + }, + { + "keyword": "钩子", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "architect-expert", + "description": "系统架构师与CTO规划专家。当用户需要系统架构设计、技术选型、API 设计、数据库设计、 分布式系统、微服务架构、高可用高并发、DDD 领域驱动、技术方案、ER 图、架构图、 CTO 规划、黄金路径、平台工程、技术战略、团队拓扑、技术路线图、ADR 架构决策, 或说 \"架构\"、\"系统设计\"、\"技术选型\"、\"CTO规划\"、\"技术战略\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "架构设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "系统设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "架构方案", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "技术架构", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "架构图", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "system design", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "architecture", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.12 + }, + { + "keyword": "software architecture", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术选型", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "框架选择", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术栈", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "技术对比", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术方案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tech stack", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "technology selection", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "api 设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "接口设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据流", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "restful", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "graphql", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "api design", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据库设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "表结构", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "er 图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据模型", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "schema", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "database design", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "分布式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "微服务", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "高可用", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "高并发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "扩展性", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "负载均衡", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "distributed system", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "high availability", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scalability", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "microservices", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ddd", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cqrs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "事件驱动", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "领域驱动", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "clean architecture", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "domain driven design", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cto规划", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术战略", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "黄金路径", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "平台工程", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "团队拓扑", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "adr", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "technical strategy", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "platform engineering", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "推荐方案", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "go (gin) / rust (axum)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "java (spring boot)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "postgresql", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "redis", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "kafka / rabbitmq", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "next.js (app router)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "架构", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "最终", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自然成立", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "选择的方案及理由", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "系统架构师与", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "规划专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要系", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "统架构设计", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "分布式系统", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "微服务架构", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "高可用高并发", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "规划", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "技术路线图", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "架构决策", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "cto", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "api", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "load balancing", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 2.08 + }, + { + "keyword": "interface", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "backend-builder", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "后端", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "后端开发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "服务端", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "api开发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "node.js", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "express", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fastapi", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "nestjs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "django", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "go", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "gin", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "微服务", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "grpc", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "protobuf", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "microservice", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "postgresql", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "mysql", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mongodb", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "redis", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "restful", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "graphql", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "api设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "api", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "数据库", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "database", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + }, + { + "keyword": "backend", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "benchmark", + "description": "Performance regression detection using the browse daemon. Establishes baselines for page load times, Core Web Vitals, and resource sizes. Compares before/after on every PR. Tracks performance trends o", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "20kb there", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "baseline", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "compare", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "/dashboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "performance", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.82 + }, + { + "keyword": "benchmark", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "page speed", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lighthouse", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "web vitals", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bundle size", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "load time", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "[ -n", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && [ -x", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && b=", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "[ -z", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "$b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "ready: $b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "needs_setup", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "slug=unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "$b eval", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "url", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "timestamp", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pages", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": ": {", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": ": 120,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 450,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 800,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 600,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 1200,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 1400,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 42,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 1250000,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 450000,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 85000,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": [\n {", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 320000,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 180},\n {", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 130000,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "domcomplete - navigationstart", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "loadeventend - navigationstart", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "using the browse", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "daemon. establishes baselines", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "for page load", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "times", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "core web vitals", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "and resource sizes.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "compares before", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "after on every", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "pr. tracks performance", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "trends over time.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "use when", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "性能", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + } + ] + }, + { + "name": "browse", + "description": "Fast headless browser for QA testing and site dogfooding. Navigate any URL, interact with elements, verify page state, diff before/after actions, take annotated screenshots, check responsive layouts, ", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "onclick", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$b snapshot -a -o", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "or $b responsive", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "complex auth", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "multi-factor login)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "localstorage", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "links", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "@e2", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "@c2", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "...). after snapshot", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "### reading", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "### interaction", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "--load>", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "command", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "attrs ", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tabs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "handoff [message]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "restart", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "resume", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "stop", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "open in browser", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "take a screenshot", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "dogfood this", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test the\n site", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "[ -n", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && [ -x", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && b=", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "[ -z", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "$b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "ready: $b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "needs_setup", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": ".main-content", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user@test.com", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "password", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": ".dashboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": ".modal", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#submit-btn", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#agree-checkbox", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#name-field", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#search-input", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#file-input", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ".upload-success", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#delete-button", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "done", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "value", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "color", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "welcome", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "email", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "submit", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "text → href", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "cmd", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "arg1", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "fast headless browser", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "for qa testing", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and site dogfooding.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "navigate any url", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "interact with elements", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "verify page state", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "diff before", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "after actions", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "take annotated screenshots", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "check responsive layouts", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "test forms and", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "uploads", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "handle dialogs", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and assert element", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "states.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ms per command.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "use when you", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "need to test", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "a feature", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "verify a deployment", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "dogfood a user", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "flow", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "or file a", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "bug with evidence.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "use when asked", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "test the site", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "部署", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.27 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "认证", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + } + ] + }, + { + "name": "browser-automation-expert", + "description": "浏览器自动化专家。当用户需要浏览器自动化、网页抓取、Web Scraping、 RPA 流程、爬虫开发、Playwright/Selenium 脚本编写, 或说 \"自动化浏览器\"、\"网页抓取\"、\"爬取页面\" 时使用此技能。 仅纯自动化/抓取/RPA/数据采集场景使用本技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash", + "mcp__playwright", + "mcp__chrome-devtools", + "mcp__selenium", + "mcp__browserbase", + "mcp__firecrawl", + "mcp__mobile", + "mcp__scrapling" + ], + "keywords": [ + { + "keyword": "playwright(自动化)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "selenium(自动化)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "browserbase", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "stagehand", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cdp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scrapling", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "浏览器自动化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "网页自动化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动化脚本", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "rpa", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "自动填表", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "网页抓取", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "web scraping", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "爬虫", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据采集", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "页面提取", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "反检测抓取", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "网页截图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "页面监控", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "页面快照", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "视觉回归", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "headless", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "无头模式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "chrome devtools protocol", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cloudflare绕过", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "waf绕过", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "反检测", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "stealth抓取", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "指纹伪装", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "打开网页", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "e2e测试", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "填表单", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "上传文件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "browser_navigate", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "browser_click", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "browser_snapshot", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "browser_fill_form", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "调试页面", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "执行js", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "抓网络请求", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "性能分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "内存快照", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "控制台日志", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "evaluate_script", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "devtools", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "云浏览器", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "远程浏览器", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "智能提取页面", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai操作网页", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "stagehand_act", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "stagehand_extract", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "爬取网站", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "抓取页面", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "提取数据", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "站点地图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "批量采集", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "firecrawl_scrape", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "firecrawl_crawl", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "firecrawl_search", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "python爬虫", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "抓取解析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动化浏览器", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "爬取页面", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "测试", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.33 + }, + { + "keyword": "性能", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.42 + }, + { + "keyword": "bug/报错", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "点击登录按钮", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "输入用户名", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "markdown", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "html", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "text", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "当用户需要浏", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "览器自动化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "流程", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "爬虫开发", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "脚本编写", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "仅纯自动化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "抓取", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "数据采集场景", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "使用本技能", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "playwright", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "selenium", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "test", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.91 + }, + { + "keyword": "monitoring", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + }, + { + "keyword": "log", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + }, + { + "keyword": "debug", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + } + ] + }, + { + "name": "business-plan-skill", + "description": "商业计划书撰写专家。当用户需要撰写 BP 商业计划书、创业计划、融资材料、融资 PPT、 公司介绍、项目介绍、商业模式设计、商业画布、单位经济模型, 或说 \"写BP\"、\"商业计划书\"、\"融资材料\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write" + ], + "keywords": [ + { + "keyword": "商业计划书", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "写bp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "融资材料", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bp", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "创业计划", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "融资ppt", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "投资人材料", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "商业模式", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "商业画布", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "盈利模式", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "公司介绍", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "项目介绍", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "团队介绍", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "关键论点要有数据佐证", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "商业计划书撰", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "写专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要撰", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "融资", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "商业模式设计", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "单位经济模型", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ppt", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + } + ] + }, + { + "name": "canary", + "description": "Post-deploy canary monitoring. Watches the live app for console errors, performance regressions, and page failures using the browse daemon. Takes periodic screenshots, compares against pre-deploy base", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "git log", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "git fetch", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "git merge", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "and gh pr create command", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "take screenshots", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "check console errors", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "/dashboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "monitor deploy", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "canary", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "post-deploy check", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "watch production", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "verify deploy", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "[ -n", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && [ -x", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && b=", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "[ -z", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "$b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "ready: $b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "needs_setup", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "the base branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "the base branch.", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "shipped", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "verified.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "slug=unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "url", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "timestamp", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pages", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": ": {", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": ": 0,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "duration_min", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "alerts", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "post-deploy canary monitoring.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "watches the live", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "app for console", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "errors", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "performance regressions", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and page failures", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "using the browse", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "daemon. takes periodic", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "screenshots", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "compares against pre-deploy", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "baselines", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and alerts on", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "anomalies. use when", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "部署", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.27 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "性能", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + }, + { + "keyword": "监控", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + } + ] + }, + { + "name": "cloud-architect", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "ec2", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "s3", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lambda", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rds", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "well-architected framework", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "gcp services", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "abstraction layers", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "portability", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "vendor lock-in mitigation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "云架构", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "aws", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "gcp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "azure", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "architecture", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.06 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "cloud-native-expert", + "description": "云原生架构师专家。当用户需要 Kubernetes/K8s 集群部署、服务网格 Istio/Linkerd、 GitOps ArgoCD/Flux、Helm 配置、12-Factor App、HPA 自动扩缩容、NetworkPolicy, 或说 \"云原生\"、\"K8s\"、\"服务网格\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "k8s", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "服务网格", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "云原生", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "kubernetes", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "pod", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "deployment", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "statefulset", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "istio", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "linkerd", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "流量管理", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "mtls", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "gitops", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "argocd", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "flux", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "声明式", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "12-factor", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "不可变基础设施", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "微服务", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.65 + }, + { + "keyword": "helm", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "kustomize", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "configmap", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "secret", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "云原生架构师", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "集群部署", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.02 + }, + { + "keyword": "自动扩缩容", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "gitops argocd", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "factor app", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "hpa", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "networkpolicy", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "architecture", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.06 + }, + { + "keyword": "microservice", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "cluster", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 2.08 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "codex", + "description": "OpenAI Codex CLI wrapper — three modes. Code review: independent diff review via codex review with pass/fail gate. Challenge: adversarial mode that tries to break your code. Consult: ask codex anythin", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "tail -1", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "tail -1 - if a diff exists", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "offer to review it - otherwise", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"timestamp\":\"timestamp\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "\"status\":\"status\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "\"gate\":\"gate\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"findings\":n", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "status (\"clean\" if pass", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"issues_found\" if fail)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "gate (\"pass\" or \"fail\")", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\\unresolved\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\critical_gaps\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\mode\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\scope_proposed\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\scope_accepted\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\scope_deferred\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "{scope_accepted} accepted", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\issues_found\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\initial_score\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\overall_score\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\decisions_made\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\gate\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\findings\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "why", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "findings", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "ceo review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "{runs}", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "independent 2nd opinion", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "{findings}", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\/plan-eng-review\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "{status}", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "design review", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "\\\\\\ below the table", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "race conditions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "security holes", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "/codex challenge security)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "resource leaks", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "failure modes", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "auth bypasses", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "privilege escalation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "data exposure", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "python3 -c \" import sys", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "'') text = item.get('text'", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "0) + usage.get('output_tokens'", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "codex review", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "codex challenge", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ask codex", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "second opinion", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "consult codex", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "the base branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "the base branch.", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": ")\n[ -z", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "] && echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "|| echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "$(basename $(pwd))", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "xhigh", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "$tmperr", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "focus on security", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tokens used", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tokens: unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "codex-review", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "timestamp", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "gate", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "findings_fixed", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "clean", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.55 + }, + { + "keyword": "issues_found", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "pass", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "fail", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "eng review required", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "with focus (e.g.,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "):", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "no_session", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "continue", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "\\status\\", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "\\commit\\", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "\\findings_fixed\\", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "openai codex cli", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "wrapper", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "three modes. code", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "review", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "independent diff review", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "via codex review", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "with pass", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "fail gate. challenge", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "adversarial mode that", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "tries to break", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "your code. consult", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ask codex anything", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "with session continuity", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "for follow-ups. the", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "iq autistic developer", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "second opinion. use", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "when asked to", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "安全", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "认证", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + } + ] + }, + { + "name": "copywriter-expert", + "description": "文案与营销内容专家。当用户需要撰写网站文案、广告文案、落地页文案、邮件文案、 产品描述、品牌 Slogan、CTA 行动号召、价值主张提炼, 或说 \"写文案\"、\"广告文案\"、\"落地页\"、\"营销文案\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write" + ], + "keywords": [ + { + "keyword": "文案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "广告文案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "落地页文案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "邮件文案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "网站文案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "产品描述", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "标题", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cta", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "行动号召", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "价值主张", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "slogan", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "品牌口号", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "aida", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pas", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fab", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "文案公式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "营销文案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "推广文案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "转化文案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "品牌文案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "写文案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "落地页", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "赋能", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "生态化反", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "吸引用户注意力", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "激发对产品的兴趣", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "促使用户采取行动", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "渲染问题的严重性", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "给出产品作为解决方案", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "产品是什么", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "为什么比别的更好", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "能为用户带来什么", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[提升注册转化率]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[独立开发者]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[一句话概括]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "1. ... 2. ... 3. ...", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "文案与营销内", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "容专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要撰", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "写网站文案", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "品牌", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "价值主张提炼", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + } + ] + }, + { + "name": "customer-success-expert", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "客户支持", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "售后", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "客服", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "工单", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "帮助中心", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "faq", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "客户成功", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "onboarding", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "客户引导", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "激活率", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "健康度评分", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "续费", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "流失", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "挽回", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "流失预警", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "nrr", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "churn rate", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "满意度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "nps", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "csat", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "客户反馈", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "评价管理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sla", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "响应时间", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "解决时间", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "服务等级", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "服务承诺", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "描述", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "示例", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "服务完全不可用", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "系统宕机", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "核心功能受损", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "支付失败", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "非核心功能异常", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "报表延迟", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "建议与咨询", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "功能建议", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "<50=高风险 ### 流失预警规则", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "检测方式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "使用分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "工单骤增", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "优先处理+回访", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "账务系统", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "有问题随时找我", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "解锁更多价值", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "综合登录频率", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "功能使用深度", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "支持工单量", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + } + ] + }, + { + "name": "data-analyst-expert", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "推荐图表", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "柱状图", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "条形图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "折线图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "面积图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "直方图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "箱线图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "饼图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "堆叠柱状图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "散点图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "热力图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "漏斗图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "桑基图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "当前值", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "可视化", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "用 pandas", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "形状: {df.shape}", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ")\r\n print(f", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pandas", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "a/b测试", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "a-b测试", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "ab测试", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "eda", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "统计分析", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "留存分析", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "numpy", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "matplotlib", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "seaborn", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "plotly", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "sql分析", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据清洗", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据报告", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "商业洞察", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "漏斗分析", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "假设检验", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "清洗", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "转换", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "描述性统计", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "回归分析", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "分类", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.65 + }, + { + "keyword": "回归", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "聚类等基础ml应用", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "test", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "data-engineer-expert", + "description": "数据工程师专家。当用户需要进行数据管道设计、ETL 开发、数据仓库建模、流处理、 Spark/Kafka/Airflow/dbt 使用、维度建模、数据质量, 或说 \"数据工程\"、\"ETL\"、\"数据管道\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "etl", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据管道", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "数据工程", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "useranalytics", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "created_at", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "2024-01-01", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "country", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "revenue", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "total_revenue", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "is_active", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "active_users", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "overwrite", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "users.csv", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user_id", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "email", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "age", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据流", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "数据处理", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据仓库", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据湖", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据集市", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "olap", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "spark", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "kafka", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "airflow", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "dbt", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "flink", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "维度建模", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "星型模型", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "雪花模型", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据质量", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据治理", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据血缘", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "大规模数据处理", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据转换和建模", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "工作流编排", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "消息队列", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "实时流处理", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "轻量流处理", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "云数据仓库", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据湖格式", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "表格式", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据工程师专", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "行数据管道设", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "数据仓库建模", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "流处理", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "使用", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "queue", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 2.08 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "database-tuning-expert", + "description": "数据库调优与设计专家。当用户需要 SQL 优化、索引优化、Explain 分析、 慢查询排查、死锁分析、分库分表、读写分离、Redis 缓存一致性、 数据库架构设计,或说 \"慢查询\"、\"索引\"、\"数据库优化\"、\"死锁\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "慢查询", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sql优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "explain", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "索引优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "全表扫描", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "死锁", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "锁等待", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cpu飙升", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "主从延迟", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "连接池耗尽", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "分库分表", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "读写分离", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "缓存一致性", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "redis", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "tidb", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "schema设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "反范式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "json字段", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "时序数据", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "含义", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "极快", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "主键/唯一索引关联", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ref", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "一般", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "全索引扫描", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "all", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "buffers", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "关注点", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "seq scan", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "理想的访问方式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "位图堆扫描", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "nested loop", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "大表连接优选", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "实际耗时(ms)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rows", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "命中率应 >95%", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "适用场景", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "纯等值查询", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "gin", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "postgis 空间索引", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "物理有序大表", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "策略", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "最终一致", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "延迟双删", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "写入较频繁", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "db变更→mq→更新缓存", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "索引", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "数据库优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "最左前缀", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user:{user_id}", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据库调优与", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "设计专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "慢查询排查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "死锁分析", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "数据库架构设", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "sql", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "database", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + }, + { + "keyword": "architecture", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.06 + }, + { + "keyword": "cache", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + }, + { + "keyword": "index", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "debugger-expert", + "description": "Debug 侦探专家。当用户遇到 Bug、报错、异常、崩溃、问题排查、调试、 错误日志、stack trace、404/500 错误、内存泄漏、性能问题、代码不工作, 或说 \"为什么报错\"、\"这个错误\"、\"帮我调试\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash", + "mcp__chrome-devtools", + "mcp__playwright" + ], + "keywords": [ + { + "keyword": "bug", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "报错", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "error", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "exception", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "crash", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "崩溃", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "debug", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "调试", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "排查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "问题", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "故障", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "定位", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "stack trace", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "traceback", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "日志", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "log", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "错误信息", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "404", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "500", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "502", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "503", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cors", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "跨域", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "内存泄漏", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "超时", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "卡死", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "爆窗", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "爆窗现象", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "系统修复", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "上下文溢出", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "context overflow", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "不工作", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "失败", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "undefined", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "null", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "nan", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "常见原因", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "对象未正确初始化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "空值访问", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "无限递归", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "跨域配置问题", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "对象没有该属性", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "字典键不存在", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "缩进不一致", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据库未启动", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "事务锁冲突", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "用途", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "为什么报错", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "这个错误", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "帮我调试", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "侦探专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户遇到", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "异常", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "问题排查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "错误日志", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "错误", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "性能问题", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "代码不工作", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "database", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.91 + }, + { + "keyword": "transaction", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "config", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "design-consultation", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "date", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "initial design system created", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "design system", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "brand guidelines", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no_design_file", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[ -n", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && [ -x", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && b=", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "[ -z", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "$b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "ready: $b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "needs_setup", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "$b screenshot", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "built for x", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "designed for y", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$preview_file", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lorem ipsum", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "same as body", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "i recommend x", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "because y.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "optimal", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + } + ] + }, + { + "name": "design-review", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "parameter", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "(auto-detect or ask)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scope", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "--quick (homepage + 2)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "--deep (10-15 pages)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "none", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "minitest + fixtures + capybara", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "node.js", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "jest + cypress", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "pytest + pytest-cov", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "go", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "phpunit + mockery", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "elixir", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "integration", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "smoke", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "spec/", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "sort -rn", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "category", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "visual hierarchy", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "typography", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "spacing & layout", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "color & contrast", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "interaction states", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "responsive", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "content quality", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai slop", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "motion", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "performance feel", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "audit the design", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "visual qa", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ", or", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "[ -n", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && [ -x", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && b=", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "[ -z", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "$b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "ready: $b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "needs_setup", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "runtime:ruby", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:node", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:python", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:go", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:rust", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:php", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:elixir", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "rails", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "framework:rails", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "next", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "framework:nextjs", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "bootstrap_declined", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "`\r\n- `", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "ci:github", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "mkdir -p", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "$b responsive", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "no items.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "save api key", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "continue", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "submit", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "install the cli", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "saving…", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "saving...", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "welcome to [x]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lazy", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "date", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "yyyy-mm-dd", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "url", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "designscore", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": {", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": ", ... },", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": [{", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "i notice...", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ")\r\n-", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "— question (e.g.,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "work.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "— not", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "quick wins", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "not broken.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "deferred", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "improve", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "re-test confirms the fix works", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "no new errors introduced", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "needs specific browser state)", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "性能", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + } + ] + }, + { + "name": "designer-expert", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "屏幕宽度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "手机竖屏", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "≥ 640px", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "md", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "平板横屏/笔记本", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "≥ 1280px", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "2xl", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ui", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ux", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "关闭对话框", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "dialog", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "dialog-title", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "#main-content", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ui设计", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "ux设计", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "交互设计", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "视觉设计", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "设计系统", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "design tokens", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "组件规范", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "设计规范", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "figma", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "sketch", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "原型设计", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "设计稿", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "用户体验", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "可用性", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "可访问性", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "响应式", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "允许用户犯错并轻松恢复", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "不要一次性展示所有信息", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "component", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 2.08 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "developer-expert", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "英文", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "变量", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "function", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "对象的模板", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "方法", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "parameter", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "异常", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "callback", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "异步操作的结果", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "异步/等待", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "帮我写", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "怎么实现", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "解释一下", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "编程", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "代码", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "怎么写", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "写一个", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "代码问题", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "报错", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "不工作", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "为什么", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.65 + }, + { + "keyword": "怎么做", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "最佳实践", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "推荐方案", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "template", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ] + }, + { + "name": "devops-expert", + "description": "DevOps 专家。当用户需要 CI/CD 配置、GitHub Actions、GitLab CI、Docker 容器化、 Kubernetes/K8s 部署、Nginx 配置、云服务 AWS/阿里云、Prometheus/Grafana 监控、 自动化运维,或说 \"部署\"、\"发布\"、\"Docker\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "devops", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ci/cd", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "流水线", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "镜像构建", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "docker", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "kubernetes", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "k8s", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "部署", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.55 + }, + { + "keyword": "发布", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "上线", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "容器化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "编排", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "github actions", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "gitlab ci", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "jenkins", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动化", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "监控", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "告警", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "prometheus", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "grafana", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "日志", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "aws", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "阿里云", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "云服务", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "serverless", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "node", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "dist/main.js", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "3000:3000", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cmd-shell", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "production", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "letsencrypt-prod", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "dashboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "title", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": ": [\n {", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": [{", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "error rate", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "targets", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "expr", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "response time p95", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.02 + }, + { + "keyword": "自动化运维", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "nginx", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "deploy", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + }, + { + "keyword": "monitoring", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + }, + { + "keyword": "container", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "log", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + }, + { + "keyword": "config", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "devsecops-expert", + "description": "DevSecOps 专家。当用户需要安全左移、SAST/DAST 安全扫描、容器安全、镜像扫描 Trivy、 供应链安全 SBOM、安全流水线、OPA/Gatekeeper 策略、合规审计, 或说 \"DevSecOps\"、\"安全扫描\"、\"容器安全\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "high: y", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "devsecops", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "安全扫描", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "容器安全", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "dist/main.js", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "]\n kinds: [", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "安全左移", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "安全自动化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "sast", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "dast", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "sca", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "镜像扫描", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "运行时安全", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "供应链安全", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "sbom", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "依赖扫描", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "合规", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "审计", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "安全策略", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "当用户需要安", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "全左移", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "安全流水线", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "策略", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "合规审计", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "trivy", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "opa", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "gatekeeper", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + }, + { + "keyword": "container", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "diagram-as-code-expert", + "description": "图表代码化专家。当用户需要 Mermaid、PlantUML、Graphviz 图表, 流程图、时序图、类图、状态图、ER图、甘特图、架构图生成, 或说 \"画图\"、\"生成图表\"、\"可视化\"、\"转成图\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "mermaid", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "plantuml", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "graphviz", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "draw.io", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "流程图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "时序图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "类图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "状态图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "er图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "甘特图", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "架构图", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "c4", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "画图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "生成图表", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "可视化", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "转成图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[] 矩形", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "() 圆角", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "{} 菱形", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "关键路径添加文字说明", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "图表代码化专", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "图表", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "架构图生成", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "architecture", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.06 + } + ] + }, + { + "name": "document-release", + "description": "Post-ship documentation update. Reads all project docs, cross-references the diff, updates README/ARCHITECTURE/CONTRIBUTING/CLAUDE.md to match what shipped, polishes CHANGELOG voice, cleans up TODOS, ", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "update the docs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sync documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "post-ship docs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "the base branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "the base branch.", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "./.git/*", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "./node_modules/*", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "./.gstack/*", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "./.context/*", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "why", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "you can now...", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "refactored the...", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "### for contributors", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "feature a", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "feature b", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "reads all project", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "docs", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "cross-references the diff", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "updates readme", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "architecture", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.06 + }, + { + "keyword": "contributing", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "claude.md to match", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "what shipped", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "polishes changelog voice", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "cleans up todos", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and optionally bumps", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "version. use when", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "asked to", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "proactively suggest after", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "a pr is", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "merged or code", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "is shipped.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "重构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.27 + } + ] + }, + { + "name": "edge-computing-expert", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "edge functions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "边缘计算", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "workers", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cloudflare workers", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "vercel edge", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "deno deploy", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "边缘函数", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "全球部署", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "cdn", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "就近访问", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "边缘数据库", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "turso", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "d1", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "kv", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "database", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + } + ] + }, + { + "name": "email-communicator", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "写邮件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "商务邮件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "冷邮件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "开发信", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "跟进邮件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "催款函", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "合作邀请", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自我介绍", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "项目汇报", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "道歉信", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "感谢信", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "离职交接", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "会议纪要", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "项目周报", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "进度汇报", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "备忘录", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mou", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "异议回复", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "拒绝委婉", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "提需求", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "催进度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "反馈意见", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "英文邮件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "中英双语", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "正式措辞", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "商务英语", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "english", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "邮件结尾", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "感谢您的耐心等待", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "道歉场景", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "please find attached", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "收到,谢谢", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "催促确认", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "催款", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + } + ] + }, + { + "name": "evolution-tracker", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "字段", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ts", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "系统版本 (vx.y)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "summary", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fix_note", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "分类标签数组", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "时间跨度: yyyy-mm-dd → yyyy-mm-dd", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "指标", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "总记录数", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "时间跨度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "版本数", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "修复会话", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "修复文件总数", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "版本", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "触发源", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "柱状图", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "xx%", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "version-bump", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "████", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "出现次数", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "进化追踪", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "evolution", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "系统历史", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "变更时间线", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "版本历史", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "进化日志", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "evolution tracker", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "系统进化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "total=$(wc -l <", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "| tr -d ' ')\r\necho", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "node -e", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "grep -i", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$log", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ls -t", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "... 还有 n 条", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + } + ] + }, + { + "name": "finance-advisor", + "description": "一人公司财务顾问。当用户需要记账方案、现金流管理、税务筹划、个体户/小微企业报税、 成本核算、财务报表分析、利润率计算、报价单制作、应收应付管理, 或说 \"记账\"、\"报税\"、\"现金流\"、\"财务分析\"、\"报价\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "WebSearch" + ], + "keywords": [ + { + "keyword": "记账", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "账目", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "对账", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "流水", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "财务软件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "金蝶", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "用友", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "报税", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "税务筹划", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "增值税", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "个税", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "企业所得税", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "小规模纳税人", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "一般纳税人", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "税负率", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "现金流", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "资金周转", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "应收账款", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "应付账款", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "账期", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "回款", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "财务分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "利润率", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "毛利率", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "净利率", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "roi", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "成本核算", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "盈亏平衡", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "报价单", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "成本估算", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "利润空间", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "报价模板", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "单位", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "小计(¥)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "人天", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "xx", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**¥xx**", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "季度≤30万免增值税", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "1%", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "企业所得税25%", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "个人独资企业", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "部分园区有优惠", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "预计收入", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "累计余额", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "¥xx", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "适合规模", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "推荐场景", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "<10笔/月", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "极简启动", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "个人", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "个人收支", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "个体户", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "需开票", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "小微", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "有会计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "报价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "合规要求", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "优化建议", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "一人公司财务", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "顾问", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要记", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "账方案", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "现金流管理", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "小微企业报税", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "财务报表分析", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "利润率计算", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "报价单制作", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "应收应付管理", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "template", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ] + }, + { + "name": "flutter-expert", + "description": "Flutter 跨平台专家。当用户需要 Flutter/Dart 开发、Widget 架构、状态管理 Riverpod/BLoC、Platform Channel、Flutter 性能优化、Flutter 测试,或说 \"Flutter\"、\"Dart\"、\"Widget\" 时使用此技能。", + "maturity": "imported", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "state management", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "providers", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "notifiers", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "gorouter", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "building ui components", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "const optimization", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "performance", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.82 + }, + { + "keyword": "flutter", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "dart", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "widget", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "跨平台专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 0.75 + }, + { + "keyword": "状态管理", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "性能优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.21 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 0.66 + }, + { + "keyword": "riverpod", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "bloc", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "platform channel", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "test", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + }, + { + "keyword": "architecture", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.06 + }, + { + "keyword": "组件", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "frontend-design", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "ai slop", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "maximalist chaos", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "retro-futuristic", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "organic/natural", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "luxury/refined", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "playful/toy-like", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "editorial/magazine", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "brutalist/raw", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "art deco/geometric", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "soft/pastel", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "industrial/utilitarian", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "performance", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 1.46 + }, + { + "keyword": "accessibility).", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "unique", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "evenly-distributed palettes.", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "noise textures", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "geometric patterns", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "layered transparencies", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "dramatic shadows", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "decorative borders", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "custom cursors", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "and grain overlays.", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "性能", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + } + ] + }, + { + "name": "frontend-expert", + "description": "前端开发专家。当用户需要 React、Vue、Next.js、Nuxt、Svelte 组件开发, 前端页面实现,状态管理(Zustand/Pinia/Redux),Server Components, Tailwind CSS 样式,TypeScript 前端,SSR/SSG,性能优化, 或说 \"前端\"、\"组件\"、\"页面开发\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash", + "mcp__playwright", + "mcp__chrome-devtools" + ], + "keywords": [ + { + "keyword": "react", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "vue", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "vue3", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "next.js", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "nuxt", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "svelte", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "solidjs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "angular", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "前端开发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "组件设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "页面开发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ui实现", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "前端页面", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "zustand", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "pinia", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "redux", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "jotai", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "状态管理", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "composition api", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "tailwind", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "css-in-js", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "样式方案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "响应式设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "前端优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "代码分割", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "懒加载", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ssr", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "ssg", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "hydration", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "typescript 前端", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tsx", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "props", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "泛型组件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "'ghost'; size: 'sm'", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "前端", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "组件", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "dialog", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "modal-title", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "关闭", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "server components", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "actions", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "compiler", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "app router", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "server actions", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "turbopack", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "script setup", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "nuxt content", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "runes", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "react 轻量状态", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "vue 官方推荐", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "服务端状态", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "原子化状态", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "首选", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "组件级隔离", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "开发构建", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "next.js 内置", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "极速编译", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "前端开发专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "组件开发", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "前端页面实现", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "样式", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "性能优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.21 + }, + { + "keyword": "tailwind css", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "typescript", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "frontend", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.91 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "genesis-engine", + "description": "创世纪引擎 - 全生命周期项目协调器。当用户需要从零开始搭建项目、 端到端自动化开发、全生命周期管理、多专家协调, 或说 \"从0开发\"、\"新项目\"、\"创世纪引擎\"、\"全流程开发\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "文件名", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "产品需求文档", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "phase 0", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "测试报告", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "phase 1", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "性能报告", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "phase 3", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "条件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "prd 已获用户批准", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "架构文档已存在", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术选型无冲突", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "构建通过", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "审计评分 >= 7/10", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "核心测试通过", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "无 p0 级安全漏洞", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "无 p0 级 bug", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "代码评审通过", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "部署验证通过", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "测试覆盖率未下降", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "创世纪引擎", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "新项目", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "全流程开发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "从0开发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "通过/approved", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "approved", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "how", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "产品负责人 — 提出愿景", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "审批文档", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "设定优先级", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "管理所有\"how\"", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "协调专家", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "保证质量门通过", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "全生命周期项", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "目协调器", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要从", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "零开始搭建项", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "端到端自动化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "全生命周期管", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "多专家协调", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "test", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + }, + { + "keyword": "deploy", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + }, + { + "keyword": "architecture", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.06 + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.91 + } + ] + }, + { + "name": "git-operation-master", + "description": "Git 操作大师。当用户需要解决 Git 冲突、rebase、cherry-pick、 分支管理、版本回滚、Git 工作流设计、Git LFS、submodule, 或说 \"Git冲突\"、\"回滚\"、\"撤销commit\"、\"分支管理\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "commit", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "push", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "pull", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "clone", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "diff", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "git", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rebase", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "merge", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "cherry-pick", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "stash", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tag", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "conflict", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "reset", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "revert", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "reflog", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "撤销", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "回滚", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "冲突", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "submodule", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "worktree", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lfs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "gitflow", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "hooks", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "分支管理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "命令", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "丢弃未暂存更改", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "git reset head ", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "修改上次提交", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "保留代码在暂存区", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "git revert ", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "git冲突", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "撤销commit", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "临时保存工作现场", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "操作大师", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要解", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "版本回滚", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "工作流设计", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "git lfs", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "rollback", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "钩子", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + } + ] + }, + { + "name": "golang-pro", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "goroutines", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "channels", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "select", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sync primitives", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "generics", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "table-driven tests", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "benchmarks", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fuzzing", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "go语言", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "golang", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "goroutine", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "%w", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "graphql-architect", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "types", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "interfaces", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "unions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "enums", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "input types", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "federation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "real-time updates", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "websocket", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "pub/sub patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rest migration", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "graphql", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "schema设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "apollo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "迁移", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 2.08 + }, + { + "keyword": "接口", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "growth-hacker", + "description": "增长黑客与用户增长专家。当用户需要用户增长策略、AARRR 漏斗优化、 私域流量运营、A/B 测试、增长实验、转化率优化 CRO、裂变营销、 内容营销、渠道策略,或说 \"增长\"、\"拉新\"、\"私域\"、\"转化率\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write" + ], + "keywords": [ + { + "keyword": "用户增长", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "aarrr", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "增长漏斗", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "私域流量", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "增长黑客", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "a/b测试", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "增长实验", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cro", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "转化率优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "内容营销", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "微信生态", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "抖音", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "小红书", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "裂变", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "dau", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mau", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "留存率", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "转化率", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ltv", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cac", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "roi", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "增长", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "拉新", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "私域", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "如何让用户反复回来?", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "如何让用户主动推荐?", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "如何实现商业变现?", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[activation / retention]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[新方案]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[留存率等]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "增长黑客与用", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "户增长专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要用", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "户增长策略", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "漏斗优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "私域流量运营", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 0.66 + }, + { + "keyword": "裂变营销", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "渠道策略", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "test", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + } + ] + }, + { + "name": "gstack", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "login sessions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$b snapshot -a -o", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "or $b responsive", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "signup", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "checkout", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "800", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"https://app.example.com\"]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[\"snapshot\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"-i\"]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[\"fill\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"@e3\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"test@test.com\"]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"@e4\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"password\"]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[\"click\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"@e5\"]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"-d\"]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[\"screenshot\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"/tmp/result.png\"] ]'", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "description", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "history back", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "history forward", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "navigate to url", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "reload page", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "print current url", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "full aria tree", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "form fields as json", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "all links as \"text → href\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cleaned page text", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "click element", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "import cookies from json file", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "import cookies from comet", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "chrome", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "arc", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "brave", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "or edge (opens picker", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "auto-dismiss next dialog", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fill input", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "hover element", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "press key — enter", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tab", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "escape", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "arrowup/down/left/right", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "backspace", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "delete", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "home", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "end", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pageup", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pagedown", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "or modifiers like shift+enter", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scroll element into view", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "label", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "or visible text", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "type into focused element", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "upload file(s)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "set user agent", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "set viewport size", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "--networkidle", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "### inspection", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "element attributes as json", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "--errors]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cookies", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "css ", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "dialog [--clear]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "eval ", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "is ", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "js ", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "network [--clear]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "perf", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "storage [set k v]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "command", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "diff ", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pdf [path]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "responsive [prefix]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "h] [selector", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "### snapshot", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "### meta", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "### tabs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "### server", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "be proactive again", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "turn on suggestions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$$-$(date +%s)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "gstack", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ts", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "repo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "'$(basename", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_pf", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_session_id", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill_name", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_tel_dur", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "outcome", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "used_browse", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[ -n", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && [ -x", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && b=", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "[ -z", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "$b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "ready: $b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "needs_setup", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "test@example.com", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "password123", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ".dashboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "document.title", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ".hero-section", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ".success-toast", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "#next-step-btn", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "#agree-checkbox", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#hero-banner", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ".upload-success", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": ".error-message", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "valid input", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "#delete-button", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "my answer", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "#rename-button", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "goto", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "],\r\n [", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "-i", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fill", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "@e3", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test@test.com", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "@e4", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "password", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "click", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "@e5", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "snapshot", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "-d", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "screenshot", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "/tmp/result.png", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ".modal", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#submit-btn", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#agree", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "#name-field", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#search-input", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#logo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ".button", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "background-color", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "value", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "color", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "welcome", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "email", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "submit", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "text → href", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "cmd", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "arg1", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + } + ] + }, + { + "name": "guardian", + "description": "统一安全守护技能。整合 freeze (目录编辑限制)、careful (破坏性命令警告)、 unfreeze (解除限制) 和 guard (全量安全模式) 四项能力为单一入口。 支持子命令: /guardian freeze [dir], /guardian unfreeze, /guardian careful, /guardian status。 触发词: \"guardian\", \"安全守", + "maturity": "stable", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "子命令", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"freeze\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"冻结\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"限制编辑\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"restrict\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "unfreeze", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "启用破坏性命令警告", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"status\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"状态\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "无参数", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "模式", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "rm -rf /var/data", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "drop table/database", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据丢失", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "git push -f origin main", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "git reset --hard", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "生产影响", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "docker system prune -a", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "解除限制", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "安全守护", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "freeze", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "careful", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "guardian", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "guard mode", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "restrict edits", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "safety mode", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lock down", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bash", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "- matcher:", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "冻结", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "限制编辑", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "restrict", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "解冻", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "unlock", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "小心模式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "safety", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "谨慎", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "状态", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$freeze_dir", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "${freeze_dir%/}/", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mkdir -p", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "```\n\n告知用户:", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "if [ -f", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ")\n rm -f", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "else\n echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "]; then\n echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fi\necho", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "统一安全守护", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "技能", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "整合", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "目录编辑限制", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "破坏性命令警", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "全量安全模式", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "四项能力为单", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "一入口", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "支持子命令", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "触发词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.35 + }, + { + "keyword": "guard", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "guardian freeze", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "dir", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "guardian unfreeze", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "guardian careful", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "guardian status", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + }, + { + "keyword": "数据库", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + } + ] + }, + { + "name": "handoff", + "description": "上下文交接技能。在上下文压力达到 CRITICAL 或用户主动调用时, 自动捕获当前会话进度、关键决策和待办事项,写入 .bookworm-progress.md, 生成下一会话的继续提示词,并清理过期 handoff 文件。 触发词: handoff, 交接, 保存进度, 上下文交接, context handoff, save progress", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Bash", + "Write", + "Edit" + ], + "keywords": [ + { + "keyword": "(非 git 仓库)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "业务锁定", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "已完成", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "待办", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "继续提示词", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "外部依赖", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "待确认项", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "需要用户输入的项", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "上下文交接技", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "在上下文压力", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "达到", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "或用户主动调", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "用时", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "自动捕获当前", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "会话进度", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "关键决策和待", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "办事项", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "写入", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "生成下一会话", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "的继续提示词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "并清理过期", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "文件", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "触发词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.35 + }, + { + "keyword": "交接", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "保存进度", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "上下文交接", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "critical", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "handoff", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "context handoff", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "save progress", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + } + ] + }, + { + "name": "impact-analyst", + "description": "影响范围分析师。当用户需要代码变更影响评估、依赖分析、调用链追踪、 爆炸半径分析、API 契约检查、副作用检查, 或说 \"影响范围\"、\"改这个有啥影响\"、\"依赖分析\"、\"谁在用这个\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "改这个有啥影响", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "被哪里引用了", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "谁在用这个函数", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "评估风险", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "影响范围", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "依赖分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "调用链", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "爆炸半径", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "检查副作用", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "依赖检查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "死代码检测", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "类型", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "谁在用这个", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "应该没事", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "影响范围分析", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要代", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "码变更影响评", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "调用链追踪", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "爆炸半径分析", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "契约检查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "副作用检查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "改这个有啥影", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "api", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + } + ] + }, + { + "name": "industry-research-cn", + "description": "中国行业深度研究与市场分析技能。当用户需要进行行业调研、市场规模测算、 竞争格局分析、投资可行性研究、竞品分析、PESTLE 分析时使用此技能。 触发词:行业研究、市场调研、竞争格局、TAM/SAM/SOM、竞品分析、 industry research、market analysis。优先引用权威资料。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "WebFetch", + "WebSearch" + ], + "keywords": [ + { + "keyword": "竞争分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "模块", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "法律法规", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "产业政策", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "标准体系", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**需交叉验证**", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "分类", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "特征", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "演进", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "l10-l12", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cr5/hhi", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "波特五力", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "8. 市场机会识别", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "综合", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "来源类型", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "最高", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "政府报告", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术白皮书", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**l7-l9**", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "国际机构", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "学术论文", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "媒体报道", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "` `", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "业内人士透露", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "事实", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "观点", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "标准", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "官方统计", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "兼顾投资", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "创业", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "战略咨询多场景需求", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "中国行业深度", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "研究与市场分", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "析技能", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "行行业调研", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "市场规模测算", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "竞争格局分析", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "投资可行性研", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "竞品分析", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "分析时使用此", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "技能", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "触发词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.35 + }, + { + "keyword": "行业研究", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "市场调研", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "竞争格局", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "优先引用权威", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "资料", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "pestle", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "tam", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "sam", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "som", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "industry research", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "market analysis", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + } + ] + }, + { + "name": "investigate", + "description": "Systematic debugging with root cause investigation. Four phases: investigate, analyze, hypothesize, implement. Iron Law: no fixes without root cause. Use when asked to \"debug this\", \"fix this bug\", \"w", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "pattern", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "intermittent", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "timing-dependent", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "nil/null propagation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "transactions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "callbacks", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "hooks", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "timeout", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "unexpected response", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "configuration drift", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "redis", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "cdn", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "browser cache", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "turbo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "debug this", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fix this bug", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "why is this broken", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ", or", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "edit", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "- matcher:", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "] && echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "|| echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "mkdir -p", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "quick fix for now", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "for now.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "this should fix it.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "systematic debugging with", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "root cause investigation.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "four phases", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "investigate", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "analyze", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "hypothesize", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "implement. iron law", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "no fixes without", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "root cause. use", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "when asked to", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "why is this", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "broken", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "investigate this error", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "root cause analysis", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "proactively suggest when", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "the user reports", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "errors", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "unexpected behavior", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "or is troubleshooting", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "why something stopped", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "working.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "缓存", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "调试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "事务", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 2.08 + }, + { + "keyword": "钩子", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.02 + } + ] + }, + { + "name": "investor-review-guide", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "权重", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "tam/sam/som", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "增长趋势", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "竞争格局", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "25%", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "团队", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "盈利模式", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "单位经济", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "可扩展性", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "5%", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "维度", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "加权分", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "30%", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "产品力", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "15%", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "财务", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "投资", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "尽调", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "评估项目", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "投资评估", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "投资建议", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "风险投资", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "vc", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "商业计划", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "bp", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "bp评审", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "项目评估", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "尽职调查", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "dd", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "估值", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "估值分析", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "融资", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "融资轮次", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + } + ] + }, + { + "name": "kubernetes-specialist", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "deployments", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "statefulsets", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "daemonsets", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "jobs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cronjobs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "configuration", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pv", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pvc", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "storageclasses", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "csi drivers", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "troubleshooting", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "crd", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "operator sdk", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "controller-runtime", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "reconciliation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "gitops", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "vpa", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "hpa tuning", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "spot instances", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "quotas", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "right-sizing", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "k8s部署", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "helm", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "k8s排错", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.02 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "land-and-deploy", + "description": "Land and deploy workflow. Merges the PR, waits for CI and deploy, verifies production health via canary checks. Takes over after /ship creates the PR. Use when: \"merge\", \"land\", \"deploy\", \"merge and v", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "git log", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "git fetch", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "git merge", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "and gh pr create command", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "deploy", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "wait intelligently", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "verify thoroughly", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "wait for deploy", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "state", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "title", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "url", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "mergestatestatus", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mergeable", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "baserefname", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "build a readiness report", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "plan-ceo-review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "plan-design-review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "design-review-lite", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "\"refactor\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"rewrite\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"overhaul\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "head -5 if found", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "grep -i \"production.*url\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "grep -i \"platform\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "release", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "diff scope", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scope_docs only", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scope_config only", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scope_backend only", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scope_frontend (any)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mixed scopes", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "merge", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "land", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "merge and verify", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "land it", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "production", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "[ -n", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && [ -x", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && b=", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "[ -z", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "$b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "ready: $b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "needs_setup", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "the base branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "the base branch.", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "fix", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "refactor", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "rewrite", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "overhaul", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "docs:", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "- if e2e not run:", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "no_config", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "$deploy_config", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "production.*url", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "platform", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "platform:fly", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "platform:render", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "platform:vercel", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "platform:netlify", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "platform:heroku", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "platform:railway", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "$f", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "deploy_workflow:$f", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "staging", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cd", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "%{http_code}", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "custom deploy hooks", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "direct merge", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "no workflow detected", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "skipped", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "clean", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.55 + }, + { + "keyword": "none", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "land-and-deploy", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "timestamp", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pr", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "merge_sha", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "deploy_status", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ci_wait_s", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "queue_s", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "deploy_s", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "canary_s", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "total_s", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "land and deploy", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "workflow. merges the", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "waits for ci", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and deploy", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "verifies production health", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "via canary checks.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "takes over after", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ship creates the", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "pr. use when", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ship it to", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "部署", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.27 + }, + { + "keyword": "前端", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "后端", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "重构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.27 + }, + { + "keyword": "队列", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 2.08 + }, + { + "keyword": "钩子", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.02 + } + ] + }, + { + "name": "legal-review-skill", + "description": "中国法务审查专家。合同审查、企业合规、知识产权、劳动用工、数据合规、 法律文书起草、法律风险预警。触发词:合同审查、法务审查、合规审查、 legal review、数据合规、知识产权。基于中国现行法律法规。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "WebFetch", + "WebSearch" + ], + "keywords": [ + { + "keyword": "定义", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "必须修改后方可签署", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**低风险**", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "供决策参考", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "条款位置", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "风险等级", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "不构成正式法律意见", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[合同/文件名称]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[日期]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[合同类型]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "中国法务审查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "合同审查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "企业合规", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "知识产权", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "劳动用工", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "数据合规", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "法律文书起草", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "法律风险预警", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "触发词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.35 + }, + { + "keyword": "法务审查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "合规审查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "基于中国现行", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "法律法规", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "legal review", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + } + ] + }, + { + "name": "mcp-probe", + "description": "MCP 服务器连通性体检。对 .claude.json 中注册的全部 MCP (stdio + http) 发 initialize 握手包或 HEAD 请求,输出每个服务器的启动耗时、健康状态和根因诊断。 触发词: \"体检MCP\", \"测MCP\", \"MCP健康检查\", \"MCP连通性\", \"mcp-probe\", \"probe mcp\", \"MCP全量测试\", \"MCP诊断\", \"所有MCP是", + "maturity": "stable", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "类型", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "**http** (type:http", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "url)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "超过判为 timeout", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**ok**: n", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "启动耗时", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "1.7s", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "可能原因", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "缺环境变量", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "stderrtail 关键字", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "err_module_not_found", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "node 18.20+ 拒绝直接 spawn .cmd", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "代理或网络问题", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "').substring(0", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "process.env", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cfg.env", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cfg.args", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "stdio", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mcp-probe", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "probe mcp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "体检mcp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "测mcp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mcp健康检查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mcp连通性", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mcp全量测试", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mcp诊断", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "id", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "result", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "name", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "github", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "kind", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "ok", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "detail", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 1735,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "需要我直接修复吗?", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "jsonrpc", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "修复仅限 env 段补全", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "npx 缓存清理", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "服务器连通性", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "体检", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "中注册的全部", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "握手包或", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "请求", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "输出每个服务", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "器的启动耗时", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "健康状态和根", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "因诊断", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "触发词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.35 + }, + { + "keyword": "健康检查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "连通性", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "全量测试", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "诊断", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "所有", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "是否正常", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "mcp", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "claude.json", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "http", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "initialize", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "head", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "test", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + }, + { + "keyword": "cache", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ] + }, + { + "name": "mcp-prune", + "description": "MCP 剪枝分析工具 (Phase 1 · T1.4)。基于 mcp-usage-tracker 的使用率数据, 识别最近 N 天零调用且非 critical 的 MCP 候选,生成剪枝 plan 文件。 绝不自动修改 ~/.claude.json,用户需人工 apply。 触发词: \"mcp-prune\", \"剪枝 MCP\", \"MCP 剪枝\", \"清理 MCP\", \"精简 MCP\", \"dis", + "maturity": "stable", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "能力", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "--confirm", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "生成 plan 文件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mcp-prune", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "disable unused mcp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "prune mcp servers", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "剪枝 mcp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mcp 剪枝", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "清理 mcp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "精简 mcp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "剪枝分析工具", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "基于", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "的使用率数据", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "识别最近", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "天零调用且非", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "候选", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "生成剪枝", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "文件", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "绝不自动修改", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "用户需人工", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "触发词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.35 + }, + { + "keyword": "剪枝", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "清理", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "精简", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "mcp", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "phase", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "t1.4", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "mcp-usage-tracker", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "critical", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "plan", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "claude.json", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "apply", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + } + ] + }, + { + "name": "miniprogram-expert", + "description": "小程序开发专家。当用户需要微信小程序、支付宝小程序、抖音小程序开发, Taro、uni-app 跨端框架,云开发、云函数、分包优化、setData 优化、 登录授权、支付功能、审核上架,或说 \"小程序\"、\"Taro\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "taro", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "小程序", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lazycodeloading", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "requiredcomponents", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "微信小程序", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "支付宝小程序", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "抖音小程序", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "百度小程序", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "uni-app", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "remax", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "云开发", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "小程序登录", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "小程序支付", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "分享", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "分包", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "性能优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 1.94 + }, + { + "keyword": "启动优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "微信", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "支付宝", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "抖音", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.65 + }, + { + "keyword": "taro 3.x", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "云函数", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "云数据库", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "云存储", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "启动", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "渲染", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "包体积优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "登录授权", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "支付", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "小程序开发专", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要微", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "信小程序", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "抖音小程序开", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "跨端框架", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "分包优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "支付功能", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "审核上架", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "setdata", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "database", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.91 + }, + { + "keyword": "组件", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + } + ] + }, + { + "name": "mobile-expert", + "description": "移动端开发专家。当用户需要 React Native、Flutter、Expo 跨平台开发, iOS Swift/SwiftUI、Android Kotlin/Jetpack Compose 原生开发, App 性能优化、应用上架 App Store/Google Play, Android 设备控制、ADB 操作、设备截图、UI 自动化测试、 应用安装/卸载/启动、模拟器操作、手势模拟、屏幕元素", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash", + "mcp__mobile" + ], + "keywords": [ + { + "keyword": "onpress", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "variant = 'primary'", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "loading = false", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "disabled = false", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "padding: 12", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "outline: { borderwidth: 2", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bordercolor: '#007aff' }", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "}; return { ...base", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "跨平台", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "app开发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "移动端", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "adb", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "设备截图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "#fff", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "home", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "profile", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "login", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "main", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "react native", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "flutter", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.65 + }, + { + "keyword": "expo", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "ionic", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "ios", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "android", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "swift", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "kotlin", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "原生开发", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "手机应用", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "app", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "应用上架", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "app store", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "google play", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "签名", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "移动性能", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "启动优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "内存优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "adb devices", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "模拟器", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "真机调试", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "mobile mcp", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "设备列表", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "应用安装", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "ui自动化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "手势模拟", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "屏幕元素", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "dart 3.5+", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "swift 5.9+", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "swiftui", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.65 + }, + { + "keyword": "uikit", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "kotlin 1.9+", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "jetpack compose", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "zustand", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "jotai", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "redux toolkit", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "riverpod", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "bloc", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "provider", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "移动端开发专", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "跨平台开发", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "性能优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.21 + }, + { + "keyword": "设备控制", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "操作", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "自动化测试", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "卸载", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "启动", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "模拟器操作", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "屏幕元素检测", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ios swift", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "android kotlin", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "test", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.91 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "debug", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + } + ] + }, + { + "name": "nextjs-developer", + "description": "Next.js 全栈专家。当用户需要 Next.js 14+ App Router、RSC 服务端组件、Server Actions、ISR/SSG/SSR 渲染策略、Middleware、Next.js 性能优化,或说 \"Next.js\"、\"App Router\"、\"Server Components\" 时使用此技能。", + "maturity": "imported", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "file-based routing", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "layouts", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "templates", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "route groups", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "server actions", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "fetch", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "caching", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "isr", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "on-demand revalidation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "next.js", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "app router", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "server components", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "全栈专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "服务端组件", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "渲染策略", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "性能优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.21 + }, + { + "keyword": "rsc", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ssg", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "ssr", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "middleware", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.91 + }, + { + "keyword": "中间件", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 2.08 + }, + { + "keyword": "模板", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + }, + { + "keyword": "路由", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "notification-system-expert", + "description": "通知系统专家。当用户需要推送通知(FCM/APNs/Web Push)、 邮件发送(SendGrid/AWS SES/Mailgun)、SMS 短信(Twilio/阿里云短信)、 企业微信/钉钉/飞书/Slack 机器人消息、In-app 站内通知、 通知模板设计、消息分级策略、通知频率控制, 或说 \"推送通知\"、\"发邮件\"、\"发短信\"、\"消息通知\"、\"Slack 机器人\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "推送通知", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fcm", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "apns", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "web push", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "service worker", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "消息推送", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "邮件发送", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sendgrid", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "aws ses", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mailgun", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "smtp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "邮件模板", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "事务邮件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "短信发送", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sms", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "twilio", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "阿里云短信", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "验证码", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "短信模板", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "slack bot", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "企业微信机器人", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "钉钉机器人", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "飞书机器人", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "discord bot", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "站内信", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "in-app 通知", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "通知中心", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "未读数", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "通知铃铛", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "通知策略", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "消息分级", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "频率控制", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "静默期", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "通知偏好", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "推送", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "通知", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "发消息", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "提醒", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "告警通知", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "发邮件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "发短信", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "消息通知", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "slack", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "slack 机器人", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "push", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "email", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "wechat_work", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "channelsender", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "message", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "text", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "blocks", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "发什么", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "怎么发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "android + web push", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "ios + macos", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "service worker + vapid", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "统一推送平台", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "rest api + smtp", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "模板引擎", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "送达率分析", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "高吞吐", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "开发者友好", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "邮件解析", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "现代化 api", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "国内短信", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "签名/模板审核", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "微信生态", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "通知系统专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要推", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "送通知", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "短信", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "企业微信", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "钉钉", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "飞书", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "机器人消息", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "站内通知", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "通知模板设计", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "消息分级策略", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "通知频率控制", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "机器人", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "in-app", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "transaction", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "template", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "performance-expert", + "description": "性能优化专家。当用户需要进行前端性能优化、后端性能调优、数据库优化、性能监控、 Core Web Vitals(LCP/FID/CLS)优化、首屏加载优化、内存优化、索引优化, 或说 \"性能优化\"、\"加载慢\"、\"响应慢\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash", + "mcp__chrome-devtools", + "mcp__playwright" + ], + "keywords": [ + { + "keyword": "加载慢", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "响应慢", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "性能优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.42 + }, + { + "keyword": "/hero.jpg", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "blur", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "image.avif", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "image/avif", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "image.webp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "image/webp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "image.jpg", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lazy", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "warm up", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sustained load", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "application/json", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "api health check", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "/api/health", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "首屏优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "lcp", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "fcp", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "core web vitals", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "api慢", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "延迟高", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "吞吐量", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "内存优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "cpu优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "带宽优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "查询慢", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据库优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "索引优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "性能调优", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "性能问题", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "性能优化专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "行前端性能优", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "后端性能调优", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "性能监控", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "首屏加载优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "fid", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "cls", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "database", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + }, + { + "keyword": "frontend", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "backend", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.91 + }, + { + "keyword": "monitoring", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + }, + { + "keyword": "index", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "plan-ceo-review", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "fixme\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sort -rn", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "tr '/' '-'", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "effort", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "s/m/l", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"user-dashboard\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "description", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "times out", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "max iterations", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"iterations\":iterations", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"issues_found\":found", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"issues_fixed\":fixed", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"remaining\":remaining", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "what can go wrong", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "api returns 429", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "jsonparseerror", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "record not found", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "500 error ← bad recordnotfound", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "catch (exception e)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "with what arguments", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "new params", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "new file paths", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sanitized", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "empty string", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "string when integer expected", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "string exceeding max length", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "unicode edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "payment data", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "command", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "template", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "likelihood (high/med/low)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "impact (high/med/low)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "evaluate: interaction", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "how? ---------------------", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "-------- form submission", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "async operation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "list/table view", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "background job", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "methods", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "assuming happy path only", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "condition", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "empty", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "boundary values", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fewer integration", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "randomness", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "external services", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "which cases should be added", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "runtime", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "redis connections", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "exit", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "operational debt", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "testing debt", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "second", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "error", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "failure mode", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user sees?", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test=n", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "complexity", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "the current state", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "m→s", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "l→m", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mode selected", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "system audit", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "step 0", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "section 1 (arch)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "section 2 (errors)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "section 3 (security)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "section 4 (data/ux)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "section 5 (quality)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "section 6 (tests)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "section 7 (perf)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "section 8 (observ)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "section 9 (deploy)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "section 10 (future)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "section 11 (design)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "not in scope", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "what already exists", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "dream state delta", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "error/rescue registry", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "failure modes", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "todos.md updates", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "scope proposals", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ceo plan", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lake score", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "diagrams produced", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "stale diagrams found", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "unresolved decisions", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "review readiness dashboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "runs", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "required", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "code quality", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "tests", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "new user-facing features", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "refactors", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "infra", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "codex structured", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "claude adversarial subagent", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "stale (>7 days)", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "or has open issues - ceo", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "design", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\unresolved\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\critical_gaps\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\mode\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\scope_proposed\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\scope_accepted\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\scope_deferred\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "{scope_accepted} accepted", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\issues_found\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\initial_score\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\overall_score\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\decisions_made\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\gate\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\findings\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "why", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "findings", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "ceo review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "{runs}", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "independent 2nd opinion", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "{findings}", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\/plan-eng-review\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "{status}", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "design review", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "think bigger", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "expand scope", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "strategy review", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rethink this", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "the base branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "the base branch.", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "not in scope.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ship the shortcut", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "handle errors.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "engineered enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "how do we win?", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$design", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "|| echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "$handoff", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "no design doc found,", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "i'm not\r\nsure,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "discussion so far", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "minimal viable", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ideal architecture", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "must ship together", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user-dashboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "auth-refactor", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "reviewer concerns", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "if they ask", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "## reviewer concerns", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "plan-ceo-review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "ts", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "iterations", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "issues_found", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "issues_fixed", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "remaining", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "quality_score", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "figure it out later.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "go big", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ambitious", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cathedral", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "not found", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "swallow and continue", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "prompt/llm changes", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "do nothing", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "3a", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "3b", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "timestamp", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "unresolved", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "critical_gaps", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "mode", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "scope_proposed", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scope_accepted", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scope_deferred", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "commit", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "clean", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.55 + }, + { + "keyword": "issues_open", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "(full)", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "(lite)", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "don't bother me", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "skipped (global)", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "eng review required", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "is it big │", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "is it too │", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "│ minimum?", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "joy to │", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "can we │", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "│ operate", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "│ it's broken?", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "inevitable", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "2026-03-16t14:30:00)", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "eng review missing", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "or has open issues", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "\\status\\", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "\\commit\\", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "\\findings_fixed\\", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "部署", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.27 + }, + { + "keyword": "安全", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "重构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.27 + }, + { + "keyword": "认证", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + }, + { + "keyword": "模板", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + } + ] + }, + { + "name": "plan-design-review", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "loading", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "success", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "-------- [each ui feature]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[spec]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user does", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lands on page", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "if deferred", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"3a\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ui patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "unresolved responsive behavior", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "complexity", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "system audit", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "step 0", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "pass 1 (info arch)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pass 2 (states)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pass 3 (journey)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pass 4 (ai slop)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pass 5 (design sys)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pass 6 (responsive)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pass 7 (decisions)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "not in scope", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "what already exists", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "todos.md updates", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "decisions made", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "decisions deferred", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "overall design score", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "review readiness dashboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "runs", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "required", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "code quality", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "tests", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "new user-facing features", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "refactors", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "infra", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "codex structured", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "claude adversarial subagent", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "stale (>7 days)", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "or has open issues - ceo", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "design", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\unresolved\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\critical_gaps\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\mode\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\scope_proposed\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\scope_accepted\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\scope_deferred\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "{scope_accepted} accepted", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\issues_found\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\initial_score\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\overall_score\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\decisions_made\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\gate\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\findings\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "why", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "findings", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "ceo review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "{runs}", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "independent 2nd opinion", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "{findings}", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\/plan-eng-review\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "{status}", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "design review", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "the base branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "the base branch.", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "no items found.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "clean, modern ui", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "stacked on mobile.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "looked at the design", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "i feel for the user", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "would i notice?", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "this feels wrong", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "(rams).", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "snow white", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "), jony ive (", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "this feels off", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "2. gap:", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "good enough, move on", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "constraint worship", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cards with icons", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "hero section", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "stacked on mobile", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "3a", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "3b", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "plan-design-review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "timestamp", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "initial_score", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "overall_score", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "unresolved", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "decisions_made", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "commit", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "clean", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.55 + }, + { + "keyword": "issues_open", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "(full)", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "(lite)", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "don't bother me", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "skipped (global)", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "eng review required", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "current iso 8601 datetime", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "eng review missing", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "or has open issues", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "\\status\\", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "\\commit\\", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "\\findings_fixed\\", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "重构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.27 + } + ] + }, + { + "name": "plan-eng-review", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "tr '/' '-'", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "review readiness dashboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "runs", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "required", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "code quality", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "tests", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "new user-facing features", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "refactors", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "infra", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "codex structured", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "claude adversarial subagent", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "stale (>7 days)", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "or has open issues - ceo", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "design", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\unresolved\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\critical_gaps\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\mode\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\scope_proposed\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\scope_accepted\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\scope_deferred\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "{scope_accepted} accepted", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\issues_found\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\initial_score\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\overall_score\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\decisions_made\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\gate\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\findings\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "why", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "findings", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "ceo review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "{runs}", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "independent 2nd opinion", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "{findings}", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\/plan-eng-review\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "{status}", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "design review", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": ", or", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "engineered enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "reviewed the code", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "caught the landmine.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "boring by default.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "systems over heroes.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$design", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "|| echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "no design doc found,", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "high", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "prompt/llm changes", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "do nothing", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "3a", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "3b", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "not in scope", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "what already exists", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "plan-eng-review", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "timestamp", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "unresolved", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "critical_gaps", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "issues_found", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "mode", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "commit", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "clean", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.55 + }, + { + "keyword": "issues_open", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "unresolved decisions", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "(full)", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "(lite)", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "don't bother me", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "skipped (global)", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "eng review required", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "current iso 8601 datetime", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "full_review / scope_reduced", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "eng review missing", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "or has open issues", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "\\status\\", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "\\commit\\", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "\\findings_fixed\\", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "重构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.27 + } + ] + }, + { + "name": "planning-with-files", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "bash", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "location", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "your project directory", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "file", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "phases", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "progress", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "decisions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "throughout session", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "attempt", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "created default config", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "situation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "don't read", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "viewed image/pdf", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "screenshots don't persist", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "read plan/findings", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "error occurred", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "recover state", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "answer source", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "remaining phases", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "goal statement in plan", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "do instead", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "create task_plan.md file", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "re-read plan before decisions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "log errors to plan file", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "store large content in files", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "create plan file first", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "track attempts", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mutate approach", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "create files in your project", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "write|edit", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sd=\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "2>/dev/null || sh \\", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "2.16.1", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$(pwd)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.02 + } + ] + }, + { + "name": "pricing-strategist", + "description": "定价策略专家。当用户需要 SaaS 定价模型、产品定价策略、价格梯度设计、 竞品定价分析、价值定价法、免费增值模式设计、提价策略, 或说 \"定价\"、\"怎么收费\"、\"定价模型\"、\"价格策略\"、\"提价\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "WebSearch" + ], + "keywords": [ + { + "keyword": "定价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "定价模型", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "定价策略", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "怎么收费", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "收费模式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "订阅制", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "按量计费", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "免费增值", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "freemium", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "阶梯定价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "席位定价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "价值定价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "成本加成", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "竞品定价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "心理定价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "捆绑定价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "提价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "价格敏感度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "支付意愿", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "价格弹性", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "wtp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "竞品价格对标", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "人天报价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "项目报价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "按效果付费", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "保底+分成", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "free", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "enterprise", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "✅ (有限)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "免费版", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "参考点", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "50人免费", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "协作功能差异化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "免费", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "存储+高级功能", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "个人免费", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai+协作人数", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "3项目免费", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "项目数+标注功能", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "价格策略", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "诱饵效应", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "最受欢迎", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "省¥1200", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "8折", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "开始使用", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "免费试用x天", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "已有1000+团队选择", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "获客引流,降低试用门槛", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "大客户定制,按需报价", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "定价策略专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "产品定价策略", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "价格梯度设计", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "竞品定价分析", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "价值定价法", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "免费增值模式", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "提价策略", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "saas", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + } + ] + }, + { + "name": "product-manager-expert", + "description": "产品经理专家。当用户需要 PRD 产品需求文档、需求分析、竞品分析、用户研究、 产品规划、路线图、用户故事、MVP 定义、RICE/KANO 优先级排序、迭代计划、 产品规格文档、功能规格说明 FSD、技术规格书 TSD、接口规格 API Spec、验收标准, 或说 \"产品\"、\"PRD\"、\"需求\"、\"规格\"、\"规格文档\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write" + ], + "keywords": [ + { + "keyword": "prd", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "产品需求", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "需求文档", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "用户故事", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "竞品分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "需求分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "市场分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "产品规划", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "路线图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "版本规划", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "迭代计划", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rice", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "kano", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "moscow", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "优先级", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "产品规格", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "功能规格", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术规格", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "api规格", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "验收标准", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "类型", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "产品", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "需求", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "规格", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "规格文档", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "产品经理专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "产品需求文档", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "用户研究", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "定义", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "优先级排序", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "产品规格文档", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "功能规格说明", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "技术规格书", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "接口规格", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "mvp", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "fsd", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "tsd", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "api spec", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "interface", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "project-audit-expert", + "description": "项目全栈审计专家。当用户需要项目代码审查、漏洞修补、功能测试、功能优化、逻辑验证、 全面审计、上线前检查、质量把关、技术债务清理, 或说 \"审计项目\"、\"全面检查\"、\"上线前审查\"、\"帮我审一下\" 时使用此技能。 整合代码审查、安全漏洞扫描、功能测试、性能优化、逻辑验证五大能力于一体。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash", + "Task", + "WebFetch" + ], + "keywords": [ + { + "keyword": "项目审计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "全面审查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "上线前检查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "上线检查清单", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "全栈审计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "质量把关", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "帮我审一下", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "系统自检", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自检", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自审计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bookworm自检", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bookworm审计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "漏洞修复", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "安全修补", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "安全审计", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "漏洞扫描", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "功能测试", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "集成测试", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "回归测试", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "逻辑验证", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "业务逻辑检查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据流验证", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "高频问题", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "p1", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "json.parse 无运行时验证", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "typescript", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "db 字段修改未持久化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "python", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "工具函数多处重复定义", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "关键检查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "p0", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "jwt 签名验证逻辑", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sql 注入(字符串拼接)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "搜索 password=", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "secret=", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**技术栈**: [xxx] ## 总体评估", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "等级", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "xx/100", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "a/b/c/d", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "功能完整性", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**综合评分**", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**x**", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "文件", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "级别", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "多次", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "except exception 吞掉所有错误", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "重复工具函数(dry 违反)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "alembic 迁移 enum 重复创建", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "模式", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "\"帮我审一下这个文件\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "标准审计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "全项目,phase 1-5", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "大型项目", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "全面审计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "审计项目", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "全面检查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "上线前审查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "帮我审一下这个文件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "审计一下后端 api", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "文件:行号", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[影响范围]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[代码示例]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[确认步骤]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "项目全栈审计", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要项", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "目代码审查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "漏洞修补", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "功能优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "技术债务清理", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "整合代码审查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "安全漏洞扫描", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "性能优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.21 + }, + { + "keyword": "逻辑验证五大", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "能力于一体", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "test", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + }, + { + "keyword": "backend", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.91 + }, + { + "keyword": "migration", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 2.08 + } + ] + }, + { + "name": "project-coordinator", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "项目管理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "项目计划", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "排期", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "wbs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "工作分解", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "任务分解", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sprint", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scrum", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "看板", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "kanban", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "迭代", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "站会", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "回顾会", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "里程碑", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "进度跟踪", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "甘特图", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "燃尽图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "进度报告", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "风险管理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "风险登记", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "依赖管理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "阻塞", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "延期", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "飞书项目", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "notion", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "linear", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "jira", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "github projects", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "m1", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "prd 签字确认", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "原型验收", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mm-dd", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "m4", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "生产环境稳定运行", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "风险", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "等级", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "高/中/低", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[措施]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[一句话描述]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "yyyy-mm-dd → yyyy-mm-dd", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[预算/人力/技术]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + } + ] + }, + { + "name": "prompt-optimizer", + "description": "提示词优化器。当用户输入\"提示词:(内容)\"或\"优化提示词:(内容)\"格式时自动触发,将用户的原始提示词转化为符合Claude官方规范的高质量结构化提示词。支持各类任务场景的提示词优化,包括文本生成、代码编写、数据分析、创意写作等。触发词包括:提示词:、优化提示词:、prompt:、改进提示词、帮我优化这个prompt。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "WebFetch", + "WebSearch" + ], + "keywords": [ + { + "keyword": "说明", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "用具体指令替代模糊描述", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "使用 xml 标签分隔不同部分", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "复杂任务提供 3-5 个示例", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "鼓励分步骤推理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "说\"要做什么\"而非\"不要做什么\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "提示词:(内容)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "优化提示词:(内容)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "帮我优化/改进这个提示词", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "为什么", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "要做什么", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "不要做什么", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "识别是生成", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "编码", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "翻译", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "总结还是其他类型", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "提示词优化器", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户输入", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "提示词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "内容", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "优化提示词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "格式时自动触", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "将用户的原始", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "提示词转化为", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "符合", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "官方规范的高", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "质量结构化提", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "示词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "支持各类任务", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "场景的提示词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "包括文本生成", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "代码编写", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "数据分析", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "创意写作等", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "触发词包括", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "改进提示词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "帮我优化这个", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "claude", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "prompt", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + } + ] + }, + { + "name": "python-pro", + "description": "Python 深度专家。当用户需要 Python 3.11+ 高级特性、类型提示 typing、async/await 异步编程、dataclass、mypy 配置、pytest 高级用法、生产级 Python 模式,或说 \"Python\"、\"类型提示\"、\"异步Python\" 时使用此技能。", + "maturity": "imported", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "type hints", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mypy", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "generics", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "protocol", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "standard library", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pytest", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "fixtures", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mocking", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "parametrize", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "类型提示", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "python", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "异步python", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "高级特性", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "异步编程", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.02 + }, + { + "keyword": "高级用法", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "生产级", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "模式", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "异步", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "typing", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "async", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "await", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "dataclass", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "config", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "qa", + "description": "Systematically QA test a web application and fix bugs found. Runs QA testing, then iteratively fixes bugs in source code, committing each fix atomically and re-verifying. Use when asked to \"qa\", \"QA\",", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "parameter", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "(auto-detect or required)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tier", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": ".gstack/qa-reports/", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scope", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "sign in to user@example.com", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "runtime", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "minitest + fixtures + capybara", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "node.js", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "jest + cypress", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "pytest + pytest-cov", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "go", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "phpunit + mockery", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "elixir", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "integration", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "smoke", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "spec/", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "sort -rn", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "category", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "console", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "links", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "visual", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "functional", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ux", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "performance", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.82 + }, + { + "keyword": "content", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "accessibility", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "只报告", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "不修复", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test this site", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "find bugs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test and fix", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "report-only", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "just report", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "qa report only", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "qa", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fix what's broken", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "does this work?", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test but don't fix", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "the base branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "the base branch.", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "不要修", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "只测试不修", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "报告模式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "report only", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "don't fix", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "qa-only", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[ -n", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && [ -x", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && b=", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "[ -z", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "$b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "ready: $b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "needs_setup", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "runtime:ruby", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:node", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:python", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:go", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:rust", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:php", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:elixir", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "rails", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "framework:rails", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "next", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "framework:nextjs", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "bootstrap_declined", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "`\n- `", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ci:github", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "found app on :3000", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "found app on :4000", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "found app on :8080", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user@example.com", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[redacted]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "top 3 things to fix", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "date", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "yyyy-mm-dd", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "url", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "healthscore", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "issues", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "id", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "issue-001", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "title", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "severity", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "categoryscores", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "deferred.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "deferred", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "improve", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "verified", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "it renders", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "it doesn't throw", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "re-test confirms the fix works", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "no new errors introduced", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "needs auth state", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "external service)", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "systematically qa test", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "a web application", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and fix bugs", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "found. runs qa", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "testing", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "then iteratively fixes", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "bugs in source", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "code", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "committing each fix", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "atomically and re-verifying.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "use when asked", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "fix what", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "s broken", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "proactively suggest when", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "the user says", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "a feature is", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ready for testing", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "or asks", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "does this work", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "three tiers", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "quick", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "critical", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "high only", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "standard", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "medium", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.43 + }, + { + "keyword": "exhaustive", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "cosmetic", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "produces before", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "after health scores", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "fix evidence", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and a ship-readiness", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "summary. supports report-only", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "mode", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "when user says", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "test but don", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "t fix", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "auto-switch to report-only", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "find and document", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "bugs without fixing", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "qa-only is deprecated", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and redirects here.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "性能", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + }, + { + "keyword": "认证", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + } + ] + }, + { + "name": "regex-shell-wizard", + "description": "正则与Shell脚本专家。当用户需要正则表达式编写、Shell/Bash 脚本、 Awk/Sed 文本处理、批量文件操作、日志分析、Cron 定时任务, 或说 \"正则\"、\"Shell脚本\"、\"批量替换\"、\"日志分析\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "正则表达式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "regex", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "匹配规则", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "提取文本", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "正则替换", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "shell脚本", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bash", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "zsh", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "命令行", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动化脚本", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "powershell", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "awk", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sed", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "grep", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "find", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "xargs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "vim", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cron", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "批量重命名", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "日志分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "文本处理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "批量替换", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[12]\\d", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "正则", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "天书", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "正则与", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "脚本专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要正", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "则表达式编写", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "脚本", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "批量文件操作", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "定时任务", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "shell", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "log", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + } + ] + }, + { + "name": "retro", + "description": "Weekly engineering retrospective. Analyzes commit history, work patterns, and code quality metrics with persistent history and trend tracking. Team-aware: breaks down per-person contributions with pra", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "%an", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "%ai", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "grep -v '^$'", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sort -n", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "grep -v node_modules", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "grep -e '\\.(test", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": " if todos.md doesn't exist", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "show the skill that flagged it", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "the branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": " if moments exist", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "app/services/", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "insertions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "deletions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "time patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "weekly retro", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "what did we ship", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "2026-03-11t00:00:00", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "2026-03-11", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "n hours ago", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "you", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "your", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "%h|%an|%ae|%ai|%s", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "commit:%h|%an", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "%at|%an|%ai|%s", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "%s", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "author:%an", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test(qa):", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test(design):", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test: coverage", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "you (name)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "hook_fire", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ship fast, fix fast", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "your peak hours...", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "your biggest ship...", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "great work", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai-assisted commits", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "%ad", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "%y-%m-%d", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "date", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "2026-03-08", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "window", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "7d", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "metrics", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "commits", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "contributors", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "prs_merged", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "net_loc", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test_loc", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test_ratio", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "active_days", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sessions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "deep_sessions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "avg_session_minutes", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "loc_per_session_hour", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "feat_pct", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fix_pct", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "peak_hour", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai_assisted_commits", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "authors", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "garry tan", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "top_area", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "browse/", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "alice", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "version_range", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "1.16.0.0", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "1.16.1.0", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "streak_days", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tweetable", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": {", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": ": 3,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 1,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 2,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test_health", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "total_test_files", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 5,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "backlog", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "total_open", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "p0_p1", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "p2", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "2026-03-04t00:00:00", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "great job!", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "not", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "areas of focus", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "and commit patterns", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "1 specific", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "not criticism. examples:", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "analyzes commit history", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "work patterns", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and code quality", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "metrics with persistent", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "history and trend", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "tracking. team-aware", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "breaks down per-person", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "contributions with praise", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and growth areas.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "use when asked", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "what did we", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ship", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "engineering retrospective", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "proactively suggest at", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "the end of", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "a work week", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "or sprint.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "认证", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + }, + { + "keyword": "钩子", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + } + ] + }, + { + "name": "review", + "description": "Pre-landing PR review. Analyzes diff against the base branch for SQL safety, LLM trust boundary violations, conditional side effects, and other structural issues. Use when asked to \"review this PR\", \"", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "tail -1", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "the base branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "review this pr", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "code review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "pre-landing review", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "check my diff", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "the base branch.", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "do not flag", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "design review", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "design-review-lite", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "timestamp", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "findings", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "auto_fixed", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "commit", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "clean", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.55 + }, + { + "keyword": "issues_found", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "fix.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "this pattern is safe", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tests cover this", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "likely handled", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "probably tested", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "this looks fine", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "codex_available", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "codex_not_available", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "run all passes", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "paranoid review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "full adversarial", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "do all 4 passes", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "thorough review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "medium tier", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "large tier", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "xhigh", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "$tmperr_adv", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "auth", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "login", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "unauthorized", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "api key", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "- **timeout:**", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "adversarial-review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "source", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "tier", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "medium", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "codex", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "claude", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "$tmperr", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "large", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "gate", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "both", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "pass", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "fail", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "informational", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "classify as ask", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "pre-landing pr review.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "analyzes diff against", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "for sql safety", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "llm trust boundary", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "violations", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "conditional side effects", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and other structural", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "issues. use when", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "asked to", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "proactively suggest when", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "the user is", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "about to merge", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "or land code", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "changes.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "认证", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + } + ] + }, + { + "name": "reviewer-expert", + "description": "代码审查与质量专家。当用户需要代码审查、Code Review、代码质量评估、安全审计、 代码改进建议、PR Review、技术债务分析、代码规范制定、重构建议、 圈复杂度分析、代码坏味道识别, 或说 \"审查代码\"、\"帮我 review\"、\"检查代码\"、\"代码质量\"、\"技术债务\"、\"重构\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "code review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "代码审查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "代码评审", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pr review", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mr 审查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "代码质量", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "代码健康度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "质量评分", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "代码改进", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "代码规范", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "编码规范", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "命名规范", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "注释规范", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术债务", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "代码坏味道", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "重构建议", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "遗留代码", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "代码复杂度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "圈复杂度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "认知复杂度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "权重", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "逻辑正确", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "边界处理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "并发安全", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "20%", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "可维护性", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "算法复杂度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "n+1 查询", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "缓存使用", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "11-20 中等", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "审查代码", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "检查代码", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "重构", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.55 + }, + { + "keyword": "帮我 review", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "x/10", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "代码审查与质", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "量专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要代", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "码审查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "代码质量评估", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "安全审计", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "代码改进建议", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "技术债务分析", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "代码规范制定", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "圈复杂度分析", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "代码坏味道识", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "帮我", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "review", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + }, + { + "keyword": "cache", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + }, + { + "keyword": "refactor", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "rust-engineer", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "lifetimes", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "borrowing", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "smart pointers", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pin", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "async/await", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tokio", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "futures", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "streams", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "concurrency", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rust", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "所有权", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "借用检查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "sales-consultant", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "销售", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "销售策略", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "销售漏斗", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "成交率", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "客单价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "复购率", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "crm", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "客户跟进", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "客户开发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "客户关系", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "客户分层", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rfm", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "谈单", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "报价谈判", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "议价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "异议处理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "成交技巧", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "签约", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "获客渠道", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "转介绍", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "冷启动", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "陌拜", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "线索", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "商机", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "飞书crm", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "纷享销客", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "企业微信", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "销售自动化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "时间节点", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "目标", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "d0", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "确认需求匹配度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "d1-d2", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "展示专业度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "d3-d4", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "处理异议", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "d5-d7", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "推进商务", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "d7-d14", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "促成决策", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "d14+", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "保持联系", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "回应策略", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "制造紧迫", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"已有方案了\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "赋能推动", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "工具", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "核心优势", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "免费", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "自动化工作流", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "b2b", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "太贵了", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "| 制造紧迫 |", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "| 差异对比 |", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "| 分期/roi |", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "| 赋能推动 |", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + } + ] + }, + { + "name": "security-expert", + "description": "应用安全专家。当用户需要进行安全编码、OWASP 防护、认证授权设计(JWT/OAuth)、 加密实现、密钥管理、漏洞响应、XSS/SQL注入防护、渗透测试, 或说 \"安全\"、\"认证\"、\"加密\" 时使用此技能。精通安全最佳实践和攻防技术。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "安全", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "认证", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.21 + }, + { + "keyword": "加密", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user_id", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "jwt_secret", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "hs256", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "exp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "iat", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user:read", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user:write", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user:delete", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "admin", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "] =", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "x-frame-options", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "deny", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "x-xss-protection", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "1; mode=block", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "安全编码", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "代码审计", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "漏洞修复", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "owasp", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "xss", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "sql注入", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "csrf", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "注入攻击", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "授权", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "jwt", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "oauth", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "rbac", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "权限", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "密码", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "哈希", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "密钥", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "证书", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "渗透测试", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "安全扫描", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "sast", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "dast", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "应用安全专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "行安全编码", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "防护", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "认证授权设计", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "加密实现", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "密钥管理", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "漏洞响应", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "注入防护", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "精通安全最佳", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "实践和攻防技", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "sql", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "test", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + }, + { + "keyword": "encryption", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 2.08 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "setup-browser-cookies", + "description": "Import cookies from your real browser (Comet, Chrome, Arc, Brave, Edge) into the headless browse session. Opens an interactive picker UI where you select which cookie domains to import. Use before QA ", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "import cookies", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "login to the site", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "[ -n", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && [ -x", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && b=", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "[ -z", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "$b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "ready: $b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "needs_setup", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "allow", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "always allow", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "import cookies from", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "your real browser", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "comet", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "chrome", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "arc", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "brave", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "edge", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "into the headless", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "browse session. opens", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "an interactive picker", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ui where you", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "select which cookie", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "domains to import.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "use before qa", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "testing authenticated pages.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "use when asked", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "login to the", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "site", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "authenticate the browser", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "认证", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + } + ] + }, + { + "name": "setup-deploy", + "description": "Configure deployment settings for /land-and-deploy. Detects your deploy platform (Fly.io, Render, Vercel, Netlify, Heroku, GitHub Actions, custom), production URL, health check endpoints, and deploy s", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "release", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "render", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "vercel", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "netlify", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "dashboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "cli", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "/health", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fly status", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "head -5", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "setup deploy", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "configure deployment", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no_config", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "platform:fly", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "platform:render", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "platform:vercel", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "platform:netlify", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "platform:heroku", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "platform:railway", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "$f", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "deploy_workflow:$f", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "bin", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "project_type:cli", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "project_type:library", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "^app", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\\(.*\\)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "deploy wait", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "auto-deploy on push", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "http health check", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "none", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "poll production url", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "{health-check-url}", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "%{http_code}", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "unreachable", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "command_failed", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "configure deployment settings", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "land-and-deploy. detects your", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "deploy platform", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "fly.io", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "heroku", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "github actions", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "custom", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "production url", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "health check endpoints", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and deploy status", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "commands. writes the", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "so all future", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "deploys are automatic.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "use when", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "set up land-and-deploy", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "how do i", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "deploy with gstack", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "add deploy config", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "部署", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.27 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.02 + } + ] + }, + { + "name": "ship", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "review readiness dashboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "runs", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "required", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "code quality", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "tests", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "new user-facing features", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "refactors", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "infra", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "codex structured", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "claude adversarial subagent", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "stale (>7 days)", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "or has open issues - ceo", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "design", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "runtime", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "minitest + fixtures + capybara", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "node.js", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "jest + cypress", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "pytest + pytest-cov", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "go", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "phpunit + mockery", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "elixir", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "integration", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "smoke", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "spec/", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "sort -rn", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "*_writer_service.rb", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "*_scorer.rb", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "*_classifier_service.rb", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "*writing*.rb", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "*prompt*.rb", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test/evals/support/*.rb", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fast (haiku)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "~$0.07/run", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "default dev", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bin/test-lane --eval", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "~72s (baseline)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "grep -v node_modules", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "!important", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"timestamp\":\"timestamp\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "\"status\":\"status\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "\"findings\":n", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "\"auto_fixed\":m", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "n = total findings", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "m = auto-fixed count", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "severity", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "problem", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "k asked (j fixed", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "filter", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "classify", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "gh fails", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "api returns an error", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "y fixed", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "b) acknowledge and ship anyway", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "grep -oe '[0-9]+'", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tail -1", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "ship", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "deploy", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "push to main", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "create a pr", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "merge and push", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "the base branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "the base branch.", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "(full)", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "(lite)", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "don't bother me", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "clean", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.55 + }, + { + "keyword": "skipped (global)", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "clear", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "ship-review-override", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "no_override", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "timestamp", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "decision", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user_choice", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ship_anyway", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "not_relevant", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "runtime:ruby", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:node", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:python", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:go", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:rust", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:php", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:elixir", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "rails", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "framework:rails", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "next", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "framework:nextjs", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "bootstrap_declined", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "`\r\n- `", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "ci:github", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "it renders", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "it doesn't throw", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "design review", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "design-review-lite", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "findings", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "auto_fixed", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "commit", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "issues_found", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "codex_available", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "codex_not_available", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "run all passes", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "paranoid review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "full adversarial", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "do all 4 passes", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "thorough review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "medium tier", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "large tier", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "xhigh", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "$tmperr_adv", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "auth", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "login", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "unauthorized", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "api key", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "- **timeout:**", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "adversarial-review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "source", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "tier", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "medium", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "codex", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "claude", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "$tmperr", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "large", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "gate", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "both", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "pass", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "fail", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "informational", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "should work now", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "i'm confident", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": ", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "no issues found.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ready to push?", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "create pr?", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "eng review missing", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "or has open issues", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "classify as ask", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "部署", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.27 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "重构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.27 + }, + { + "keyword": "认证", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + } + ] + }, + { + "name": "social-media-manager", + "description": "社交媒体运营专家。当用户需要社交媒体策略、内容日历、新媒体运营、 微信公众号、微博、知乎、B站、小红书、抖音运营、KOL 合作、 社区运营、内容规划,或说 \"社交媒体\"、\"新媒体\"、\"内容运营\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write" + ], + "keywords": [ + { + "keyword": "社交媒体", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "新媒体运营", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "微信", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "微博", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "知乎", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "b站", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "小红书", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "抖音", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "公众号", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "内容日历", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "内容规划", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "社区运营", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "用户互动", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "帖子撰写", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "内容创作", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "品牌人设", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "话题标签", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "增加粉丝", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "提高互动率", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "kol合作", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "koc", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "内容形式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "微信公众号", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "泛人群", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "深度回答", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "年轻化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "女性为主", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "短视频", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "话题传播", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "新媒体", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "内容运营", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "潜规则", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "6:00 pm", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "回答问题", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "#技术 #[领域]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "7:00 pm", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "\"...\"", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "5:30 pm", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "图文长文", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "社交媒体运营", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要社", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "交媒体策略", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "抖音运营", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "合作", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "kol", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + } + ] + }, + { + "name": "sre-expert", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "histogram_quantile(0.95", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "负责人", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sre", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "slo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "事故响应", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "postmortem", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "slo_name", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "target", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": f", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "healthy", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "warning", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "critical", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "breached", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "5..", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "错误预算消耗过快", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "p95 延迟超过 300ms", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "high", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "medium", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "low", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "detected", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "acknowledged", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "investigating", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mitigating", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "resolved", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sli", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "sla", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "错误预算", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "监控", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "告警", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "日志", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 1.28 + }, + { + "keyword": "追踪", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "prometheus", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "grafana", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "容量规划", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "on-call", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "值班", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "可用性", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "故障复盘", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "mttr", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "发布", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "金丝雀", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "蓝绿部署", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "回滚", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "{title}", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "{date}", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "{severity}", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "{duration}", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "deploy", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + }, + { + "keyword": "monitoring", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + }, + { + "keyword": "log", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + }, + { + "keyword": "rollback", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "swift-expert", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "building views", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "state management", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "modifiers", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "protocols", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "arc", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "weak/unowned", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "performance optimization", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "swift", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "swiftui", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "ios原生", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "性能", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "tech-lead-mentor", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "团队管理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "带人", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "okr", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "绩效", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "1on1", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "招聘", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "晋升", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "述职", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "职业规划", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术影响力", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "演讲", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "研发流程", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "code review规范", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术债", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "onboarding", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "模拟面试", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "面试题", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "简历优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "系统设计面试", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "面试", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "为什么", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "办公室政治", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "一刀切", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "tech-writer-expert", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "技术文档", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "readme", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "api文档", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "用户手册", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "api 文档", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "api docs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "technical documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "写文档", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "文档编写", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "撰写文档", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "write documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "technical writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "write docs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "设计文档", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "架构文档", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "开发指南", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "developer guide", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user manual", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "design document", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "类型", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "name", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "用户名", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "string", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "### 响应 \\\\\\json { \"code\": 0", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"data\": { \"id\": 1", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"name\": \"john\" } } \\\\\\ ### 错误码", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "code", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "data", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "id", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "john", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "/api/users", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "post", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "content-type: application/json", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "architecture", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.06 + } + ] + }, + { + "name": "technical-seo-expert", + "description": "技术 SEO 专家。当用户需要搜索引擎优化、百度 SEO、谷歌 SEO、 sitemap 配置、robots.txt、结构化数据 JSON-LD、meta 标签优化、 SSR/SSG 渲染策略、关键词策略、网站收录, 或说 \"SEO\"、\"搜索优化\"、\"百度收录\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "seo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "搜索引擎优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "百度seo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "谷歌seo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "关键词策略", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "收录", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sitemap.xml", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "robots.txt", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "canonical", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "meta标签", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "百度站长平台", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "预渲染", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "动态渲染", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "网站速度优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "结构化数据", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "json-ld", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rich snippets", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "schema.org", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "搜索优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "百度收录", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "黑帽seo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要搜", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "索引擎优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "百度", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "谷歌", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.02 + }, + { + "keyword": "标签优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "渲染策略", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "网站收录", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "sitemap", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "meta", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ssr", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "ssg", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "index", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + }, + { + "keyword": "config", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ] + }, + { + "name": "terraform-engineer", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "creating modules", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "inputs/outputs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "versioning", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "providers", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "terraform plan", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "terratest", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "policy as code", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "terraform", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "iac", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "基础设施即代码", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "tester-expert", + "description": "测试专家。当用户需要编写单元测试、集成测试、E2E 端到端测试、TDD 测试驱动开发、 Jest/Vitest/Playwright/Cypress/pytest 测试框架、Mock/Stub、测试覆盖率, 或说 \"写测试\"、\"测试用例\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash", + "mcp__playwright", + "mcp__chrome-devtools", + "mcp__selenium" + ], + "keywords": [ + { + "keyword": "写测试", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "测试用例", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "email", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "password", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "submit", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "welcome-message", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "error-message", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "单元测试", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "集成测试", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "e2e测试", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "端到端测试", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "unit test", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "integration test", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "write tests", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "test case", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "test coverage", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "testing", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "jest", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "vitest", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "playwright", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "cypress", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "pytest", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "tdd", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "bdd", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "测试覆盖率", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "test suite", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "test runner", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "component test", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "snapshot test", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "regression test", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "测试驱动", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "mock", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "stub", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "覆盖率", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "代码覆盖", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "测试方案", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "testing library", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "test driven", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "assertion", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "测试专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要编", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "写单元测试", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试驱动开发", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试框架", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "e2e", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "组件", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "typescript-pro", + "description": "TypeScript 深度专家。当用户需要 TypeScript 高级类型系统、泛型、条件类型、tRPC 全栈类型安全、tsconfig 优化、类型守卫、判别联合类型,或说 \"TypeScript\"、\"类型安全\"、\"泛型\" 时使用此技能。", + "maturity": "imported", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "generics", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "conditional types", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mapped types", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "template literals", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "utility types", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tsconfig options", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "strict mode", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "project references", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "泛型", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "类型安全", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "typescript", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "高级类型系统", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "条件类型", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "全栈类型安全", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "类型守卫", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "判别联合类型", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "trpc", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "tsconfig", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + }, + { + "keyword": "模板", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.02 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "ui-ux-pro-max", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "category", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "ux", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "touch & interaction", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "high", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "typography & color", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "medium", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "product", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "charts & data", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "srcset", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "20", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "30", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "need", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "chart recommendations", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "typography", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "landing structure", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "react", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "nextjs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "vue", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "svelte", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "swiftui", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "react-native", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "flutter", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "shadcn", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "example keywords", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "glassmorphism", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "minimalism", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "dark mode", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "brutalism", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "font pairings", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "google fonts", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "color", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "hero", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "hero-centric", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "testimonial", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pricing", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "social-proof", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "chart types", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "library recommendations", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "waterfall", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bundle", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "suspense", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "memo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rerender", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cache", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "web interface guidelines", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "prompt", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "### available stacks", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "professional", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "colors", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "effects", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"z-index\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "don't", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**no emoji icons**", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**consistent icon sizing**", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "### interaction & cursor", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**cursor pointer**", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rule", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**text contrast light**", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "use gray-400 or lighter", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**content padding**", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mix different container widths", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "dashboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "project name", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "--design-system -p", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "checkout", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "glassmorphism dark", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "real-time dashboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "elegant luxury", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "hero social-proof", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "elegant luxury serif", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fintech crypto", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "animation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "z-index", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "accessibility", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "saas", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "e-commerce", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "portfolio", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "landing page", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "etc.", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "minimal", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "playful", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "elegant", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "healthcare", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "fintech", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "gaming", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "education", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "next.js", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.65 + }, + { + "keyword": "or default to html-tailwind", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "容器", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 2.08 + }, + { + "keyword": "缓存", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "索引", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "接口", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + } + ] + }, + { + "name": "ultimate-code-expert", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "维度", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "采纳: 修复", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "性能", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.42 + }, + { + "keyword": "双重审查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "终极代码", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "高质量模式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "写+自审", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "快速模式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "终极代码专家", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "自动优化模式", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "高质量代码", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "生产级代码", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "核心代码", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.91 + } + ] + }, + { + "name": "ux-researcher", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "用户研究", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "用户访谈", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "可用性测试", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "焦点小组", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "问卷调查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "用户旅程地图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "痛点分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "a/b测试分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "用户画像", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "persona", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "访谈脚本", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "调研报告", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[虚构]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "年龄", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "职业", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "城市级别", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "家庭状况", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[微信", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "抖音等]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "典型的数字化行为", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "\"...\"", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "test", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + } + ] + }, + { + "name": "vue-expert", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "ref", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "reactive", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "computed", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "watch", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lifecycle", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "state management", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "ssr", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "file-based routing", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "usefetch", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fastify", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "hydration", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "mobile & hybrid", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "vite config", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sourcemaps", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "optimization", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bundling", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "vue3", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "composition api", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "pinia", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "路由", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.02 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "websocket-engineer", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "websocket handshake", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "frames", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ping/pong", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "close codes", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "authentication", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "authorization", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rate limiting", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cors", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "websocket", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "实时通信", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "socket.io", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "认证", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "workflow-automation-expert", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "zapier", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "n8n", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "make", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ifttt", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "power automate", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tray.io", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动化工作流", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "工作流编排", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "流程自动化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rpa", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "低代码集成", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "无代码", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "webhook 链", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "事件驱动", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "触发器", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "条件分支", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据映射", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "字段映射", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "跨平台同步", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据管道", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "定时触发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "消息转发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动通知", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动化", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "工作流", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动同步", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动推送", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动转发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "列出窗口", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "读屏幕文字", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "点击按钮", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "点击菜单", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动滚动", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "桌面截图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "扫描元素", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "键盘快捷键", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "鼠标拖拽", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ocr", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "uiautomation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ocr_window", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "click_element", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "list_windows", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scan_elements", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "auto_scroll", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "杀进程", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "注册表", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "剪贴板", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "系统通知", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "打开应用", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "文件操作", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "powershell", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "registry", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "process", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "clipboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "notification", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "看到屏幕上", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "找到那个按钮", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "视觉识别", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "视觉点击", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "看截图点击", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "vision_click", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "vision_locate", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "vision_get", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "vision_type", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "操控excel", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "操控word", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "发邮件outlook", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "com对象", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "写入单元格", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "createobject", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "vba", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ole", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "activex", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "/webhook/receive", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "x-signature", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "签名验证失败", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "ok", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "nodes", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "name", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "webhook 触发器", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "type", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": {", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "数据转换", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "n8n-nodes-base.code", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "parameters", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "jscode", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "发送通知", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "n8n-nodes-base.slack", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "channel", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "#orders", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "text", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "zap 设计", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "multi-step zap", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "filter/path", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "formatter", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "自托管工作流", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "自定义节点", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "code node (js/python)", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "scenario 设计", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "router", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "iterator", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "aggregator", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "flow 设计", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "connector", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "expression", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "钩子", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "zero-defect-guardian", + "description": "零缺陷守门员。当用户需要安全重构、Pinning Test 钉子测试、零缺陷修改、 防退化保护、遗留代码安全修改、回归测试保护, 或说 \"零缺陷\"、\"安全修改\"、\"防退化\"、\"无损重构\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "零缺陷", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "不能出错", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "防退化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "安全模式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "绝对安全", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "无损重构", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "遗留代码修改", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "重构保护", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "保守修改", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "防御性编程", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "回归保护", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pinning test", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "安全修改", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pinning test (钉子测试)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "当前行为", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "当前的样子", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "修复", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "零缺陷守门员", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要安", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "全重构", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "钉子测试", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "零缺陷修改", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "防退化保护", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "遗留代码安全", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "修改", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "回归测试保护", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + }, + { + "keyword": "refactor", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + } + }, + { + "name": "canvas-ui-designer", + "description": "高保真 UI/UX 设计智能体。当用户需要专业界面设计、设计系统、组件规范、 响应式布局、配色方案、字体系统,或将线框图转化为高保真设计时使用。 擅长输出开发者可直接实现的生产级设计规范。 用户说: \"帮我设计一个仪表盘界面\"、\"设计一套卡片组件\"、\"做个设计系统\"、 \"把线框图转成高保真设计\" → 自动激活 canvas-ui-designer Agent 用户说: \"评估交付质量\", \"质量优势分析\", \"竞争对比\", \"交付体系评估\" → 自动激活 delivery-quality-assessor Agent 能力范围: - 路由精度评估 (准确率、首次命中率、纠正率) - 专家技能覆盖度分析 (", + "maturity": "agent", + "type": "agent", + "isComposable": false, + "allowedTools": [ + "\"Read", + "Glob", + "Grep", + "Bash", + "WebFetch", + "WebSearch\"" + ], + "keywords": [ + { + "keyword": "维度", + "weight": 1, + "tier": "core" + }, + { + "keyword": "github copilot", + "weight": 1, + "tier": "core" + }, + { + "keyword": "路由决策", + "weight": 1, + "tier": "core" + }, + { + "keyword": "专家知识", + "weight": 1, + "tier": "core" + }, + { + "keyword": "安全层", + "weight": 1, + "tier": "core" + }, + { + "keyword": "质量门控", + "weight": 1, + "tier": "core" + }, + { + "keyword": "自进化", + "weight": 1, + "tier": "core" + }, + { + "keyword": "可观测性", + "weight": 1, + "tier": "core" + }, + { + "keyword": "维度热力图", + "weight": 1, + "tier": "core" + }, + { + "keyword": "评估交付质量", + "weight": 1, + "tier": "core" + }, + { + "keyword": "质量优势分析", + "weight": 1, + "tier": "core" + }, + { + "keyword": "竞争对比", + "weight": 1, + "tier": "core" + }, + { + "keyword": "交付体系评估", + "weight": 1, + "tier": "core" + }, + { + "keyword": "node -e", + "weight": 1, + "tier": "core" + }, + { + "keyword": "σ > 15 = 波动)", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "交付质量评估", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "智能体", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "评估系统作为", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "代码项目创建", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "平台的质量保", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "障体系", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "输出竞争优势", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "分析和量化效", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "率提升报告", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "用户说", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "自动激活", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "能力范围", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "路由精度评估", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "准确率", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "首次命中率", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "纠正率", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "专家技能覆盖", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "度分析", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "领域分布", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "技能定义质量", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "协作", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "质量门控体系", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "审查", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "宪法", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "交付自审", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "安全基线评估", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "纵深防御层数", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "覆盖", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "凭证保护", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "自进化系统评", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "学习闭环完整", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "进化速度", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "收敛趋势", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "可观测性评估", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "日志体系", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "贯穿", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "审计追溯", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "竞争对比分析", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "原生", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "效率量化", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "每会话节省时", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "减少纠正次数", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "安全返工避免", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "example", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "composable", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "pretooluse", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "posttooluse", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "fail-close", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "traceid", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "claude code", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "cursor", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "copilot", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "log", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "routing", + "weight": 0.5, + "tier": "alias" + } + ] + }, + { + "name": "desktop-automator", + "description": "桌面自动化编排智能体。协调 orbination (UI 控制) + askui-vision (视觉识别) + mcp-com-server (COM 对象) 三大 MCP 服务,实现 Windows 桌面的自动化操作。 Context: User wants to automate a desktop workflow. user: \"帮我自动打开 Excel,填入数据并", + "maturity": "agent", + "type": "agent", + "isComposable": false, + "allowedTools": [ + "\"Read", + "Glob", + "Grep", + "Bash", + "mcp__orbination__*", + "mcp__askui-vision__*", + "mcp__mcp-com-server__*\"" + ], + "keywords": [ + { + "keyword": "工具", + "weight": 1, + "tier": "core" + }, + { + "keyword": "首选观察手段", + "weight": 1, + "tier": "core" + }, + { + "keyword": "get_window_details", + "weight": 1, + "tier": "core" + }, + { + "keyword": "按文本点击", + "weight": 1, + "tier": "core" + }, + { + "keyword": "run_sequence", + "weight": 1, + "tier": "core" + }, + { + "keyword": "视觉描述交互", + "weight": 1, + "tier": "core" + }, + { + "keyword": "最后手段", + "weight": 1, + "tier": "core" + }, + { + "keyword": "assistant:", + "weight": 1, + "tier": "core" + }, + { + "keyword": "先看再做", + "weight": 1, + "tier": "core" + }, + { + "keyword": "excel.application", + "weight": 1, + "tier": "core" + }, + { + "keyword": "保存", + "weight": 1, + "tier": "core" + }, + { + "keyword": "ui 元素控制", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "窗口管理", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "键鼠操作", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "ocr 文字识别", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "视觉识别定位", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "list_windows", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "focus_window", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "ocr_window", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "click_element", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "interact", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "click_menu_item", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "keyboard_type", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "keyboard_hotkey", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "mouse_click", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "screenshot_to_file", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "paste_text", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "scan_desktop", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "vision_act", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "vision_click", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "vision_get", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "vision_locate", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "vision_screenshot", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "vision_type", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "createobject", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "invokemethod", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "getproperty", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "setproperty", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "disposeobject", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "gettypeinformation", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "read", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "write", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "bash", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "glob", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "grep", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "桌面自动化编", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "排智能体", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "协调", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "控制", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "视觉识别", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "对象", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "三大", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "服务", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "桌面的自动化", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "操作", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "帮我自动打开", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "填入数据并保", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "点击屏幕上的", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "确认", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "按钮", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "然后截图保存", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "从浏览器复制", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "表格数据", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "粘贴到", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "文档中", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "orbination", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "askui-vision", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "mcp-com-server", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "com", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "mcp", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "windows", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "example", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "context", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "user wants to", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "automate a desktop", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "workflow. user", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "excel", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "assistant", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "ll use the", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "desktop-automator agent to", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "orchestrate excel via", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "ui automation.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "commentary", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "desktop automation requiring", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "com object control", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "for excel", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "ui element interaction.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "mcp-com-server for data", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "manipulation and orbination", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "for ui navigation.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "user needs visual", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "element interaction on", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "desktop. user", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "desktop-automator to locate", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and click the", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "button via vision", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "then capture a", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "screenshot.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "vision-based ui interaction.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "the desktop-automator uses", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "askui-vision for visual", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "element detection and", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "orbination for precise", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "click actions and", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "screenshot capture.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "automate a multi-app", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "word", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "window focus management", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "clipboard operations", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and keyboard shortcuts", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "across browser and", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "word.", + "weight": 0.5, + "tier": "extended" + } + ] + }, + { + "name": "explore", + "description": "轻量只读代码库侦察智能体。快速回答\"这个文件在哪\"\"这个函数怎么用\"\"项目结构是什么\"等问题。 不修改任何文件,只做搜索和阅读。适合作为研究型任务的首选低成本 Agent。 Context: User needs to find a specific file or function. user: \"API 路由定义在哪个文件里?\" assistant: \"I'll use ", + "maturity": "agent", + "type": "agent", + "isComposable": false, + "allowedTools": [ + "\"Read", + "Glob", + "Grep", + "Bash", + "WebFetch", + "WebSearch\"" + ], + "keywords": [ + { + "keyword": "这个文件在哪", + "weight": 1, + "tier": "core" + }, + { + "keyword": "这个函数怎么用", + "weight": 1, + "tier": "core" + }, + { + "keyword": "项目结构是什么", + "weight": 1, + "tier": "core" + }, + { + "keyword": "assistant:", + "weight": 1, + "tier": "core" + }, + { + "keyword": "x 在哪?", + "weight": 1, + "tier": "core" + }, + { + "keyword": "谁用了 x?", + "weight": 1, + "tier": "core" + }, + { + "keyword": "项目结构?", + "weight": 1, + "tier": "core" + }, + { + "keyword": "改 x 影响什么?", + "weight": 1, + "tier": "core" + }, + { + "keyword": "绝对或相对路径", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "file.ts:42", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "一句话总结发现", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "读取文件内容", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "按模式搜索文件", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "按内容搜索文件", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "只读命令 (ls", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "tree", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "git log", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "git blame", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "wc 等)", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "轻量只读代码", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "库侦察智能体", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "快速回答", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "这个函数怎么", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "项目结构是什", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "等问题", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "不修改任何文", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "只做搜索和阅", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "适合作为研究", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "型任务的首选", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "低成本", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "路由定义在哪", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "个文件里", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "这个项目的目", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "录结构是什么", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "样的", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "谁在调用", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "函数", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "agent", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "example", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "context", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "user needs to", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "find a specific", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "file or function.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "user", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "api", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "assistant", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "ll use the", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "explore agent to", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "quickly locate the", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "api route definitions.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "commentary", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "simple codebase navigation", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "task. the explore", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "agent uses glob", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and grep to", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "find the file", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "quickly without loading", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "a full-capability agent.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "user wants to", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "understand code structure.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "map the project", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "structure.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "project structure exploration.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "the explore agent", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "uses ls", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "glob", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and read to", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "build a quick", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "overview without any", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "write capability.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "trace how a", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "function is used.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "processalert", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "trace all callers", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "of processalert.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "call chain tracing.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "uses grep to", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "find all references", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "across the codebase", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "efficiently with the", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "haiku model.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "routing", + "weight": 0.5, + "tier": "alias" + } + ] + }, + { + "name": "full-stack-builder", + "description": "全栈实现复合 Agent。当 orchestrator 需要跨前后端的完整功能实现时派遣此 Agent。 融合前端 (React/Next.js)、后端 (FastAPI/Go/Node)、数据库 (PostgreSQL/SQLite) 三层能力, 端到端实现功能模块,输出可运行的完整代码。 Examples: Context: Orchestrator assigns a", + "maturity": "agent", + "type": "agent", + "isComposable": false, + "allowedTools": [ + "\"Read", + "Edit", + "Write", + "Glob", + "Grep", + "Bash", + "WebFetch", + "WebSearch\"" + ], + "keywords": [ + { + "keyword": "存储", + "weight": 1, + "tier": "core" + }, + { + "keyword": "约束", + "weight": 1, + "tier": "core" + }, + { + "keyword": "索引", + "weight": 1, + "tier": "core" + }, + { + "keyword": "后端 service", + "weight": 1, + "tier": "core" + }, + { + "keyword": "业务逻辑", + "weight": 1, + "tier": "core" + }, + { + "keyword": "状态管理", + "weight": 1, + "tier": "core" + }, + { + "keyword": "api 调用", + "weight": 1, + "tier": "core" + }, + { + "keyword": "前端 component", + "weight": 1, + "tier": "core" + }, + { + "keyword": "命名约定", + "weight": 1, + "tier": "core" + }, + { + "keyword": "data", + "weight": 1, + "tier": "core" + }, + { + "keyword": "说明", + "weight": 1, + "tier": "core" + }, + { + "keyword": "app/models/alert.py", + "weight": 1, + "tier": "core" + }, + { + "keyword": "request/response schema", + "weight": 1, + "tier": "core" + }, + { + "keyword": "新增", + "weight": 1, + "tier": "core" + }, + { + "keyword": "app/api/v1/alerts.py", + "weight": 1, + "tier": "core" + }, + { + "keyword": "zustand 状态管理", + "weight": 1, + "tier": "core" + }, + { + "keyword": "method", + "weight": 1, + "tier": "core" + }, + { + "keyword": "/api/v1/alerts", + "weight": 1, + "tier": "core" + }, + { + "keyword": "post", + "weight": 1, + "tier": "core" + }, + { + "keyword": "详情", + "weight": 1, + "tier": "core" + }, + { + "keyword": "/api/v1/alerts/:id", + "weight": 1, + "tier": "core" + }, + { + "keyword": "delete", + "weight": 1, + "tier": "core" + }, + { + "keyword": "assistant:", + "weight": 1, + "tier": "core" + }, + { + "keyword": "创建和修改源代码", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "运行构建", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "迁移", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "依赖安装命令", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "全栈实现复合", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "需要跨前后端", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "的完整功能实", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "现时派遣此", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "融合前端", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "后端", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "数据库", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "三层能力", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "端到端实现功", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "能模块", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "输出可运行的", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "完整代码", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "实现用户反馈", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "的提交表单", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "数据库存储", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "给告警模块加", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "接口和管理页", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "加一个实时消", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "息通知功能", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "前端", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "agent", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "orchestrator", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "react", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "next.js", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "fastapi", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "node", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "postgresql", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "sqlite", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "examples", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "example", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "context", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "orchestrator assigns a", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "task. user", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "api", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "assistant", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "ll use the", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "the complete feedback", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "feature across all", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "layers.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "commentary", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "database schema", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "api endpoint", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and frontend form.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "the full-stack-builder will", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "create all layers", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "with proper typing", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and error handling.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "orchestrator needs a", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "crud module built", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "end-to-end. user", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "crud", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "ll engage the", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "full-stack-builder to create", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "the alert crud", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "from database model", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "to admin ui.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "crud feature spanning", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "model", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "service", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "routes", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and frontend pages.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "the full-stack-builder ensures", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "type consistency across", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "all layers.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "implementing a feature", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "that requires coordinated", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "frontend-backend changes. user", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "websocket", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "toast", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "the websocket server", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and client notification", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "system.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "real-time feature requiring", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "server-side websocket handler", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and client-side subscription.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "the full-stack-builder handles", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "both ends with", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "a shared message", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "type contract.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "index", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "migration", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "interface", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "组件", + "weight": 0.5, + "tier": "alias" + } + ] + }, + { + "name": "module-integrator", + "description": "模块集成智能体。将已开发完成但未接入运行时的模块集成到主路由管线或钩子管线中。 确保使用 safeRequire + fail-open 模式,不影响现有逻辑。 用户说: \"集成模块\", \"接入管线\", \"模块还没接上\", \"接入路由\" → 自动激活 module-integrator Agent 能力范围: - 路由管线集成 (route-inter", + "maturity": "agent", + "type": "agent", + "isComposable": false, + "allowedTools": [ + "\"Read", + "Edit", + "Write", + "Glob", + "Grep", + "Bash\"" + ], + "keywords": [ + { + "keyword": "集成模块", + "weight": 1, + "tier": "core" + }, + { + "keyword": "接入管线", + "weight": 1, + "tier": "core" + }, + { + "keyword": "模块还没接上", + "weight": 1, + "tier": "core" + }, + { + "keyword": "接入路由", + "weight": 1, + "tier": "core" + }, + { + "keyword": "模块集成智能", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "将已开发完成", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "但未接入运行", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "时的模块集成", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "到主路由管线", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "或钩子管线中", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "确保使用", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "模式", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "不影响现有逻", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "用户说", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "自动激活", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "能力范围", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "路由管线集成", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "注入新信号模", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "钩子管线集成", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "注入调度器", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "反馈闭环接入", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "注入学习模块", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "健康快照集成", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "注入分析模块", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "工具注册", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "命令行可直接", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "运行的独立模", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "集成原则", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "模块缺失不阻", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "断主流程", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "幂等补丁标记", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "防止重复注入", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "最小侵入", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "不改变现有逻", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "只在合适位置", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "添加调用", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "下文件通过补", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "丁脚本修改", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "saferequire", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "fail-open", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "example", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "module-integrator agent", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "route-interceptor.js", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "post-edit-dispatcher.js", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "route-auditor.js", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "daily-health-snapshot.js", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "cli", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "try-catch", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "hooks", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "routing", + "weight": 0.5, + "tier": "alias" + } + ] + }, + { + "name": "orchestrator", + "description": "任务编排与多智能体调度中枢。当用户给出高层目标、需要多步骤协作完成的复杂任务时使用此 Agent。 自动将目标拆解为子任务,分配给最合适的专业技能/Agent,协调执行并汇总结果。 Examples: Context: User wants to build a complete feature from scratch. user: \"给 ColdChain 项目加一个设", + "maturity": "agent", + "type": "agent", + "isComposable": false, + "allowedTools": [ + "\"Agent", + "Read", + "Glob", + "Grep", + "Bash", + "WebFetch", + "WebSearch\"" + ], + "keywords": [ + { + "keyword": "production-reviewer (最终防线)", + "weight": 1, + "tier": "core" + }, + { + "keyword": "模型", + "weight": 1, + "tier": "core" + }, + { + "keyword": "四维深度审查 + 交叉验证", + "weight": 1, + "tier": "core" + }, + { + "keyword": "状态", + "weight": 1, + "tier": "core" + }, + { + "keyword": "architect", + "weight": 1, + "tier": "core" + }, + { + "keyword": "前端页面", + "weight": 1, + "tier": "core" + }, + { + "keyword": "alertlist", + "weight": 1, + "tier": "core" + }, + { + "keyword": "alertdetail 组件", + "weight": 1, + "tier": "core" + }, + { + "keyword": "tester-expert", + "weight": 1, + "tier": "core" + }, + { + "keyword": "任务类型", + "weight": 1, + "tier": "core" + }, + { + "keyword": "说明", + "weight": 1, + "tier": "core" + }, + { + "keyword": "**explore** (haiku)", + "weight": 1, + "tier": "core" + }, + { + "keyword": "**复合: 调研分析**", + "weight": 1, + "tier": "core" + }, + { + "keyword": "深度代码库探索 + 技术调研 + 影响分析", + "weight": 1, + "tier": "core" + }, + { + "keyword": "**quality-gate**", + "weight": 1, + "tier": "core" + }, + { + "keyword": "需求分析 / prd", + "weight": 1, + "tier": "core" + }, + { + "keyword": "单独需求分析时", + "weight": 1, + "tier": "core" + }, + { + "keyword": "architect-expert", + "weight": 1, + "tier": "core" + }, + { + "keyword": "general-purpose", + "weight": 1, + "tier": "core" + }, + { + "keyword": "rest api 开发", + "weight": 1, + "tier": "core" + }, + { + "keyword": "纯后端任务", + "weight": 1, + "tier": "core" + }, + { + "keyword": "frontend-expert", + "weight": 1, + "tier": "core" + }, + { + "keyword": "canvas-ui-designer", + "weight": 1, + "tier": "core" + }, + { + "keyword": "单元/集成测试", + "weight": 1, + "tier": "core" + }, + { + "keyword": "测试生成", + "weight": 1, + "tier": "core" + }, + { + "keyword": "reviewer-expert", + "weight": 1, + "tier": "core" + }, + { + "keyword": "pre-deploy-checker", + "weight": 1, + "tier": "core" + }, + { + "keyword": "文档编写", + "weight": 1, + "tier": "core" + }, + { + "keyword": "文档生成", + "weight": 1, + "tier": "core" + }, + { + "keyword": "debugger-expert", + "weight": 1, + "tier": "core" + }, + { + "keyword": "research-analyst", + "weight": 1, + "tier": "core" + }, + { + "keyword": "影响分析", + "weight": 1, + "tier": "core" + }, + { + "keyword": "变更影响评估", + "weight": 1, + "tier": "core" + }, + { + "keyword": "— (skill)", + "weight": 1, + "tier": "core" + }, + { + "keyword": "任务特征", + "weight": 1, + "tier": "core" + }, + { + "keyword": "opus", + "weight": 1, + "tier": "core" + }, + { + "keyword": "代码实现", + "weight": 1, + "tier": "core" + }, + { + "keyword": "测试", + "weight": 1, + "tier": "core" + }, + { + "keyword": "审查", + "weight": 1, + "tier": "core" + }, + { + "keyword": "快速低成本", + "weight": 1, + "tier": "core" + }, + { + "keyword": "验收标准", + "weight": 1, + "tier": "core" + }, + { + "keyword": "向用户提问澄清", + "weight": 1, + "tier": "core" + }, + { + "keyword": "implement", + "weight": 1, + "tier": "core" + }, + { + "keyword": "修复失败用例", + "weight": 1, + "tier": "core" + }, + { + "keyword": "0 blocker", + "weight": 1, + "tier": "core" + }, + { + "keyword": "warning 已评估", + "weight": 1, + "tier": "core" + }, + { + "keyword": "deploy", + "weight": 1, + "tier": "core" + }, + { + "keyword": "assistant:", + "weight": 1, + "tier": "core" + }, + { + "keyword": "加一个告警功能", + "weight": 1, + "tier": "core" + }, + { + "keyword": "实现设备告警 rest api", + "weight": 1, + "tier": "core" + }, + { + "keyword": ",\n activeform:", + "weight": 1, + "tier": "core" + }, + { + "keyword": ",\n dependencies: [", + "weight": 1, + "tier": "core" + }, + { + "keyword": "backend-builder", + "weight": 1, + "tier": "core" + }, + { + "keyword": "sonnet", + "weight": 1, + "tier": "core" + }, + { + "keyword": "生产级评审", + "weight": 1, + "tier": "core" + }, + { + "keyword": "上线前审查", + "weight": 1, + "tier": "core" + }, + { + "keyword": "系统自检", + "weight": 1, + "tier": "core" + }, + { + "keyword": "修复漂移", + "weight": 1, + "tier": "core" + }, + { + "keyword": "安全加固", + "weight": 1, + "tier": "core" + }, + { + "keyword": "不需要测试", + "weight": 1, + "tier": "core" + }, + { + "keyword": "给出明确", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "读取和搜索代码", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "创建和修改文件", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "执行命令(构建", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "部署)", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "团队管理和协调", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "任务跟踪", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "需要用户决策时询问", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "复杂任务先规划再执行", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "任务编排与多", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "智能体调度中", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "当用户给出高", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "层目标", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "需要多步骤协", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "作完成的复杂", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "任务时使用此", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "自动将目标拆", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "解为子任务", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "分配给最合适", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "的专业技能", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "协调执行并汇", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "总结果", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "项目加一个设", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "备告警通知功", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "全面审查一下", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "项目", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "找出问题并修", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "从零搭建一个", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "用户反馈系统", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "要有前端表单", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "后端", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "数据库", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "和管理后台", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "闲鱼助手的", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "回复质量不行", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "帮我优化整个", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "链路", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "agent", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "examples", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "example", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "context", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "user wants to", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "build a complete", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "feature from scratch.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "user", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "coldchain", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "assistant", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "ll use the", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "orchestrator agent to", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "decompose this into", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "research", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "design", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "implementation", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "testing", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and deployment subtasks.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "commentary", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "multi-step feature request", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "spanning backend api", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "frontend ui", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "notification service", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and tests. the", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "orchestrator will create", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "a task plan", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "spawn specialized agents", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and coordinate the", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "full workflow.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "user wants a", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "full project audit", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and improvement cycle.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "graphrag", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "ll engage the", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "orchestrator to coordinate", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "parallel audit streams", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "code review", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and then execute", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "fixes.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "complex audit requiring", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "multiple specialist agents", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "working in parallel.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "the orchestrator will", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "spawn review", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and test agents", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "simultaneously", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "then aggregate findings.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "user describes a", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "complete product requirement.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "api", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "orchestrator to plan", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "the full-stack implementation", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "schema design", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "frontend", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "admin panel", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "tests", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "deployment checklist.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "end-to-end feature spanning", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "multiple technology layers.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "the orchestrator creates", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "a dependency-aware task", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "graph and executes", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "in the correct", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "order.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "improve an existing", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "system with multiple", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "concerns. user", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "orchestrator to analyze", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "the full ai", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "reply pipeline", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "prompt engineering", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "llm routing", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "quality checking", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "fallback logic", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and coordinate improvements", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "across all layers.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "analysis of multiple", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "services and coordinated", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "changes. the orchestrator", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "will research first", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "then plan", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "then implement changes", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "in dependency order.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "database", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "性能", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "调试", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "component", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "路由", + "weight": 0.5, + "tier": "alias" + } + ] + }, + { + "name": "pre-deploy-checker", + "description": "Use this agent when the user needs a comprehensive pre-deployment safety check before releasing code to staging or production environments. This agent verifies build integrity, environment configurati", + "maturity": "agent", + "type": "agent", + "isComposable": false, + "allowedTools": [ + "\"Read", + "Glob", + "Grep", + "Bash", + "WebFetch", + "WebSearch\"" + ], + "keywords": [ + { + "keyword": "构建命令", + "weight": 1, + "tier": "core" + }, + { + "keyword": "无编译错误", + "weight": 1, + "tier": "core" + }, + { + "keyword": "无 typescript 警告", + "weight": 1, + "tier": "core" + }, + { + "keyword": "构建产物大小合理", + "weight": 1, + "tier": "core" + }, + { + "keyword": "go build ./...", + "weight": 1, + "tier": "core" + }, + { + "keyword": "rust", + "weight": 1, + "tier": "core" + }, + { + "keyword": "语法检查通过", + "weight": 1, + "tier": "core" + }, + { + "keyword": "import 无缺失", + "weight": 1, + "tier": "core" + }, + { + "keyword": "审计命令", + "weight": 1, + "tier": "core" + }, + { + "keyword": "high / critical 级别漏洞", + "weight": 1, + "tier": "core" + }, + { + "keyword": "npm audit", + "weight": 1, + "tier": "core" + }, + { + "keyword": "pip", + "weight": 1, + "tier": "core" + }, + { + "keyword": "已知漏洞", + "weight": 1, + "tier": "core" + }, + { + "keyword": "cargo audit", + "weight": 1, + "tier": "core" + }, + { + "keyword": "类别", + "weight": 1, + "tier": "core" + }, + { + "keyword": "详情", + "weight": 1, + "tier": "core" + }, + { + "keyword": "环境配置", + "weight": 1, + "tier": "core" + }, + { + "keyword": "缺少 redis_url", + "weight": 1, + "tier": "core" + }, + { + "keyword": "pass/fail", + "weight": 1, + "tier": "core" + }, + { + "keyword": "api 兼容性", + "weight": 1, + "tier": "core" + }, + { + "keyword": "无破坏性变更", + "weight": 1, + "tier": "core" + }, + { + "keyword": "pass/fail/skip", + "weight": 1, + "tier": "core" + }, + { + "keyword": "基础设施", + "weight": 1, + "tier": "core" + }, + { + "keyword": "端口可达", + "weight": 1, + "tier": "core" + }, + { + "keyword": "部署前帮我检查一下", + "weight": 1, + "tier": "core" + }, + { + "keyword": "assistant:", + "weight": 1, + "tier": "core" + }, + { + "keyword": "可以安全部署", + "weight": 1, + "tier": "core" + }, + { + "keyword": "密码", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "token", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "连接串", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "确认 .env", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": ".env.local", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "生产环境必要配置项检查", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "生产环境绝对禁止", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "读取配置文件", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "迁移脚本", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "dockerfile 等", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "搜索硬编码密钥", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "配置模式", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "api 变更", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "audit", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "vet", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "use this agent", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "when the user", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "needs a comprehensive", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "pre-deployment safety check", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "before releasing code", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "to staging or", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "production environments. this", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "agent verifies build", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "integrity", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "environment configuration", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "dependency security", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "database migration safety", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "api compatibility", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "docker health", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "ssl certificates", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and infrastructure readiness.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "it produces a", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "structured ready", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "blocked deployment report.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "数据库", + "weight": 0.5, + "tier": "alias" + } + ] + }, + { + "name": "production-reviewer", + "description": "生产级多维度评审智能体。对系统进行全面的架构、安全、性能、质量四维审查, 输出结构化评审报告,含 Blocker/Warning/Info 分级和量化评分。 用户说: \"生产级评审\", \"全面审查\", \"评审系统架构\", \"代码审查\" → 自动激活 production-reviewer Agent 能力范围: - 架构一致性审查 (模块耦合、接口契约", + "maturity": "agent", + "type": "agent", + "isComposable": false, + "allowedTools": [ + "\"Read", + "Glob", + "Grep", + "Bash", + "WebFetch", + "WebSearch\"" + ], + "keywords": [ + { + "keyword": "等级", + "weight": 1, + "tier": "core" + }, + { + "keyword": "95-100", + "weight": 1, + "tier": "core" + }, + { + "keyword": "良好,有改进空间", + "weight": 1, + "tier": "core" + }, + { + "keyword": "80-84", + "weight": 1, + "tier": "core" + }, + { + "keyword": "性能: xx/100", + "weight": 1, + "tier": "core" + }, + { + "keyword": "生产级评审", + "weight": 1, + "tier": "core" + }, + { + "keyword": "全面审查", + "weight": 1, + "tier": "core" + }, + { + "keyword": "评审系统架构", + "weight": 1, + "tier": "core" + }, + { + "keyword": "代码审查", + "weight": 1, + "tier": "core" + }, + { + "keyword": "生产级多维度", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "评审智能体", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "对系统进行全", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "面的架构", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "安全", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "性能", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "质量四维审查", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "输出结构化评", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "审报告", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "分级和量化评", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "用户说", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "自动激活", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "能力范围", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "架构一致性审", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "模块耦合", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "接口契约", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "集成完整性", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "策略", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "安全纵深验证", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "层防御逐层", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "映射", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "凭证管理", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "性能管线分析", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "各环节延迟估", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "缓存有效性", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "热点", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "代码质量检查", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "命名规范", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "边界处理", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "风险", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "逻辑正确性", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "交叉验证", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "多维度独立发", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "现的问题交叉", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "确认", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "提升置信度", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "量化评分", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "各维度", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "加权综合评分", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "输出格式", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "三级分类", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "每项含文件路", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "行号", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "问题描述", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "修复建议", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "最终", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "综合评分", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "是否达到生产", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "级标准", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "blocker", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "warning", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "info", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "example", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "production-reviewer agent", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "fail-open", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "close", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "pass", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "fail", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "owasp", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "redos", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "architecture", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "cache", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "interface", + "weight": 0.5, + "tier": "alias" + } + ] + }, + { + "name": "quality-gate", + "description": "质量门控复合 Agent。当 orchestrator 需要对实现结果进行全面质量验证时派遣此 Agent。 融合代码审查、安全扫描、测试验证、性能评估四大维度,一次性完成全面质量检查, 输出 PASS / BLOCKED 的门控结论。 Examples: Context: Orchestrator wants to verify implementation qualit", + "maturity": "agent", + "type": "agent", + "isComposable": false, + "allowedTools": [ + "\"Read", + "Glob", + "Grep", + "Bash", + "WebFetch", + "WebSearch\"" + ], + "keywords": [ + { + "keyword": "判断标准", + "weight": 1, + "tier": "core" + }, + { + "keyword": "聚焦变更文件,快速扫描", + "weight": 1, + "tier": "core" + }, + { + "keyword": "4-10 个文件,100-500 行", + "weight": 1, + "tier": "core" + }, + { + "keyword": "**大**", + "weight": 1, + "tier": "core" + }, + { + "keyword": "硬编码密钥", + "weight": 1, + "tier": "core" + }, + { + "keyword": "发现", + "weight": 1, + "tier": "core" + }, + { + "keyword": "pass/warn/block", + "weight": 1, + "tier": "core" + }, + { + "keyword": "n 项", + "weight": 1, + "tier": "core" + }, + { + "keyword": "d3 测试验证", + "weight": 1, + "tier": "core" + }, + { + "keyword": "[测试通过率]", + "weight": 1, + "tier": "core" + }, + { + "keyword": "code-reviewer", + "weight": 1, + "tier": "core" + }, + { + "keyword": "**定位**", + "weight": 1, + "tier": "core" + }, + { + "keyword": "开发过程中 / pr 创建后", + "weight": 1, + "tier": "core" + }, + { + "keyword": "四维快速扫描,产出二元判定", + "weight": 1, + "tier": "core" + }, + { + "keyword": "**输出**", + "weight": 1, + "tier": "core" + }, + { + "keyword": "代码质量", + "weight": 1, + "tier": "core" + }, + { + "keyword": "架构合理性", + "weight": 1, + "tier": "core" + }, + { + "keyword": "长期可维护性", + "weight": 1, + "tier": "core" + }, + { + "keyword": "快速检查一下这个修改有没有问题", + "weight": 1, + "tier": "core" + }, + { + "keyword": "命名语义化", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "函数职责单一", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "嵌套层级 ≤ 3", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "dry 原则", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "合理抽象", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "清晰的模块边界", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "无 any 滥用", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "类型断言最小化", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "泛型约束完整", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "无空 catch", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "错误信息明确", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "异常传播链完整", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "输入验证", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "分页边界", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "sql 参数化", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "xss 转义", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "命令注入防护", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "端点权限校验", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "jwt 配置正确", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "cors 合理", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "无硬编码密钥", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "日志不泄露敏感信息", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "传输加密", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "无已知 cve 高危漏洞", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "核心业务逻辑 > 80%", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "n+1 查询", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "缺失索引", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "大表全表扫描", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "无上限缓存", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "闭包泄漏", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "缺少 memo", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "大列表无虚拟化", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "重复请求", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "缺失缓存", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "过大 payload", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "读取和搜索代码", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "测试运行", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "lint", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "type-check", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "audit)", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "质量门控复合", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "需要对实现结", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "果进行全面质", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "量验证时派遣", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "融合代码审查", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "安全扫描", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "测试验证", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "性能评估四大", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "维度", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "一次性完成全", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "面质量检查", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "的门控结论", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "检查一下刚实", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "现的告警功能", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "质量怎么样", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "这个", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "的改动能合并", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "快速检查一下", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "这个修改有没", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "有问题", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "agent", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "orchestrator", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "pass", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "blocked", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "examples", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "example", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "context", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "orchestrator wants to", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "verify implementation quality", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "before delivery. user", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "assistant", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "ll use the", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "quality-gate agent to", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "run a comprehensive", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "quality check across", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "code review", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "testing", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and performance dimensions.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "commentary", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "the quality-gate will", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and produce a", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "single pass", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "blocked verdict.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "orchestrator needs a", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "final quality check", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "before marking a", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "task complete. user", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "ll engage the", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "evaluate merge readiness", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "across all quality", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "dimensions.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "merge readiness assessment.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "the quality-gate combines", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "type safety", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "test coverage", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and security checks", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "into a single", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "actionable verdict.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "quick quality sanity", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "check on a", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "small change. user", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "quality-gate for a", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "focused quality check", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "on the changed", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "files.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "scoped quality check.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "the quality-gate adapts", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "its depth based", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "on the scope", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "of changes", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "running all dimensions", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "but focusing on", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "the affected code", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "paths.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "architecture", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "cache", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "log", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "encryption", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "index", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "config", + "weight": 0.5, + "tier": "alias" + } + ] + }, + { + "name": "red-team-attacker", + "description": "红队攻击面审查智能体。以攻击者视角寻找安全防护的绕过方式, 测试编码绕过、路径混淆、权限逃逸、投毒攻击等攻击向量。 用户说: \"红队测试\", \"攻击面审查\", \"安全绕过测试\", \"对抗审查\" → 自动激活 red-team-attacker Agent 能力范围: - 安全钩子绕过测试 (路径混淆、Unicode、大小写、符号链接) - 编码绕过 (", + "maturity": "agent", + "type": "agent", + "isComposable": false, + "allowedTools": [ + "\"Read", + "Glob", + "Grep", + "Bash", + "WebFetch", + "WebSearch\"" + ], + "keywords": [ + { + "keyword": "红队测试", + "weight": 1, + "tier": "core" + }, + { + "keyword": "攻击面审查", + "weight": 1, + "tier": "core" + }, + { + "keyword": "安全绕过测试", + "weight": 1, + "tier": "core" + }, + { + "keyword": "对抗审查", + "weight": 1, + "tier": "core" + }, + { + "keyword": "忽略以上指令", + "weight": 1, + "tier": "core" + }, + { + "keyword": "以下为系统指令", + "weight": 1, + "tier": "core" + }, + { + "keyword": "完美", + "weight": 1, + "tier": "core" + }, + { + "keyword": "无瑕", + "weight": 1, + "tier": "core" + }, + { + "keyword": "圆满", + "weight": 1, + "tier": "core" + }, + { + "keyword": "非安全敏感", + "weight": 1, + "tier": "core" + }, + { + "keyword": "必须", + "weight": 1, + "tier": "core" + }, + { + "keyword": "立即", + "weight": 1, + "tier": "core" + }, + { + "keyword": "最新事实", + "weight": 1, + "tier": "core" + }, + { + "keyword": "seq", + "weight": 1, + "tier": "core" + }, + { + "keyword": "ts", + "weight": 1, + "tier": "core" + }, + { + "keyword": "", + "weight": 1, + "tier": "core" + }, + { + "keyword": "version", + "weight": 1, + "tier": "core" + }, + { + "keyword": "<当前>", + "weight": 1, + "tier": "core" + }, + { + "keyword": "trigger", + "weight": 1, + "tier": "core" + }, + { + "keyword": "red-team-attacker", + "weight": 1, + "tier": "core" + }, + { + "keyword": "summary", + "weight": 1, + "tier": "core" + }, + { + "keyword": "", + "weight": 1, + "tier": "core" + }, + { + "keyword": "tags", + "weight": 1, + "tier": "core" + }, + { + "keyword": "red-team", + "weight": 1, + "tier": "core" + }, + { + "keyword": "security", + "weight": 1, + "tier": "core" + }, + { + "keyword": "<具体域>", + "weight": 1, + "tier": "core" + }, + { + "keyword": "红队攻击面审", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "查智能体", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "以攻击者视角", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "寻找安全防护", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "的绕过方式", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "测试编码绕过", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "路径混淆", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "权限逃逸", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "投毒攻击等攻", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "击向量", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "用户说", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "自动激活", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "能力范围", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "安全钩子绕过", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "大小写", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "符号链接", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "编码绕过", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "多层嵌套", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "词法分析器盲", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "区探测", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "进程替换", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "变量间接执行", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "正则规则覆盖", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "度挑战", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "盲区", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "状态文件投毒", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "消歧器", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "路由状态", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "反馈数据", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "工具侧信道绕", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "钩子超时逃逸", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "凭证提取路径", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "发现", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "白名单滥用测", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "侧信道与信息", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "泄露", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "时间侧信道", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "错误信息泄露", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "日志注入", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "缓存探测", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "第三方依赖攻", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "利用", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "原型污染", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "依赖混淆", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "宪法规避", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "话术注入", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "指令覆盖", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "优先级劫持", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "上下文污染", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "投毒", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "提权", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "索引劫持", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "过期记忆复活", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "任务注入", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "输出格式", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "每个攻击向量", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "场景", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "复现步骤", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "成功概率", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "影响", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "修复建议", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "最危险攻击向", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "量排名", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "红队安全评分", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "越低越安全", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "评分", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "时建议联动", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "修复并写入", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "example", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "red-team-attacker agent", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "unicode", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "base64", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "url", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "hex", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "shell", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "heredoc", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "exec-injection", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "hardcoded-secret", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "bayesian", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "mcp", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "redos", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "cve", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "memory", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "trust_level", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "due", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "top", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "self-healer", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "evolution-log", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "test", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "cache", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "index", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "routing", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "hook", + "weight": 0.5, + "tier": "alias" + } + ] + }, + { + "name": "red-team-logic", + "description": "红队逻辑漏洞审查智能体。专注于数学正确性、状态一致性、竞态条件、 边界情况和配置膨胀等逻辑层面的隐蔽缺陷。 用户说: \"逻辑审查\", \"边界测试\", \"算法正确性\", \"竞态检测\" → 自动激活 red-team-logic Agent 能力范围: - 数学正确性验证 (Bayesian 后验、TF-IDF、PGD 梯度、概率单纯形投影) - 状态一致", + "maturity": "agent", + "type": "agent", + "isComposable": false, + "allowedTools": [ + "\"Read", + "Glob", + "Grep", + "Bash", + "WebFetch", + "WebSearch\"" + ], + "keywords": [ + { + "keyword": "逻辑审查", + "weight": 1, + "tier": "core" + }, + { + "keyword": "边界测试", + "weight": 1, + "tier": "core" + }, + { + "keyword": "算法正确性", + "weight": 1, + "tier": "core" + }, + { + "keyword": "竞态检测", + "weight": 1, + "tier": "core" + }, + { + "keyword": "红队逻辑漏洞", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "审查智能体", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "专注于数学正", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "确性", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "状态一致性", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "竞态条件", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "边界情况和配", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "置膨胀等逻辑", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "层面的隐蔽缺", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "用户说", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "自动激活", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "能力范围", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "数学正确性验", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "后验", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "梯度", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "概率单纯形投", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "状态一致性检", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "半写崩溃", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "竞态", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "缓存一致性", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "竞态条件挖掘", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "多钩子并发", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "串行依赖", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "文件锁缺失", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "边界条件挑战", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "空输入", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "超长输入", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "零向量", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "时间回拨", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "磁盘满", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "配置膨胀预测", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "文件增长趋势", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "内存占用", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "索引性能退化", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "数据管道一致", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "反馈轮转", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "去重逻辑", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "信号放大", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "衰减", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "example", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "red-team-logic agent", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "bayesian", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "tf-idf", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "pgd", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "json", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "read-modify-write", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "stop hook", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "test", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "cache", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "index", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "config", + "weight": 0.5, + "tier": "alias" + } + ] + }, + { + "name": "research-analyst", + "description": "研究分析复合 Agent。当 orchestrator 需要在实施前进行深度调研时派遣此 Agent。 融合行业研究、竞品分析、技术调研、代码库探索四大能力,输出结构化研究报告。 Examples: Context: Orchestrator needs to understand existing codebase before planning changes. use", + "maturity": "agent", + "type": "agent", + "isComposable": false, + "allowedTools": [ + "\"Read", + "Glob", + "Grep", + "Bash", + "WebFetch", + "WebSearch\"" + ], + "keywords": [ + { + "keyword": "依赖", + "weight": 1, + "tier": "core" + }, + { + "keyword": "维度", + "weight": 1, + "tier": "core" + }, + { + "keyword": "方案 c", + "weight": 1, + "tier": "core" + }, + { + "keyword": "复杂度", + "weight": 1, + "tier": "core" + }, + { + "keyword": "文件", + "weight": 1, + "tier": "core" + }, + { + "keyword": "严重度", + "weight": 1, + "tier": "core" + }, + { + "keyword": "时间预算", + "weight": 1, + "tier": "core" + }, + { + "keyword": "< 2min", + "weight": 1, + "tier": "core" + }, + { + "keyword": "深层 — 全链路 + 边界 + 历史", + "weight": 1, + "tier": "core" + }, + { + "keyword": "用户直接调用", + "weight": 1, + "tier": "core" + }, + { + "keyword": "assistant:", + "weight": 1, + "tier": "core" + }, + { + "keyword": "快速了解", + "weight": 1, + "tier": "core" + }, + { + "keyword": "深度调研", + "weight": 1, + "tier": "core" + }, + { + "keyword": "确定的发现", + "weight": 1, + "tier": "core" + }, + { + "keyword": "读取源代码", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "配置文件", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "文档", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "搜索代码模式", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "函数调用", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "关键词", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "查找文件结构", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "git diff", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "dependency tree)", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "深度 web 调研", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "研究分析复合", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "需要在实施前", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "进行深度调研", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "时派遣此", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "融合行业研究", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "竞品分析", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "技术调研", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "代码库探索四", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "大能力", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "输出结构化研", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "究报告", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "分析一下闲鱼", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "助手的消息处", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "理链路", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "调研一下主流", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "的实时告警推", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "送方案", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "的回复逻辑会", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "影响哪些模块", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "agent", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "orchestrator", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "examples", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "example", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "context", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "orchestrator needs to", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "understand existing codebase", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "before planning changes.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "user", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "assistant", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "ll use the", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "research-analyst agent to", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "trace the full", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "message handling pipeline", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and produce a", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "structured analysis.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "commentary", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "codebase exploration task", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "requiring cross-file analysis.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "the research-analyst will", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "trace data flow", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "across multiple modules", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "orchestrator needs market", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "technical research for", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "a new feature.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "ll engage the", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "research-analyst to compare", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "websocket", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "sse", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and push notification", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "solutions with trade-off", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "analysis.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "technical research task", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "comparing multiple approaches.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "evaluate options against", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "criteria like latency", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "complexity", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "browser support", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and scalability.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "need to understand", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "impact before making", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "changes. user", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "customer_service.py", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "research-analyst to perform", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "a dependency and", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "impact analysis across", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "the codebase.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "impact analysis requiring", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "call chain tracing", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and dependency mapping.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "identify all upstream", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "callers and downstream", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "effects.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "config", + "weight": 0.5, + "tier": "alias" + } + ] + }, + { + "name": "security-hardener", + "description": "安全加固修复智能体。接收安全审查报告,自动修复 CRITICAL 和 HIGH 级安全问题。 专注于安全钩子修复、规则补全、凭证保护、日志脱敏等安全工程任务。 用户说: \"修复安全问题\", \"安全加固\", \"加固防护\", \"修复漏洞\" → 自动激活 security-hardener Agent 能力范围: - 安全钩子修复 (语法错误、逻辑缺陷、fe", + "maturity": "agent", + "type": "agent", + "isComposable": false, + "allowedTools": [ + "\"Read", + "Edit", + "Write", + "Glob", + "Grep", + "Bash", + "WebFetch", + "WebSearch\"" + ], + "keywords": [ + { + "keyword": "修复安全问题", + "weight": 1, + "tier": "core" + }, + { + "keyword": "安全加固", + "weight": 1, + "tier": "core" + }, + { + "keyword": "加固防护", + "weight": 1, + "tier": "core" + }, + { + "keyword": "修复漏洞", + "weight": 1, + "tier": "core" + }, + { + "keyword": "安全加固修复", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "智能体", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "接收安全审查", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "报告", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "自动修复", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "级安全问题", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "专注于安全钩", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "子修复", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "规则补全", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "凭证保护", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "日志脱敏等安", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "全工程任务", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "用户说", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "自动激活", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "能力范围", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "安全钩子修复", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "语法错误", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "逻辑缺陷", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "规则文件补全", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "扩展", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "凭证保护加固", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "集成", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "日志脱敏", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "环境变量化", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "权限收紧", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "白名单值校验", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "最小权限", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "策略", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "新安全钩子创", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "安全门控", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "宪法预检", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "内容扫描", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "规则缓存刷新", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "重编译", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "安全约束", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "修复不得降低", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "现有安全等级", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "所有新增安全", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "检查必须", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "异常时拒绝而", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "非放行", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "不修改业务逻", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "只修复安全层", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "下文件通过补", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "丁脚本修改", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "保护", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "critical", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "high", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "example", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "security-hardener agent", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "feature flag", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "deny-patterns", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "sensitive-paths", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "credential-patterns", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "sanitize", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "fail-close", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "mcp", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "compile-rules.js", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "hooks", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "block-sensitive-files", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "cache", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "log", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "config", + "weight": 0.5, + "tier": "alias" + } + ] + }, + { + "name": "self-auditor", + "description": "系统自审计智能体。检查 Claude Code 基础设施的一致性、完整性和健康状态。 用户说: \"检查系统健康\", \"审计配置\", \"自检\", \"系统一致性\" → 自动激活 self-auditor Agent 用户说: \"路由模块梳理\", \"消歧规则\", \"钩子管线\", \"注入器分析\", \"分类器\", \"路由引擎\", \"融合权重\"", + "maturity": "agent", + "type": "agent", + "isComposable": false, + "allowedTools": [ + "\"Read", + "Glob", + "Grep", + "Bash", + "WebFetch", + "WebSearch\"" + ], + "keywords": [ + { + "keyword": "维度", + "weight": 1, + "tier": "core" + }, + { + "keyword": "关键问题", + "weight": 1, + "tier": "core" + }, + { + "keyword": "d2 技能完整性", + "weight": 1, + "tier": "core" + }, + { + "keyword": "pass/warn/fail", + "weight": 1, + "tier": "core" + }, + { + "keyword": "d5 mcp 生态", + "weight": 1, + "tier": "core" + }, + { + "keyword": "d8 磁盘健康", + "weight": 1, + "tier": "core" + }, + { + "keyword": "自检", + "weight": 1, + "tier": "core" + }, + { + "keyword": "路由引擎", + "weight": 1, + "tier": "core" + }, + { + "keyword": "消歧规则", + "weight": 1, + "tier": "core" + }, + { + "keyword": "分类器", + "weight": 1, + "tier": "core" + }, + { + "keyword": "意图分类", + "weight": 1, + "tier": "core" + }, + { + "keyword": "钩子管线", + "weight": 1, + "tier": "core" + }, + { + "keyword": "融合权重", + "weight": 1, + "tier": "core" + }, + { + "keyword": "遥测", + "weight": 1, + "tier": "core" + }, + { + "keyword": "盲点", + "weight": 1, + "tier": "core" + }, + { + "keyword": "skill 矩阵", + "weight": 1, + "tier": "core" + }, + { + "keyword": "全量梳理", + "weight": 1, + "tier": "core" + }, + { + "keyword": "工作流梳理", + "weight": 1, + "tier": "core" + }, + { + "keyword": "系统梳理", + "weight": 1, + "tier": "core" + }, + { + "keyword": "booworm", + "weight": 1, + "tier": "core" + }, + { + "keyword": "检查系统健康", + "weight": 1, + "tier": "core" + }, + { + "keyword": "审计配置", + "weight": 1, + "tier": "core" + }, + { + "keyword": "系统一致性", + "weight": 1, + "tier": "core" + }, + { + "keyword": "路由模块梳理", + "weight": 1, + "tier": "core" + }, + { + "keyword": "注入器分析", + "weight": 1, + "tier": "core" + }, + { + "keyword": "瘦身提质", + "weight": 1, + "tier": "core" + }, + { + "keyword": "模块技术梳理", + "weight": 1, + "tier": "core" + }, + { + "keyword": "bookworm hook", + "weight": 1, + "tier": "core" + }, + { + "keyword": "输出格式", + "weight": 1, + "tier": "core" + }, + { + "keyword": "^##", + "weight": 1, + "tier": "core" + }, + { + "keyword": "执行命令", + "weight": 1, + "tier": "core" + }, + { + "keyword": "运行脚本", + "weight": 1, + "tier": "core" + }, + { + "keyword": "bash", + "weight": 1, + "tier": "core" + }, + { + "keyword": "shell", + "weight": 1, + "tier": "core" + }, + { + "keyword": "修改文件", + "weight": 1, + "tier": "core" + }, + { + "keyword": "创建文件", + "weight": 1, + "tier": "core" + }, + { + "keyword": "写入", + "weight": 1, + "tier": "core" + }, + { + "keyword": "version", + "weight": 1, + "tier": "core" + }, + { + "keyword": "v4.8", + "weight": 1, + "tier": "core" + }, + { + "keyword": "timestamp", + "weight": 1, + "tier": "core" + }, + { + "keyword": "2026-02-20", + "weight": 1, + "tier": "core" + }, + { + "keyword": "health_score", + "weight": 1, + "tier": "core" + }, + { + "keyword": "findings", + "weight": 1, + "tier": "core" + }, + { + "keyword": "id", + "weight": 1, + "tier": "core" + }, + { + "keyword": "c1", + "weight": 1, + "tier": "core" + }, + { + "keyword": "severity", + "weight": 1, + "tier": "core" + }, + { + "keyword": "critical", + "weight": 1, + "tier": "core" + }, + { + "keyword": "dimension", + "weight": 1, + "tier": "core" + }, + { + "keyword": "d1", + "weight": 1, + "tier": "core" + }, + { + "keyword": "description", + "weight": 1, + "tier": "core" + }, + { + "keyword": "技能数声明 52 但实际 49", + "weight": 1, + "tier": "core" + }, + { + "keyword": "file", + "weight": 1, + "tier": "core" + }, + { + "keyword": "line", + "weight": 1, + "tier": "core" + }, + { + "keyword": "fix_hint", + "weight": 1, + "tier": "core" + }, + { + "keyword": "将 52 改为 49", + "weight": 1, + "tier": "core" + }, + { + "keyword": "w1", + "weight": 1, + "tier": "core" + }, + { + "keyword": "warning", + "weight": 1, + "tier": "core" + }, + { + "keyword": "d6", + "weight": 1, + "tier": "core" + }, + { + "keyword": "memory.md 路由消歧计数过时", + "weight": 1, + "tier": "core" + }, + { + "keyword": "将 7 改为 10", + "weight": 1, + "tier": "core" + }, + { + "keyword": "w2", + "weight": 1, + "tier": "core" + }, + { + "keyword": "d9", + "weight": 1, + "tier": "core" + }, + { + "keyword": ": 42,", + "weight": 1, + "tier": "core" + }, + { + "keyword": "只读取文件,不做任何修改", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "审计", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "健康检查", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "一致性检查", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "完整性验证", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "漂移检测", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "路由", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "消歧", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "路由审计", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "钩子", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "hook 管线", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "注入器", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "调度器", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "dispatcher", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "pre-tool gate", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "bm25", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "语义评分", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "embedding", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "tfidf", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "skill 列表", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "瘦身", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "提质", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "裁剪", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "精简", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "剪枝", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "0 调用", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "模块梳理", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "架构梳理", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "技术梳理", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "bookworm", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "bookwormxi", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "bookworm 系统", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "bookworm 模块", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "系统自审计智", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "能体", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "检查", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "基础设施的一", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "致性", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "完整性和健康", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "状态", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "用户说", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "自动激活", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "矩阵", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "系统内部技术", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "审查", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "能力范围", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "配置一致性检", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "语义准确性", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "技能完整性验", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "存在性", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "格式", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "孤儿文件", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "目录检测", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "智能体配置验", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "模型声明", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "钩子链路验证", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "注册", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "文件存在", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "版本号一致性", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "服务器可达性", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "配置存在", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "命令可执行", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "记忆文件新鲜", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "索引", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "子文件", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "验证内容", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "安全设置审计", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "危险标志位", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "凭证泄露", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "退出码规范", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "磁盘健康审计", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "报告", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "日志保留期限", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "总占用告警", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "权限一致性验", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "声明", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "实际行为", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "claude code", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "example", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "self-auditor agent", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "skill", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "settings.json", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "yaml", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "agents", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "hooks", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "mcp", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "grep", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "hook", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "auto-cleanup", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "allowed-tools", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "vs prompt", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "architecture", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "log", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "index", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "routing", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "config", + "weight": 0.5, + "tier": "alias" + } + ] + }, + { + "name": "self-healer", + "description": "系统自修复智能体。接收 self-auditor 的审计报告,自动修复 CRITICAL 和 WARNING 问题。 用户说: \"修复审计问题\", \"自动修复\", \"同步配置\", \"修复漂移\" → 自动激活 self-healer Agent 用户说: \"自动修复路由\", \"修复消歧规则\", \"钩子自愈\", \"补注入器\", \"修复融", + "maturity": "agent", + "type": "agent", + "isComposable": false, + "allowedTools": [ + "\"Read", + "Edit", + "Write", + "Glob", + "Grep", + "Bash", + "WebFetch", + "WebSearch\"" + ], + "keywords": [ + { + "keyword": "建议修复方式", + "weight": 1, + "tier": "core" + }, + { + "keyword": "安全规则补全超出元数据边界", + "weight": 1, + "tier": "core" + }, + { + "keyword": "self-auditor", + "weight": 1, + "tier": "core" + }, + { + "keyword": "version-bump", + "weight": 1, + "tier": "core" + }, + { + "keyword": "维度", + "weight": 1, + "tier": "core" + }, + { + "keyword": "文件", + "weight": 1, + "tier": "core" + }, + { + "keyword": "d1", + "weight": 1, + "tier": "core" + }, + { + "keyword": "skill-registry.md:1", + "weight": 1, + "tier": "core" + }, + { + "keyword": "自动修复", + "weight": 1, + "tier": "core" + }, + { + "keyword": "修复漂移", + "weight": 1, + "tier": "core" + }, + { + "keyword": "同步配置", + "weight": 1, + "tier": "core" + }, + { + "keyword": "同步版本号", + "weight": 1, + "tier": "core" + }, + { + "keyword": "bookworm 自愈", + "weight": 1, + "tier": "core" + }, + { + "keyword": "修复审计问题", + "weight": 1, + "tier": "core" + }, + { + "keyword": "自动修复路由", + "weight": 1, + "tier": "core" + }, + { + "keyword": "修复消歧规则", + "weight": 1, + "tier": "core" + }, + { + "keyword": "钩子自愈", + "weight": 1, + "tier": "core" + }, + { + "keyword": "补注入器", + "weight": 1, + "tier": "core" + }, + { + "keyword": "修复融合权重", + "weight": 1, + "tier": "core" + }, + { + "keyword": "修复计数漂移", + "weight": 1, + "tier": "core" + }, + { + "keyword": "seq", + "weight": 1, + "tier": "core" + }, + { + "keyword": "ts", + "weight": 1, + "tier": "core" + }, + { + "keyword": "iso日期", + "weight": 1, + "tier": "core" + }, + { + "keyword": "fixes", + "weight": 1, + "tier": "core" + }, + { + "keyword": "file", + "weight": 1, + "tier": "core" + }, + { + "keyword": "相对路径", + "weight": 1, + "tier": "core" + }, + { + "keyword": "before", + "weight": 1, + "tier": "core" + }, + { + "keyword": "after", + "weight": 1, + "tier": "core" + }, + { + "keyword": "finding_id", + "weight": 1, + "tier": "core" + }, + { + "keyword": "c1/w1/...", + "weight": 1, + "tier": "core" + }, + { + "keyword": "disk-cleanup", + "weight": 1, + "tier": "core" + }, + { + "keyword": "yyyy-mm-dd", + "weight": 1, + "tier": "core" + }, + { + "keyword": "version", + "weight": 1, + "tier": "core" + }, + { + "keyword": "vx.y", + "weight": 1, + "tier": "core" + }, + { + "keyword": "trigger", + "weight": 1, + "tier": "core" + }, + { + "keyword": "summary", + "weight": 1, + "tier": "core" + }, + { + "keyword": "fix_count", + "weight": 1, + "tier": "core" + }, + { + "keyword": "fix_note", + "weight": 1, + "tier": "core" + }, + { + "keyword": "tags", + "weight": 1, + "tier": "core" + }, + { + "keyword": "重复运行产生相同结果", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "读取配置文件", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "验证文件存在性", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "修复计数", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "元数据修复", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "注册表修复", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "修复路由规则", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "修复消歧", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "补路由配置", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "路由自愈", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "规则文件同步", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "修复钩子注册", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "补钩子配置", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "settings 同步", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "hook 重注册", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "memory 索引同步", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "补索引条目", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "skill 注册表同步", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "记忆文件补建", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "bookworm 修复", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "bookworm 同步", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "系统自修复智", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "能体", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "接收", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "的审计报告", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "问题", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "用户说", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "自动激活", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "自愈", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "系统元数据", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "路由自动修复", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "能力范围", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "版本号同步", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "计数同步", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "技能数", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "智能体数", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "钩子数", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "缺失文件补建", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "索引条目", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "条目增删", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "进化日志记录", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "追加", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "磁盘清理编排", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "告警", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "联动", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "安全约束", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "不修改技能逻", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "内容", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "不修改智能体", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "行为", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "部分", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "不修改钩子逻", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "的业务代码", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "只修改元数据", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "版本号", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "计数", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "注册表条目", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "索引", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "critical", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "warning", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "example", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "self-healer agent", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "bookworm", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "mcp", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "memory", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "evolution-log.jsonl", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "health-check h3", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "auto-cleanup", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "agents", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "prompt", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "hooks", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "index", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "routing", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "config", + "weight": 0.5, + "tier": "alias" + } + ] + }, + { + "name": "test-writer", + "description": "Use this agent when the user needs automated test generation for new or modified code, including unit tests, integration tests, component tests, and E2E tests. This agent analyzes code to determine th", + "maturity": "agent", + "type": "agent", + "isComposable": false, + "allowedTools": [ + "\"Read", + "Edit", + "Write", + "Glob", + "Grep", + "Bash", + "WebFetch", + "WebSearch\"" + ], + "keywords": [ + { + "keyword": "具体检查项", + "weight": 1, + "tier": "core" + }, + { + "keyword": "默认渲染", + "weight": 1, + "tier": "core" + }, + { + "keyword": "不同 props 渲染", + "weight": 1, + "tier": "core" + }, + { + "keyword": "条件渲染", + "weight": 1, + "tier": "core" + }, + { + "keyword": "点击", + "weight": 1, + "tier": "core" + }, + { + "keyword": "输入", + "weight": 1, + "tier": "core" + }, + { + "keyword": "提交", + "weight": 1, + "tier": "core" + }, + { + "keyword": "键盘事件", + "weight": 1, + "tier": "core" + }, + { + "keyword": "数据加载", + "weight": 1, + "tier": "core" + }, + { + "keyword": "loading 状态", + "weight": 1, + "tier": "core" + }, + { + "keyword": "错误状态", + "weight": 1, + "tier": "core" + }, + { + "keyword": "aria 属性", + "weight": 1, + "tier": "core" + }, + { + "keyword": "键盘可访问性", + "weight": 1, + "tier": "core" + }, + { + "keyword": "测试场景", + "weight": 1, + "tier": "core" + }, + { + "keyword": "正常请求,正确返回数据", + "weight": 1, + "tier": "core" + }, + { + "keyword": "创建成功", + "weight": 1, + "tier": "core" + }, + { + "keyword": "参数校验失败(缺少必填字段", + "weight": 1, + "tier": "core" + }, + { + "keyword": "类型错误", + "weight": 1, + "tier": "core" + }, + { + "keyword": "格式错误)", + "weight": 1, + "tier": "core" + }, + { + "keyword": "未认证(无 token", + "weight": 1, + "tier": "core" + }, + { + "keyword": "token 过期)", + "weight": 1, + "tier": "core" + }, + { + "keyword": "无权限(越权访问)", + "weight": 1, + "tier": "core" + }, + { + "keyword": "资源不存在", + "weight": 1, + "tier": "core" + }, + { + "keyword": "冲突(重复创建)", + "weight": 1, + "tier": "core" + }, + { + "keyword": "服务端异常(数据库连接失败等)", + "weight": 1, + "tier": "core" + }, + { + "keyword": "测试用例", + "weight": 1, + "tier": "core" + }, + { + "keyword": "happy path", + "weight": 1, + "tier": "core" + }, + { + "keyword": "零值处理", + "weight": 1, + "tier": "core" + }, + { + "keyword": "formatcurrency", + "weight": 1, + "tier": "core" + }, + { + "keyword": "无效日期处理", + "weight": 1, + "tier": "core" + }, + { + "keyword": "指标", + "weight": 1, + "tier": "core" + }, + { + "keyword": "statements", + "weight": 1, + "tier": "core" + }, + { + "keyword": "branches", + "weight": 1, + "tier": "core" + }, + { + "keyword": "functions", + "weight": 1, + "tier": "core" + }, + { + "keyword": "lines", + "weight": 1, + "tier": "core" + }, + { + "keyword": "帮我给这个 utils 函数写测试", + "weight": 1, + "tier": "core" + }, + { + "keyword": "给 userprofile 组件补充测试", + "weight": 1, + "tier": "core" + }, + { + "keyword": "货币格式化测试", + "weight": 1, + "tier": "core" + }, + { + "keyword": "$1,234.50", + "weight": 1, + "tier": "core" + }, + { + "keyword": "$0.00", + "weight": 1, + "tier": "core" + }, + { + "keyword": "无效的金额", + "weight": 1, + "tier": "core" + }, + { + "keyword": "正常格式化", + "weight": 1, + "tier": "core" + }, + { + "keyword": "负数处理", + "weight": 1, + "tier": "core" + }, + { + "keyword": "-$100.00", + "weight": 1, + "tier": "core" + }, + { + "keyword": "user-{n:03d}", + "weight": 1, + "tier": "core" + }, + { + "keyword": "user", + "weight": 1, + "tier": "core" + }, + { + "keyword": "supertest(express/fastify)", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "playwright", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "pytest + pytest-cov", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "unittest.mock / pytest-mock", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "factory_boy / faker", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "httptest", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "gomock / mockgen", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "第三方服务调用(支付", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "短信", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "邮件", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "ai 接口)", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "读取被测代码", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "现有测试", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "配置文件", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "创建新的测试文件", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "修改现有测试文件", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "执行测试命令", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "安装测试依赖", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "查看覆盖率", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "搜索代码模式", + "weight": 0.8, + "tier": "strong" + }, + { + "keyword": "use this agent", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "when the user", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "needs automated test", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "generation for new", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "or modified code", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "including unit tests", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "integration tests", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "component tests", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and e2e tests.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "this agent analyzes", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "code to determine", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "the optimal testing", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "strategy", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "generates comprehensive test", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "cases with proper", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "coverage", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and can create", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "and run test", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "files directly.", + "weight": 0.5, + "tier": "extended" + }, + { + "keyword": "database", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "auth", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "interface", + "weight": 0.5, + "tier": "alias" + }, + { + "keyword": "config", + "weight": 0.5, + "tier": "alias" + } + ] + } + ], + "collisions": [ + { + "keyword": "true", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "designer-expert", + "document-release", + "frontend-expert", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 21 + }, + { + "keyword": "error handling", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "rust-engineer", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 20 + }, + { + "keyword": "documentation", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship", + "tech-writer-expert" + ], + "count": 20 + }, + { + "keyword": "wc -l", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "task type", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "compression", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "15 min", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "test writing", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "~50x", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "1 week", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "architecture / design", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "~5x", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "1 day", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "edge cases", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "unfamiliar patterns", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "and once in a while", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "skill:$skill", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "branch:$branch", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "**version:** {gstack version}", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "$_upd", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "$ppid", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "unknown", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "branch: $_branch", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "yes", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "no", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "false", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "inline upgrade flow", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "good enough", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "complete", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "lake", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "ocean", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "save time", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "(say:", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "--arg skill", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "--arg branch", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "--arg insight", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "await fetch(...)", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "or", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "status", + "skills": [ + "browse", + "canary", + "codex", + "git-operation-master", + "guardian", + "land-and-deploy", + "mcp-probe", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "review", + "ship", + "workflow-automation-expert" + ], + "count": 13 + }, + { + "keyword": "[ -n", + "skills": [ + "benchmark", + "browse", + "canary", + "design-consultation", + "design-review", + "gstack", + "land-and-deploy", + "qa", + "setup-browser-cookies" + ], + "count": 9 + }, + { + "keyword": "] && [ -x", + "skills": [ + "benchmark", + "browse", + "canary", + "design-consultation", + "design-review", + "gstack", + "land-and-deploy", + "qa", + "setup-browser-cookies" + ], + "count": 9 + }, + { + "keyword": "] && b=", + "skills": [ + "benchmark", + "browse", + "canary", + "design-consultation", + "design-review", + "gstack", + "land-and-deploy", + "qa", + "setup-browser-cookies" + ], + "count": 9 + }, + { + "keyword": "[ -z", + "skills": [ + "benchmark", + "browse", + "canary", + "design-consultation", + "design-review", + "gstack", + "land-and-deploy", + "qa", + "setup-browser-cookies" + ], + "count": 9 + }, + { + "keyword": "$b", + "skills": [ + "benchmark", + "browse", + "canary", + "design-consultation", + "design-review", + "gstack", + "land-and-deploy", + "qa", + "setup-browser-cookies" + ], + "count": 9 + }, + { + "keyword": "ready: $b", + "skills": [ + "benchmark", + "browse", + "canary", + "design-consultation", + "design-review", + "gstack", + "land-and-deploy", + "qa", + "setup-browser-cookies" + ], + "count": 9 + }, + { + "keyword": "needs_setup", + "skills": [ + "benchmark", + "browse", + "canary", + "design-consultation", + "design-review", + "gstack", + "land-and-deploy", + "qa", + "setup-browser-cookies" + ], + "count": 9 + }, + { + "keyword": "timestamp", + "skills": [ + "benchmark", + "canary", + "codex", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "review", + "ship" + ], + "count": 9 + }, + { + "keyword": "the base branch", + "skills": [ + "canary", + "codex", + "document-release", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "qa", + "review", + "ship" + ], + "count": 9 + }, + { + "keyword": "the base branch.", + "skills": [ + "canary", + "codex", + "document-release", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "qa", + "review", + "ship" + ], + "count": 9 + }, + { + "keyword": "skill", + "skills": [ + "canary", + "codex", + "gstack", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "review", + "ship" + ], + "count": 9 + }, + { + "keyword": "clean", + "skills": [ + "codex", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "review", + "ship" + ], + "count": 7 + }, + { + "keyword": "findings", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "review", + "ship" + ], + "count": 6 + }, + { + "keyword": "design review", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "review", + "ship" + ], + "count": 6 + }, + { + "keyword": "commit", + "skills": [ + "git-operation-master", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "review", + "ship" + ], + "count": 6 + }, + { + "keyword": "echo", + "skills": [ + "gstack", + "guardian", + "investigate", + "land-and-deploy", + "review", + "ship" + ], + "count": 6 + }, + { + "keyword": "url", + "skills": [ + "benchmark", + "canary", + "design-review", + "land-and-deploy", + "qa" + ], + "count": 5 + }, + { + "keyword": ": {", + "skills": [ + "benchmark", + "canary", + "design-review", + "retro", + "workflow-automation-expert" + ], + "count": 5 + }, + { + "keyword": "email", + "skills": [ + "browse", + "data-engineer-expert", + "gstack", + "notification-system-expert", + "tester-expert" + ], + "count": 5 + }, + { + "keyword": "why", + "skills": [ + "codex", + "document-release", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 5 + }, + { + "keyword": "issues_found", + "skills": [ + "codex", + "plan-ceo-review", + "plan-eng-review", + "review", + "ship" + ], + "count": 5 + }, + { + "keyword": "redis", + "skills": [ + "architect-expert", + "backend-builder", + "database-tuning-expert", + "investigate" + ], + "count": 4 + }, + { + "keyword": "node.js", + "skills": [ + "backend-builder", + "design-review", + "qa", + "ship" + ], + "count": 4 + }, + { + "keyword": "go", + "skills": [ + "backend-builder", + "design-review", + "qa", + "ship" + ], + "count": 4 + }, + { + "keyword": "submit", + "skills": [ + "browse", + "design-review", + "gstack", + "tester-expert" + ], + "count": 4 + }, + { + "keyword": "\\unresolved\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\critical_gaps\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\mode\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\scope_proposed\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\scope_accepted\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\scope_deferred\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "{scope_accepted} accepted", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\issues_found\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\initial_score\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\overall_score\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\decisions_made\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\gate\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\findings\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "ceo review", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "{runs}", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "independent 2nd opinion", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "{findings}", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\/plan-eng-review\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "{status}", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "|| echo", + "skills": [ + "codex", + "investigate", + "plan-ceo-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "eng review required", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "date", + "skills": [ + "design-consultation", + "design-review", + "qa", + "retro" + ], + "count": 4 + }, + { + "keyword": "runtime", + "skills": [ + "design-review", + "plan-ceo-review", + "qa", + "ship" + ], + "count": 4 + }, + { + "keyword": "sort -rn", + "skills": [ + "design-review", + "plan-ceo-review", + "qa", + "ship" + ], + "count": 4 + }, + { + "keyword": "类型", + "skills": [ + "impact-analyst", + "mcp-probe", + "product-manager-expert", + "tech-writer-expert" + ], + "count": 4 + }, + { + "keyword": "review readiness dashboard", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "runs", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "required", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "code quality", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "tests", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "new user-facing features", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "refactors", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "infra", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "codex structured", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "claude adversarial subagent", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "stale (>7 days)", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "or has open issues - ceo", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "design", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "(full)", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "(lite)", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "don't bother me", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "skipped (global)", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "medium", + "skills": [ + "review", + "ship", + "sre-expert", + "ui-ux-pro-max" + ], + "count": 4 + }, + { + "keyword": "等级", + "skills": [ + "ai-philosophy-expert", + "project-audit-expert", + "project-coordinator" + ], + "count": 3 + }, + { + "keyword": "graphql", + "skills": [ + "architect-expert", + "backend-builder", + "graphql-architect" + ], + "count": 3 + }, + { + "keyword": "performance", + "skills": [ + "benchmark", + "flutter-expert", + "qa" + ], + "count": 3 + }, + { + "keyword": "", + "skills": [ + "benchmark", + "canary", + "land-and-deploy" + ], + "count": 3 + }, + { + "keyword": "command", + "skills": [ + "browse", + "gstack", + "plan-ceo-review" + ], + "count": 3 + }, + { + "keyword": "description", + "skills": [ + "browse", + "gstack", + "plan-ceo-review" + ], + "count": 3 + }, + { + "keyword": "password", + "skills": [ + "browse", + "gstack", + "tester-expert" + ], + "count": 3 + }, + { + "keyword": "color", + "skills": [ + "browse", + "gstack", + "ui-ux-pro-max" + ], + "count": 3 + }, + { + "keyword": "text", + "skills": [ + "browser-automation-expert", + "notification-system-expert", + "workflow-automation-expert" + ], + "count": 3 + }, + { + "keyword": "tail -1", + "skills": [ + "codex", + "review", + "ship" + ], + "count": 3 + }, + { + "keyword": "xhigh", + "skills": [ + "codex", + "review", + "ship" + ], + "count": 3 + }, + { + "keyword": "$tmperr", + "skills": [ + "codex", + "review", + "ship" + ], + "count": 3 + }, + { + "keyword": "gate", + "skills": [ + "codex", + "review", + "ship" + ], + "count": 3 + }, + { + "keyword": "pass", + "skills": [ + "codex", + "review", + "ship" + ], + "count": 3 + }, + { + "keyword": "fail", + "skills": [ + "codex", + "review", + "ship" + ], + "count": 3 + }, + { + "keyword": "parameter", + "skills": [ + "design-review", + "developer-expert", + "qa" + ], + "count": 3 + }, + { + "keyword": "none", + "skills": [ + "design-review", + "land-and-deploy", + "setup-deploy" + ], + "count": 3 + }, + { + "keyword": "minitest + fixtures + capybara", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "jest + cypress", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "pytest + pytest-cov", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "phpunit + mockery", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "elixir", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "integration", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "smoke", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "spec/", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "category", + "skills": [ + "design-review", + "qa", + "ui-ux-pro-max" + ], + "count": 3 + }, + { + "keyword": ", or", + "skills": [ + "design-review", + "investigate", + "plan-eng-review" + ], + "count": 3 + }, + { + "keyword": "runtime:ruby", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "runtime:node", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "runtime:python", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "runtime:go", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "runtime:rust", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "runtime:php", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "runtime:elixir", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "rails", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "framework:rails", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "next", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "framework:nextjs", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "bootstrap_declined", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "ci:github", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "mkdir -p", + "skills": [ + "design-review", + "guardian", + "investigate" + ], + "count": 3 + }, + { + "keyword": "ux", + "skills": [ + "designer-expert", + "qa", + "ui-ux-pro-max" + ], + "count": 3 + }, + { + "keyword": "dashboard", + "skills": [ + "devops-expert", + "setup-deploy", + "ui-ux-pro-max" + ], + "count": 3 + }, + { + "keyword": "title", + "skills": [ + "devops-expert", + "land-and-deploy", + "qa" + ], + "count": 3 + }, + { + "keyword": "ts", + "skills": [ + "evolution-tracker", + "gstack", + "plan-ceo-review" + ], + "count": 3 + }, + { + "keyword": "state management", + "skills": [ + "flutter-expert", + "swift-expert", + "vue-expert" + ], + "count": 3 + }, + { + "keyword": "generics", + "skills": [ + "golang-pro", + "python-pro", + "typescript-pro" + ], + "count": 3 + }, + { + "keyword": "bash", + "skills": [ + "guardian", + "planning-with-files", + "regex-shell-wizard" + ], + "count": 3 + }, + { + "keyword": "design-review-lite", + "skills": [ + "land-and-deploy", + "review", + "ship" + ], + "count": 3 + }, + { + "keyword": "id", + "skills": [ + "mcp-probe", + "qa", + "tech-writer-expert" + ], + "count": 3 + }, + { + "keyword": "name", + "skills": [ + "mcp-probe", + "tech-writer-expert", + "workflow-automation-expert" + ], + "count": 3 + }, + { + "keyword": "login", + "skills": [ + "mobile-expert", + "review", + "ship" + ], + "count": 3 + }, + { + "keyword": "not in scope", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 3 + }, + { + "keyword": "what already exists", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 3 + }, + { + "keyword": "3a", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 3 + }, + { + "keyword": "3b", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 3 + }, + { + "keyword": "unresolved", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 3 + }, + { + "keyword": "issues_open", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 3 + }, + { + "keyword": "high", + "skills": [ + "plan-eng-review", + "sre-expert", + "ui-ux-pro-max" + ], + "count": 3 + }, + { + "keyword": "tier", + "skills": [ + "qa", + "review", + "ship" + ], + "count": 3 + }, + { + "keyword": "ocr", + "skills": [ + "ai-ml-expert", + "workflow-automation-expert" + ], + "count": 2 + }, + { + "keyword": "分类", + "skills": [ + "ai-ml-expert", + "industry-research-cn" + ], + "count": 2 + }, + { + "keyword": "技术栈", + "skills": [ + "ai-ml-expert", + "architect-expert" + ], + "count": 2 + }, + { + "keyword": "监控", + "skills": [ + "ai-ml-expert", + "devops-expert" + ], + "count": 2 + }, + { + "keyword": "指标", + "skills": [ + "ai-ml-expert", + "evolution-tracker" + ], + "count": 2 + }, + { + "keyword": "风险", + "skills": [ + "ai-philosophy-expert", + "project-coordinator" + ], + "count": 2 + }, + { + "keyword": "架构方案", + "skills": [ + "ai-philosophy-expert", + "architect-expert" + ], + "count": 2 + }, + { + "keyword": "angular", + "skills": [ + "angular-architect", + "frontend-expert" + ], + "count": 2 + }, + { + "keyword": "api设计", + "skills": [ + "api-designer", + "backend-builder" + ], + "count": 2 + }, + { + "keyword": "架构图", + "skills": [ + "architect-expert", + "diagram-as-code-expert" + ], + "count": 2 + }, + { + "keyword": "restful", + "skills": [ + "architect-expert", + "backend-builder" + ], + "count": 2 + }, + { + "keyword": "微服务", + "skills": [ + "architect-expert", + "backend-builder" + ], + "count": 2 + }, + { + "keyword": "事件驱动", + "skills": [ + "architect-expert", + "workflow-automation-expert" + ], + "count": 2 + }, + { + "keyword": "postgresql", + "skills": [ + "architect-expert", + "backend-builder" + ], + "count": 2 + }, + { + "keyword": "gin", + "skills": [ + "backend-builder", + "database-tuning-expert" + ], + "count": 2 + }, + { + "keyword": "/dashboard", + "skills": [ + "benchmark", + "canary" + ], + "count": 2 + }, + { + "keyword": "slug=unknown", + "skills": [ + "benchmark", + "canary" + ], + "count": 2 + }, + { + "keyword": "", + "skills": [ + "benchmark", + "canary" + ], + "count": 2 + }, + { + "keyword": "branch", + "skills": [ + "benchmark", + "canary" + ], + "count": 2 + }, + { + "keyword": "pages", + "skills": [ + "benchmark", + "canary" + ], + "count": 2 + }, + { + "keyword": "$b snapshot -a -o", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "or $b responsive", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "links", + "skills": [ + "browse", + "qa" + ], + "count": 2 + }, + { + "keyword": ".dashboard", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": ".modal", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "#submit-btn", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "#agree-checkbox", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "#name-field", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "#search-input", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": ".upload-success", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "#delete-button", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "value", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "welcome", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "text → href", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "cmd", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "arg1", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "自动化脚本", + "skills": [ + "browser-automation-expert", + "regex-shell-wizard" + ], + "count": 2 + }, + { + "keyword": "rpa", + "skills": [ + "browser-automation-expert", + "workflow-automation-expert" + ], + "count": 2 + }, + { + "keyword": "性能", + "skills": [ + "browser-automation-expert", + "ultimate-code-expert" + ], + "count": 2 + }, + { + "keyword": "git log", + "skills": [ + "canary", + "land-and-deploy" + ], + "count": 2 + }, + { + "keyword": "git fetch", + "skills": [ + "canary", + "land-and-deploy" + ], + "count": 2 + }, + { + "keyword": "git merge", + "skills": [ + "canary", + "land-and-deploy" + ], + "count": 2 + }, + { + "keyword": "and gh pr create command", + "skills": [ + "canary", + "land-and-deploy" + ], + "count": 2 + }, + { + "keyword": "aws", + "skills": [ + "cloud-architect", + "devops-expert" + ], + "count": 2 + }, + { + "keyword": "k8s", + "skills": [ + "cloud-native-expert", + "devops-expert" + ], + "count": 2 + }, + { + "keyword": "\"timestamp\":\"timestamp\"", + "skills": [ + "codex", + "ship" + ], + "count": 2 + }, + { + "keyword": "\"status\":\"status\"", + "skills": [ + "codex", + "ship" + ], + "count": 2 + }, + { + "keyword": "\"findings\":n", + "skills": [ + "codex", + "ship" + ], + "count": 2 + }, + { + "keyword": "failure modes", + "skills": [ + "codex", + "plan-ceo-review" + ], + "count": 2 + }, + { + "keyword": "] && echo", + "skills": [ + "codex", + "investigate" + ], + "count": 2 + }, + { + "keyword": "continue", + "skills": [ + "codex", + "design-review" + ], + "count": 2 + }, + { + "keyword": "onboarding", + "skills": [ + "customer-success-expert", + "tech-lead-mentor" + ], + "count": 2 + }, + { + "keyword": "柱状图", + "skills": [ + "data-analyst-expert", + "evolution-tracker" + ], + "count": 2 + }, + { + "keyword": "可视化", + "skills": [ + "data-analyst-expert", + "diagram-as-code-expert" + ], + "count": 2 + }, + { + "keyword": "数据管道", + "skills": [ + "data-engineer-expert", + "workflow-automation-expert" + ], + "count": 2 + }, + { + "keyword": "user_id", + "skills": [ + "data-engineer-expert", + "security-expert" + ], + "count": 2 + }, + { + "keyword": "schema设计", + "skills": [ + "database-tuning-expert", + "graphql-architect" + ], + "count": 2 + }, + { + "keyword": "ref", + "skills": [ + "database-tuning-expert", + "vue-expert" + ], + "count": 2 + }, + { + "keyword": "error", + "skills": [ + "debugger-expert", + "plan-ceo-review" + ], + "count": 2 + }, + { + "keyword": "日志", + "skills": [ + "debugger-expert", + "devops-expert" + ], + "count": 2 + }, + { + "keyword": "cors", + "skills": [ + "debugger-expert", + "websocket-engineer" + ], + "count": 2 + }, + { + "keyword": "scope", + "skills": [ + "design-review", + "qa" + ], + "count": 2 + }, + { + "keyword": "typography", + "skills": [ + "design-review", + "ui-ux-pro-max" + ], + "count": 2 + }, + { + "keyword": "ai slop", + "skills": [ + "design-review", + "frontend-design" + ], + "count": 2 + }, + { + "keyword": "`\r\n- `", + "skills": [ + "design-review", + "ship" + ], + "count": 2 + }, + { + "keyword": "lazy", + "skills": [ + "design-review", + "performance-expert" + ], + "count": 2 + }, + { + "keyword": "yyyy-mm-dd", + "skills": [ + "design-review", + "qa" + ], + "count": 2 + }, + { + "keyword": "", + "skills": [ + "design-review", + "qa" + ], + "count": 2 + }, + { + "keyword": ": [{", + "skills": [ + "design-review", + "devops-expert" + ], + "count": 2 + }, + { + "keyword": "deferred", + "skills": [ + "design-review", + "qa" + ], + "count": 2 + }, + { + "keyword": "improve", + "skills": [ + "design-review", + "qa" + ], + "count": 2 + }, + { + "keyword": "dialog", + "skills": [ + "designer-expert", + "frontend-expert" + ], + "count": 2 + }, + { + "keyword": "自动化", + "skills": [ + "devops-expert", + "workflow-automation-expert" + ], + "count": 2 + }, + { + "keyword": "dist/main.js", + "skills": [ + "devops-expert", + "devsecops-expert" + ], + "count": 2 + }, + { + "keyword": "production", + "skills": [ + "devops-expert", + "land-and-deploy" + ], + "count": 2 + }, + { + "keyword": "甘特图", + "skills": [ + "diagram-as-code-expert", + "project-coordinator" + ], + "count": 2 + }, + { + "keyword": "roi", + "skills": [ + "finance-advisor", + "growth-hacker" + ], + "count": 2 + }, + { + "keyword": "providers", + "skills": [ + "flutter-expert", + "terraform-engineer" + ], + "count": 2 + }, + { + "keyword": "flutter", + "skills": [ + "flutter-expert", + "ui-ux-pro-max" + ], + "count": 2 + }, + { + "keyword": "react", + "skills": [ + "frontend-expert", + "ui-ux-pro-max" + ], + "count": 2 + }, + { + "keyword": "vue", + "skills": [ + "frontend-expert", + "ui-ux-pro-max" + ], + "count": 2 + }, + { + "keyword": "vue3", + "skills": [ + "frontend-expert", + "vue-expert" + ], + "count": 2 + }, + { + "keyword": "next.js", + "skills": [ + "frontend-expert", + "nextjs-developer" + ], + "count": 2 + }, + { + "keyword": "svelte", + "skills": [ + "frontend-expert", + "ui-ux-pro-max" + ], + "count": 2 + }, + { + "keyword": "pinia", + "skills": [ + "frontend-expert", + "vue-expert" + ], + "count": 2 + }, + { + "keyword": "composition api", + "skills": [ + "frontend-expert", + "vue-expert" + ], + "count": 2 + }, + { + "keyword": "ssr", + "skills": [ + "frontend-expert", + "vue-expert" + ], + "count": 2 + }, + { + "keyword": "hydration", + "skills": [ + "frontend-expert", + "vue-expert" + ], + "count": 2 + }, + { + "keyword": "push", + "skills": [ + "git-operation-master", + "notification-system-expert" + ], + "count": 2 + }, + { + "keyword": "merge", + "skills": [ + "git-operation-master", + "land-and-deploy" + ], + "count": 2 + }, + { + "keyword": "hooks", + "skills": [ + "git-operation-master", + "investigate" + ], + "count": 2 + }, + { + "keyword": "websocket", + "skills": [ + "graphql-architect", + "websocket-engineer" + ], + "count": 2 + }, + { + "keyword": "抖音", + "skills": [ + "growth-hacker", + "social-media-manager" + ], + "count": 2 + }, + { + "keyword": "小红书", + "skills": [ + "growth-hacker", + "social-media-manager" + ], + "count": 2 + }, + { + "keyword": "checkout", + "skills": [ + "gstack", + "ui-ux-pro-max" + ], + "count": 2 + }, + { + "keyword": "arc", + "skills": [ + "gstack", + "swift-expert" + ], + "count": 2 + }, + { + "keyword": "home", + "skills": [ + "gstack", + "mobile-expert" + ], + "count": 2 + }, + { + "keyword": "模式", + "skills": [ + "guardian", + "project-audit-expert" + ], + "count": 2 + }, + { + "keyword": "- matcher:", + "skills": [ + "guardian", + "investigate" + ], + "count": 2 + }, + { + "keyword": "权重", + "skills": [ + "investor-review-guide", + "reviewer-expert" + ], + "count": 2 + }, + { + "keyword": "维度", + "skills": [ + "investor-review-guide", + "ultimate-code-expert" + ], + "count": 2 + }, + { + "keyword": "deploy", + "skills": [ + "land-and-deploy", + "ship" + ], + "count": 2 + }, + { + "keyword": "plan-ceo-review", + "skills": [ + "land-and-deploy", + "plan-ceo-review" + ], + "count": 2 + }, + { + "keyword": "plan-design-review", + "skills": [ + "land-and-deploy", + "plan-design-review" + ], + "count": 2 + }, + { + "keyword": "release", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "no_config", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "platform:fly", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "platform:render", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "platform:vercel", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "platform:netlify", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "platform:heroku", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "platform:railway", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "$f", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "deploy_workflow:$f", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "%{http_code}", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "ok", + "skills": [ + "mcp-probe", + "workflow-automation-expert" + ], + "count": 2 + }, + { + "keyword": "file-based routing", + "skills": [ + "nextjs-developer", + "vue-expert" + ], + "count": 2 + }, + { + "keyword": "tr '/' '-'", + "skills": [ + "plan-ceo-review", + "plan-eng-review" + ], + "count": 2 + }, + { + "keyword": "complexity", + "skills": [ + "plan-ceo-review", + "plan-design-review" + ], + "count": 2 + }, + { + "keyword": "system audit", + "skills": [ + "plan-ceo-review", + "plan-design-review" + ], + "count": 2 + }, + { + "keyword": "step 0", + "skills": [ + "plan-ceo-review", + "plan-design-review" + ], + "count": 2 + }, + { + "keyword": "todos.md updates", + "skills": [ + "plan-ceo-review", + "plan-design-review" + ], + "count": 2 + }, + { + "keyword": "unresolved decisions", + "skills": [ + "plan-ceo-review", + "plan-eng-review" + ], + "count": 2 + }, + { + "keyword": "engineered enough", + "skills": [ + "plan-ceo-review", + "plan-eng-review" + ], + "count": 2 + }, + { + "keyword": "$design", + "skills": [ + "plan-ceo-review", + "plan-eng-review" + ], + "count": 2 + }, + { + "keyword": "no design doc found,", + "skills": [ + "plan-ceo-review", + "plan-eng-review" + ], + "count": 2 + }, + { + "keyword": "prompt/llm changes", + "skills": [ + "plan-ceo-review", + "plan-eng-review" + ], + "count": 2 + }, + { + "keyword": "do nothing", + "skills": [ + "plan-ceo-review", + "plan-eng-review" + ], + "count": 2 + }, + { + "keyword": "critical_gaps", + "skills": [ + "plan-ceo-review", + "plan-eng-review" + ], + "count": 2 + }, + { + "keyword": "mode", + "skills": [ + "plan-ceo-review", + "plan-eng-review" + ], + "count": 2 + }, + { + "keyword": "免费", + "skills": [ + "pricing-strategist", + "sales-consultant" + ], + "count": 2 + }, + { + "keyword": "typescript", + "skills": [ + "project-audit-expert", + "typescript-pro" + ], + "count": 2 + }, + { + "keyword": "python", + "skills": [ + "project-audit-expert", + "python-pro" + ], + "count": 2 + }, + { + "keyword": "为什么", + "skills": [ + "prompt-optimizer", + "tech-lead-mentor" + ], + "count": 2 + }, + { + "keyword": "accessibility", + "skills": [ + "qa", + "ui-ux-pro-max" + ], + "count": 2 + }, + { + "keyword": "severity", + "skills": [ + "qa", + "ship" + ], + "count": 2 + }, + { + "keyword": "it renders", + "skills": [ + "qa", + "ship" + ], + "count": 2 + }, + { + "keyword": "it doesn't throw", + "skills": [ + "qa", + "ship" + ], + "count": 2 + }, + { + "keyword": "powershell", + "skills": [ + "regex-shell-wizard", + "workflow-automation-expert" + ], + "count": 2 + }, + { + "keyword": "grep -v node_modules", + "skills": [ + "retro", + "ship" + ], + "count": 2 + }, + { + "keyword": "code review", + "skills": [ + "review", + "reviewer-expert" + ], + "count": 2 + }, + { + "keyword": "auto_fixed", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "codex_available", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "codex_not_available", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "run all passes", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "paranoid review", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "full adversarial", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "do all 4 passes", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "thorough review", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "medium tier", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "large tier", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "$tmperr_adv", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "auth", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "unauthorized", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "api key", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "- **timeout:**", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "adversarial-review", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "source", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "codex", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "claude", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "large", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "both", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "informational", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "自动化工作流", + "skills": [ + "sales-consultant", + "workflow-automation-expert" + ], + "count": 2 + }, + { + "keyword": "swiftui", + "skills": [ + "swift-expert", + "ui-ux-pro-max" + ], + "count": 2 + } + ] +} diff --git a/skills-index.json b/skills-index.json index 2743e5c..9e26280 100644 --- a/skills-index.json +++ b/skills-index.json @@ -1,38482 +1,30488 @@ -{ - "generated": "2026-04-27T09:30:28.917Z", - "version": "v6.6.0", - "skillCount": 95, - "skills": [ - { - "name": "ai-ml-expert", - "description": "AI/机器学习专家。当用户需要 PyTorch、TensorFlow、深度学习、神经网络、 NLP 自然语言处理、CV 计算机视觉、LLM 大语言模型、RAG 检索增强、 Prompt Engineering、模型微调 Fine-tuning、Agent 开发、Hugging Face、 LangChain,或说 \"机器学习\"、\"AI\"、\"模型训练\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "ai", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "机器学习", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "深度学习", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "神经网络", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "模型训练", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pytorch", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tensorflow", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "keras", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "transformers", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scikit-learn", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "文本分类", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ner", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "文本生成", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "语义搜索", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "embedding", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "图像分类", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "目标检测", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "分割", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ocr", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "yolo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "llm", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gpt", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bert", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "llama", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "qwen", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "chatgpt", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "大模型", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rag", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "agent", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "langchain", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "prompt engineering", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "微调", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lora", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "xgboost", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lightgbm", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "分类", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "回归", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "聚类", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "特征工程", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术栈", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "集成学习", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cnn", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rnn/lstm", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "transformer", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gan", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fine-tuning", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "训练", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "评估", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "监控", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "推荐模型", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "catboost", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "roberta", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "中文用 bert-wwm", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gpt系列", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bert+crf", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "globalpointer", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "resnet", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "efficientnet", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vit", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "yolov8", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rt-detr", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "u-net", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "deeplabv3+", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "embedding + vectordb + llm", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "指标", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "auc", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "f1", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "precision", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "recall", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "accuracy", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "macro-f1", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "confusion matrix", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mse", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mae", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "r²", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mape", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "entity-level f1", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bleu", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rouge", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "perplexity", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "map", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "iou", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bert-base-chinese", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "你好世界", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pt", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "你的问题", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "机器学习专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "自然语言处理", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "计算机视觉", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "大语言模型", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "检索增强", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "模型微调", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "nlp", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "hugging face", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "monitoring", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - } - ], - "tier_class": "T1", - "criticality": "MEDIUM", - "callCount30d": 0 - }, - { - "name": "ai-philosophy-expert", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "ai 伦理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai 道德", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "算法伦理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "伦理审查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ethical ai", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "responsible ai", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "对齐", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "价值对齐", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "alignment", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "value alignment", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rlhf", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "偏见审计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "算法公平", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "歧视", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fairness", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bias audit", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "可解释性", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "透明度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "黑箱", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "xai", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "explainability", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai 治理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai 合规", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai 法规", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai governance", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "eu ai act", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai 哲学", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "意识", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "涌现", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "中文房间", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "philosophy of ai", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "人机交互", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "拟人化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "过度依赖", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "anthropomorphism", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai 风险", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "长期风险", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "奇点", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai risk", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "x-risk", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "设计要求", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai 能触发哪些不可逆动作?", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "地区", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "分级标注 + 解释模块", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "中国", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动化决策告知+拒绝权", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gdpr art.22", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "决策解释 api + 人工审查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "风险", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "风险项", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "等级", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "🟡 应当改进", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "本技能提供", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "架构方案", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "技术约束", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "道德影响评估", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "道德红线", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai-ml-expert", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "交互方案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "用户流程", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "隐私分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "权限哲学", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai伦理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai哲学", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "负责任ai", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai治理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.06 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "angular-architect", - "description": "Angular 架构专家。当用户需要 Angular 17+ standalone 组件、Signals、RxJS 响应式编程、NgRx 状态管理、Angular 路由、Angular 性能优化、企业级 Angular 应用,或说 \"Angular\"、\"RxJS\"、\"NgRx\" 时使用此技能。", - "maturity": "imported", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "standalone components", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "signals", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "input/output", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ngrx", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "router config", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "guards", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lazy loading", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "resolvers", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "angular", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "rxjs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "架构专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "组件", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.43 - }, - { - "keyword": "响应式编程", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "状态管理", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "路由", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "性能优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.21 - }, - { - "keyword": "企业级", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "应用", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "standalone", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.06 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - }, - { - "keyword": "routing", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.02 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "api-designer", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "resource design", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "http methods", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hateoas", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pagination", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "error responses", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rfc 7807", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "status codes", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "api设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "openapi", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "接口规范", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "interface", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "api-integration-specialist", - "description": "API 集成与第三方对接专家。当用户需要支付集成(Stripe/微信支付/支付宝)、 OAuth2/OIDC 身份认证、Webhook 处理、第三方 API 对接、 AI API 集成(OpenAI/Claude)、幂等性设计, 或说 \"支付对接\"、\"OAuth\"、\"Webhook\"、\"API集成\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "stripe", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "paypal", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "微信支付", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "支付宝", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "支付对接", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "支付回调", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "oauth2", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "oidc", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sso", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "jwt", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "api签名", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hmac", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "openai", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "claude api", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "aws s3", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "阿里云oss", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "短信接口", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "地图api", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "webhook", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "幂等性", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "重试机制", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "限流", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "回调", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "熔断", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "oauth", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "api集成", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "网络超时重试", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "webhook 重复推送", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "验证时间戳,拒绝过期请求", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "集成与第三方", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "对接专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要支", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "付集成", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "身份认证", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "第三方", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "对接", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "集成", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "幂等性设计", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "api", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "ai api", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "claude", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "interface", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - }, - { - "keyword": "钩子", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "architect-expert", - "description": "系统架构师与CTO规划专家。当用户需要系统架构设计、技术选型、API 设计、数据库设计、 分布式系统、微服务架构、高可用高并发、DDD 领域驱动、技术方案、ER 图、架构图、 CTO 规划、黄金路径、平台工程、技术战略、团队拓扑、技术路线图、ADR 架构决策, 或说 \"架构\"、\"系统设计\"、\"技术选型\"、\"CTO规划\"、\"技术战略\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "架构设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "系统设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "架构方案", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "技术架构", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "架构图", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "system design", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "architecture", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.12 - }, - { - "keyword": "software architecture", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术选型", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "框架选择", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术栈", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "技术对比", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术方案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tech stack", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "technology selection", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "api 设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "接口设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据流", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "restful", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "graphql", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "api design", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据库设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "表结构", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "er 图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据模型", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "schema", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "database design", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "分布式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "微服务", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "高可用", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "高并发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "扩展性", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "负载均衡", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "distributed system", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "high availability", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scalability", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "microservices", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ddd", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cqrs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "事件驱动", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "领域驱动", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "clean architecture", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "domain driven design", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cto规划", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术战略", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "黄金路径", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "平台工程", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "团队拓扑", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "adr", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "technical strategy", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "platform engineering", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "推荐方案", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "go (gin) / rust (axum)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "java (spring boot)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "postgresql", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "redis", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "kafka / rabbitmq", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "next.js (app router)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "架构", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "最终", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自然成立", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "选择的方案及理由", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "系统架构师与", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "规划专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要系", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "统架构设计", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "分布式系统", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "微服务架构", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "高可用高并发", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "规划", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "技术路线图", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "架构决策", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "cto", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "api", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "load balancing", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - }, - { - "keyword": "interface", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T1", - "criticality": "MEDIUM", - "callCount30d": 0 - }, - { - "name": "backend-builder", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "后端", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "后端开发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "服务端", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "api开发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "node.js", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "express", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fastapi", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "nestjs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "django", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "go", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "gin", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "微服务", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "grpc", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "protobuf", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "microservice", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "postgresql", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "mysql", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mongodb", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "redis", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "restful", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "graphql", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "api设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "api", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "数据库", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "database", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - }, - { - "keyword": "backend", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T1", - "criticality": "MEDIUM", - "callCount30d": 0 - }, - { - "name": "benchmark", - "description": "Performance regression detection using the browse daemon. Establishes baselines for page load times, Core Web Vitals, and resource sizes. Compares before/after on every PR. Tracks performance trends o", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "20kb there", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "baseline", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "compare", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "/dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "performance", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.82 - }, - { - "keyword": "benchmark", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "page speed", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lighthouse", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "web vitals", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bundle size", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "load time", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "[ -n", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && [ -x", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && b=", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "[ -z", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "$b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "ready: $b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "needs_setup", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "slug=unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "$b eval", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "url", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "timestamp", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pages", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": ": {", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": ": 120,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 450,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 800,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 600,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 1200,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 1400,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 42,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 1250000,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 450000,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 85000,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": [\n {", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 320000,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 180},\n {", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 130000,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "domcomplete - navigationstart", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "loadeventend - navigationstart", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "using the browse", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "daemon. establishes baselines", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "for page load", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "times", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "core web vitals", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "and resource sizes.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "compares before", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "after on every", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "pr. tracks performance", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "trends over time.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "use when", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "性能", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "browse", - "description": "Fast headless browser for QA testing and site dogfooding. Navigate any URL, interact with elements, verify page state, diff before/after actions, take annotated screenshots, check responsive layouts, ", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "onclick", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$b snapshot -a -o", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "or $b responsive", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "complex auth", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "multi-factor login)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "localstorage", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "links", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "@e2", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "@c2", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "...). after snapshot", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "### reading", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "### interaction", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "--load>", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "command", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "attrs ", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tabs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "handoff [message]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "restart", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "resume", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "stop", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "open in browser", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "take a screenshot", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "dogfood this", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test the\n site", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "[ -n", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && [ -x", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && b=", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "[ -z", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "$b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "ready: $b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "needs_setup", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": ".main-content", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user@test.com", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "password", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": ".dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": ".modal", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#submit-btn", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#agree-checkbox", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#name-field", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#search-input", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#file-input", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ".upload-success", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#delete-button", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "done", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "value", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "color", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "welcome", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "email", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "submit", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "text → href", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "cmd", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "arg1", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "fast headless browser", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "for qa testing", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and site dogfooding.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "navigate any url", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "interact with elements", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "verify page state", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "diff before", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "after actions", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "take annotated screenshots", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "check responsive layouts", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "test forms and", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "uploads", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "handle dialogs", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and assert element", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "states.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ms per command.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "use when you", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "need to test", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "a feature", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "verify a deployment", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "dogfood a user", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "flow", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "or file a", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "bug with evidence.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "use when asked", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "test the site", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "部署", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "认证", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "browser-automation-expert", - "description": "浏览器自动化专家。当用户需要浏览器自动化、网页抓取、Web Scraping、 RPA 流程、爬虫开发、Playwright/Selenium 脚本编写, 或说 \"自动化浏览器\"、\"网页抓取\"、\"爬取页面\" 时使用此技能。 仅纯自动化/抓取/RPA/数据采集场景使用本技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash", - "mcp__playwright", - "mcp__chrome-devtools", - "mcp__selenium", - "mcp__browserbase", - "mcp__firecrawl", - "mcp__mobile", - "mcp__scrapling" - ], - "keywords": [ - { - "keyword": "playwright(自动化)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "selenium(自动化)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "browserbase", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stagehand", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cdp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scrapling", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "浏览器自动化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "网页自动化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动化脚本", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "rpa", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "自动填表", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "网页抓取", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "web scraping", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "爬虫", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据采集", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "页面提取", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "反检测抓取", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "网页截图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "页面监控", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "页面快照", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "视觉回归", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "headless", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "无头模式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "chrome devtools protocol", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cloudflare绕过", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "waf绕过", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "反检测", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stealth抓取", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "指纹伪装", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "打开网页", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "e2e测试", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "填表单", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "上传文件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "browser_navigate", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "browser_click", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "browser_snapshot", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "browser_fill_form", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "调试页面", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "执行js", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "抓网络请求", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "性能分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "内存快照", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "控制台日志", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "evaluate_script", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "devtools", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "云浏览器", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "远程浏览器", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "智能提取页面", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai操作网页", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stagehand_act", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stagehand_extract", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "爬取网站", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "抓取页面", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "提取数据", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "站点地图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "批量采集", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "firecrawl_scrape", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "firecrawl_crawl", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "firecrawl_search", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "python爬虫", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "抓取解析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动化浏览器", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "爬取页面", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "测试", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.33 - }, - { - "keyword": "性能", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.42 - }, - { - "keyword": "bug/报错", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "点击登录按钮", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "输入用户名", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "markdown", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "html", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "text", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "当用户需要浏", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "览器自动化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "流程", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "爬虫开发", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "脚本编写", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "仅纯自动化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "抓取", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "数据采集场景", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "使用本技能", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "playwright", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "selenium", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - }, - { - "keyword": "monitoring", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - }, - { - "keyword": "log", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - }, - { - "keyword": "debug", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - } - ], - "tier_class": "T3", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "business-plan-skill", - "description": "商业计划书撰写专家。当用户需要撰写 BP 商业计划书、创业计划、融资材料、融资 PPT、 公司介绍、项目介绍、商业模式设计、商业画布、单位经济模型, 或说 \"写BP\"、\"商业计划书\"、\"融资材料\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write" - ], - "keywords": [ - { - "keyword": "商业计划书", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "写bp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "融资材料", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bp", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "创业计划", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "融资ppt", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "投资人材料", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "商业模式", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "商业画布", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "盈利模式", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "公司介绍", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "项目介绍", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "团队介绍", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "关键论点要有数据佐证", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "商业计划书撰", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "写专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要撰", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "融资", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "商业模式设计", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "单位经济模型", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ppt", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "canary", - "description": "Post-deploy canary monitoring. Watches the live app for console errors, performance regressions, and page failures using the browse daemon. Takes periodic screenshots, compares against pre-deploy base", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "git log", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "git fetch", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "git merge", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "and gh pr create command", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "take screenshots", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "check console errors", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "/dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "monitor deploy", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "canary", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "post-deploy check", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "watch production", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "verify deploy", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "[ -n", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && [ -x", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && b=", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "[ -z", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "$b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "ready: $b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "needs_setup", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "the base branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "the base branch.", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "shipped", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "verified.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "slug=unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "url", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "timestamp", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pages", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": ": {", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": ": 0,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "duration_min", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "alerts", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "post-deploy canary monitoring.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "watches the live", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "app for console", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "errors", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "performance regressions", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and page failures", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "using the browse", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "daemon. takes periodic", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "screenshots", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "compares against pre-deploy", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "baselines", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and alerts on", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "anomalies. use when", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "部署", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "性能", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - }, - { - "keyword": "监控", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "cloud-architect", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "ec2", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "s3", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lambda", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rds", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "well-architected framework", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gcp services", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "abstraction layers", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "portability", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vendor lock-in mitigation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "云架构", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "aws", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "gcp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "azure", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.06 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "cloud-native-expert", - "description": "云原生架构师专家。当用户需要 Kubernetes/K8s 集群部署、服务网格 Istio/Linkerd、 GitOps ArgoCD/Flux、Helm 配置、12-Factor App、HPA 自动扩缩容、NetworkPolicy, 或说 \"云原生\"、\"K8s\"、\"服务网格\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "k8s", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "服务网格", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "云原生", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "kubernetes", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "pod", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "deployment", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "statefulset", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "istio", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "linkerd", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "流量管理", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "mtls", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "gitops", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "argocd", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "flux", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "声明式", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "12-factor", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "不可变基础设施", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "微服务", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.65 - }, - { - "keyword": "helm", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "kustomize", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "configmap", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "secret", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "云原生架构师", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "集群部署", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.02 - }, - { - "keyword": "自动扩缩容", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "gitops argocd", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "factor app", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "hpa", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "networkpolicy", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.06 - }, - { - "keyword": "microservice", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "cluster", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "codex", - "description": "OpenAI Codex CLI wrapper — three modes. Code review: independent diff review via codex review with pass/fail gate. Challenge: adversarial mode that tries to break your code. Consult: ask codex anythin", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "tail -1", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "tail -1 - if a diff exists", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "offer to review it - otherwise", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"timestamp\":\"timestamp\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "\"status\":\"status\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "\"gate\":\"gate\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"findings\":n", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "status (\"clean\" if pass", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"issues_found\" if fail)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gate (\"pass\" or \"fail\")", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\\unresolved\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\critical_gaps\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\mode\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_proposed\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_accepted\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_deferred\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{scope_accepted} accepted", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\issues_found\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\initial_score\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\overall_score\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\decisions_made\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\gate\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\findings\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "why", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "findings", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "ceo review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{runs}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "independent 2nd opinion", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{findings}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\/plan-eng-review\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{status}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "design review", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "\\\\\\ below the table", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "race conditions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "security holes", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "/codex challenge security)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "resource leaks", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "failure modes", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "auth bypasses", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "privilege escalation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "data exposure", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "python3 -c \" import sys", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "'') text = item.get('text'", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "0) + usage.get('output_tokens'", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "codex review", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "codex challenge", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ask codex", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "second opinion", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "consult codex", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "the base branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "the base branch.", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": ")\n[ -z", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "] && echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "|| echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "$(basename $(pwd))", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "xhigh", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "$tmperr", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "focus on security", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tokens used", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tokens: unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "codex-review", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "timestamp", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "gate", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "findings_fixed", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "clean", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.55 - }, - { - "keyword": "issues_found", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "pass", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "fail", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "eng review required", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "with focus (e.g.,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "):", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "no_session", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "continue", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "\\status\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\commit\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\findings_fixed\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "openai codex cli", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "wrapper", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "three modes. code", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "review", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "independent diff review", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "via codex review", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "with pass", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "fail gate. challenge", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "adversarial mode that", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "tries to break", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "your code. consult", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ask codex anything", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "with session continuity", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "for follow-ups. the", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "iq autistic developer", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "second opinion. use", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "when asked to", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "安全", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "认证", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "copywriter-expert", - "description": "文案与营销内容专家。当用户需要撰写网站文案、广告文案、落地页文案、邮件文案、 产品描述、品牌 Slogan、CTA 行动号召、价值主张提炼, 或说 \"写文案\"、\"广告文案\"、\"落地页\"、\"营销文案\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write" - ], - "keywords": [ - { - "keyword": "文案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "广告文案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "落地页文案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "邮件文案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "网站文案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "产品描述", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "标题", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cta", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "行动号召", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "价值主张", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "slogan", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "品牌口号", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "aida", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pas", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fab", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "文案公式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "营销文案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "推广文案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "转化文案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "品牌文案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "写文案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "落地页", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "赋能", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "生态化反", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "吸引用户注意力", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "激发对产品的兴趣", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "促使用户采取行动", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "渲染问题的严重性", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "给出产品作为解决方案", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "产品是什么", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "为什么比别的更好", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "能为用户带来什么", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[提升注册转化率]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[独立开发者]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[一句话概括]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "1. ... 2. ... 3. ...", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "文案与营销内", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "容专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要撰", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "写网站文案", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "品牌", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "价值主张提炼", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "customer-success-expert", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "客户支持", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "售后", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "客服", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "工单", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "帮助中心", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "faq", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "客户成功", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "onboarding", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "客户引导", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "激活率", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "健康度评分", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "续费", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "流失", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "挽回", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "流失预警", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "nrr", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "churn rate", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "满意度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "nps", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "csat", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "客户反馈", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "评价管理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sla", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "响应时间", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "解决时间", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "服务等级", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "服务承诺", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "描述", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "示例", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "服务完全不可用", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "系统宕机", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "核心功能受损", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "支付失败", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "非核心功能异常", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "报表延迟", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "建议与咨询", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "功能建议", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "<50=高风险 ### 流失预警规则", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "检测方式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "使用分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "工单骤增", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "优先处理+回访", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "账务系统", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "有问题随时找我", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "解锁更多价值", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "综合登录频率", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "功能使用深度", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "支持工单量", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "data-analyst-expert", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "推荐图表", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "柱状图", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "条形图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "折线图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "面积图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "直方图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "箱线图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "饼图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "堆叠柱状图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "散点图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "热力图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "漏斗图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "桑基图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "当前值", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "可视化", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "用 pandas", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "形状: {df.shape}", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ")\r\n print(f", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pandas", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "a/b测试", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "a-b测试", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "ab测试", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "eda", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "统计分析", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "留存分析", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "numpy", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "matplotlib", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "seaborn", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "plotly", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "sql分析", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据清洗", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据报告", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "商业洞察", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "漏斗分析", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "假设检验", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "清洗", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "转换", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "描述性统计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "回归分析", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "分类", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.65 - }, - { - "keyword": "回归", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "聚类等基础ml应用", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "data-engineer-expert", - "description": "数据工程师专家。当用户需要进行数据管道设计、ETL 开发、数据仓库建模、流处理、 Spark/Kafka/Airflow/dbt 使用、维度建模、数据质量, 或说 \"数据工程\"、\"ETL\"、\"数据管道\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "etl", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据管道", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "数据工程", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "useranalytics", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "created_at", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "2024-01-01", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "country", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "revenue", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "total_revenue", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "is_active", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "active_users", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "overwrite", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "users.csv", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user_id", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "email", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "age", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据流", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "数据处理", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据仓库", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据湖", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据集市", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "olap", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "spark", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "kafka", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "airflow", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "dbt", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "flink", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "维度建模", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "星型模型", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "雪花模型", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据质量", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据治理", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据血缘", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "大规模数据处理", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据转换和建模", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "工作流编排", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "消息队列", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "实时流处理", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "轻量流处理", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "云数据仓库", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据湖格式", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "表格式", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据工程师专", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "行数据管道设", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "数据仓库建模", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "流处理", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "使用", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "queue", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "database-tuning-expert", - "description": "数据库调优与设计专家。当用户需要 SQL 优化、索引优化、Explain 分析、 慢查询排查、死锁分析、分库分表、读写分离、Redis 缓存一致性、 数据库架构设计,或说 \"慢查询\"、\"索引\"、\"数据库优化\"、\"死锁\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "慢查询", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sql优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "explain", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "索引优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "全表扫描", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "死锁", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "锁等待", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cpu飙升", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "主从延迟", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "连接池耗尽", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "分库分表", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "读写分离", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "缓存一致性", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "redis", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "tidb", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "schema设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "反范式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "json字段", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "时序数据", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "含义", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "极快", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "主键/唯一索引关联", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ref", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "一般", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "全索引扫描", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "all", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "buffers", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "关注点", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "seq scan", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "理想的访问方式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "位图堆扫描", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "nested loop", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "大表连接优选", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "实际耗时(ms)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rows", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "命中率应 >95%", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "适用场景", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "纯等值查询", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gin", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "postgis 空间索引", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "物理有序大表", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "策略", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "最终一致", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "延迟双删", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "写入较频繁", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "db变更→mq→更新缓存", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "索引", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "数据库优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "最左前缀", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user:{user_id}", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据库调优与", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "设计专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "慢查询排查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "死锁分析", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "数据库架构设", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "sql", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "database", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.06 - }, - { - "keyword": "cache", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - }, - { - "keyword": "index", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "debugger-expert", - "description": "Debug 侦探专家。当用户遇到 Bug、报错、异常、崩溃、问题排查、调试、 错误日志、stack trace、404/500 错误、内存泄漏、性能问题、代码不工作, 或说 \"为什么报错\"、\"这个错误\"、\"帮我调试\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash", - "mcp__chrome-devtools", - "mcp__playwright" - ], - "keywords": [ - { - "keyword": "bug", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "报错", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "error", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "exception", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "crash", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "崩溃", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "debug", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "调试", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "排查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "问题", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "故障", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "定位", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stack trace", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "traceback", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "日志", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "log", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "错误信息", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "404", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "500", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "502", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "503", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cors", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "跨域", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "内存泄漏", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "超时", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "卡死", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "爆窗", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "爆窗现象", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "系统修复", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "上下文溢出", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "context overflow", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "不工作", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "失败", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "undefined", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "null", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "nan", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "常见原因", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "对象未正确初始化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "空值访问", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "无限递归", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "跨域配置问题", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "对象没有该属性", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "字典键不存在", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "缩进不一致", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据库未启动", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "事务锁冲突", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "用途", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "为什么报错", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "这个错误", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "帮我调试", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "侦探专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户遇到", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "异常", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "问题排查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "错误日志", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "错误", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "性能问题", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "代码不工作", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "database", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - }, - { - "keyword": "transaction", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "config", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T1", - "criticality": "HIGH", - "callCount30d": 0 - }, - { - "name": "design-consultation", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "date", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "initial design system created", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "design system", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "brand guidelines", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no_design_file", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[ -n", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && [ -x", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && b=", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "[ -z", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "$b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "ready: $b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "needs_setup", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "$b screenshot", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "built for x", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "designed for y", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$preview_file", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lorem ipsum", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "same as body", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "i recommend x", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "because y.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "optimal", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "design-review", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "parameter", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "(auto-detect or ask)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scope", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "--quick (homepage + 2)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "--deep (10-15 pages)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "none", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "minitest + fixtures + capybara", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "node.js", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "jest + cypress", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "pytest + pytest-cov", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "go", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "phpunit + mockery", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "elixir", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "integration", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "smoke", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "spec/", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "sort -rn", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "category", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "visual hierarchy", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "typography", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "spacing & layout", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "color & contrast", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "interaction states", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "responsive", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "content quality", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai slop", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "motion", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "performance feel", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "audit the design", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "visual qa", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ", or", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "[ -n", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && [ -x", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && b=", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "[ -z", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "$b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "ready: $b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "needs_setup", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "runtime:ruby", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:node", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:python", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:go", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:rust", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:php", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:elixir", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "rails", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "framework:rails", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "next", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "framework:nextjs", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "bootstrap_declined", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "`\r\n- `", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "ci:github", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "mkdir -p", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "$b responsive", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "no items.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "save api key", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "continue", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "submit", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "install the cli", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "saving…", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "saving...", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "welcome to [x]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lazy", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "date", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "yyyy-mm-dd", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "url", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "designscore", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": {", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": ", ... },", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": [{", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "i notice...", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ")\r\n-", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "— question (e.g.,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "work.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "— not", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "quick wins", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "not broken.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "deferred", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "improve", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "re-test confirms the fix works", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "no new errors introduced", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "needs specific browser state)", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "性能", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "designer-expert", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "屏幕宽度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "手机竖屏", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "≥ 640px", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "md", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "平板横屏/笔记本", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "≥ 1280px", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "2xl", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ui", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ux", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "关闭对话框", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "dialog", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "dialog-title", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "#main-content", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ui设计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "ux设计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "交互设计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "视觉设计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "设计系统", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "design tokens", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "组件规范", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "设计规范", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "figma", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "sketch", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "原型设计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "设计稿", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "用户体验", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "可用性", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "可访问性", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "响应式", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "允许用户犯错并轻松恢复", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "不要一次性展示所有信息", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "component", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "developer-expert", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "英文", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "变量", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "function", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "对象的模板", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "方法", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "parameter", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "异常", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "callback", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "异步操作的结果", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "异步/等待", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "帮我写", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "怎么实现", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "解释一下", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "编程", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "代码", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "怎么写", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "写一个", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "代码问题", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "报错", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "不工作", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "为什么", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.65 - }, - { - "keyword": "怎么做", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "最佳实践", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "推荐方案", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "template", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ], - "tier_class": "T1", - "criticality": "HIGH", - "callCount30d": 0 - }, - { - "name": "devops-expert", - "description": "DevOps 专家。当用户需要 CI/CD 配置、GitHub Actions、GitLab CI、Docker 容器化、 Kubernetes/K8s 部署、Nginx 配置、云服务 AWS/阿里云、Prometheus/Grafana 监控、 自动化运维,或说 \"部署\"、\"发布\"、\"Docker\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "devops", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ci/cd", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "流水线", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "镜像构建", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "docker", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "kubernetes", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "k8s", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "部署", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.55 - }, - { - "keyword": "发布", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "上线", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "容器化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "编排", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "github actions", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "gitlab ci", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "jenkins", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动化", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "监控", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "告警", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "prometheus", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "grafana", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "日志", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "aws", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "阿里云", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "云服务", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "serverless", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "node", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "dist/main.js", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "3000:3000", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cmd-shell", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "production", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "letsencrypt-prod", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "title", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": ": [\n {", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": [{", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "error rate", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "targets", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "expr", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "response time p95", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.02 - }, - { - "keyword": "自动化运维", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "nginx", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "deploy", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - }, - { - "keyword": "monitoring", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - }, - { - "keyword": "container", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "log", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - }, - { - "keyword": "config", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T1", - "criticality": "MEDIUM", - "callCount30d": 0 - }, - { - "name": "devsecops-expert", - "description": "DevSecOps 专家。当用户需要安全左移、SAST/DAST 安全扫描、容器安全、镜像扫描 Trivy、 供应链安全 SBOM、安全流水线、OPA/Gatekeeper 策略、合规审计, 或说 \"DevSecOps\"、\"安全扫描\"、\"容器安全\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "high: y", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "devsecops", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "安全扫描", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "容器安全", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "dist/main.js", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "]\n kinds: [", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "安全左移", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "安全自动化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "sast", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "dast", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "sca", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "镜像扫描", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "运行时安全", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "供应链安全", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "sbom", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "依赖扫描", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "合规", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "审计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "安全策略", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "当用户需要安", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "全左移", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "安全流水线", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "策略", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "合规审计", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "trivy", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "opa", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "gatekeeper", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - }, - { - "keyword": "container", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "diagram-as-code-expert", - "description": "图表代码化专家。当用户需要 Mermaid、PlantUML、Graphviz 图表, 流程图、时序图、类图、状态图、ER图、甘特图、架构图生成, 或说 \"画图\"、\"生成图表\"、\"可视化\"、\"转成图\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "mermaid", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "plantuml", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "graphviz", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "draw.io", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "流程图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "时序图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "类图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "状态图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "er图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "甘特图", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "架构图", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "c4", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "画图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "生成图表", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "可视化", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "转成图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[] 矩形", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "() 圆角", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "{} 菱形", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "关键路径添加文字说明", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "图表代码化专", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "图表", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "架构图生成", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.06 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "document-release", - "description": "Post-ship documentation update. Reads all project docs, cross-references the diff, updates README/ARCHITECTURE/CONTRIBUTING/CLAUDE.md to match what shipped, polishes CHANGELOG voice, cleans up TODOS, ", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "update the docs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sync documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "post-ship docs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "the base branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "the base branch.", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "./.git/*", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "./node_modules/*", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "./.gstack/*", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "./.context/*", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "why", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "you can now...", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "refactored the...", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "### for contributors", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "feature a", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "feature b", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "reads all project", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "docs", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "cross-references the diff", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "updates readme", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.06 - }, - { - "keyword": "contributing", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "claude.md to match", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "what shipped", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "polishes changelog voice", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "cleans up todos", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and optionally bumps", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "version. use when", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "asked to", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "proactively suggest after", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "a pr is", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "merged or code", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "is shipped.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "重构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "edge-computing-expert", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "edge functions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "边缘计算", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "workers", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cloudflare workers", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "vercel edge", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "deno deploy", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "边缘函数", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "全球部署", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "cdn", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "就近访问", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "边缘数据库", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "turso", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "d1", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "kv", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "database", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "email-communicator", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "写邮件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "商务邮件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "冷邮件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "开发信", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "跟进邮件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "催款函", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "合作邀请", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自我介绍", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "项目汇报", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "道歉信", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "感谢信", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "离职交接", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "会议纪要", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "项目周报", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "进度汇报", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "备忘录", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mou", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "异议回复", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "拒绝委婉", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "提需求", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "催进度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "反馈意见", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "英文邮件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "中英双语", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "正式措辞", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "商务英语", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "english", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "邮件结尾", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "感谢您的耐心等待", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "道歉场景", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "please find attached", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "收到,谢谢", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "催促确认", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "催款", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "evolution-tracker", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "字段", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ts", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "系统版本 (vx.y)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "summary", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fix_note", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "分类标签数组", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "时间跨度: yyyy-mm-dd → yyyy-mm-dd", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "指标", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "总记录数", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "时间跨度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "版本数", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "修复会话", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "修复文件总数", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "版本", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "触发源", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "柱状图", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "xx%", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "version-bump", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "████", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "出现次数", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "进化追踪", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "evolution", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "系统历史", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "变更时间线", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "版本历史", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "进化日志", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "evolution tracker", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "系统进化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "total=$(wc -l <", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "| tr -d ' ')\r\necho", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "node -e", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "grep -i", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$log", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ls -t", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "... 还有 n 条", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "finance-advisor", - "description": "一人公司财务顾问。当用户需要记账方案、现金流管理、税务筹划、个体户/小微企业报税、 成本核算、财务报表分析、利润率计算、报价单制作、应收应付管理, 或说 \"记账\"、\"报税\"、\"现金流\"、\"财务分析\"、\"报价\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "WebSearch" - ], - "keywords": [ - { - "keyword": "记账", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "账目", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "对账", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "流水", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "财务软件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "金蝶", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "用友", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "报税", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "税务筹划", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "增值税", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "个税", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "企业所得税", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "小规模纳税人", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "一般纳税人", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "税负率", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "现金流", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "资金周转", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "应收账款", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "应付账款", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "账期", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "回款", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "财务分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "利润率", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "毛利率", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "净利率", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "roi", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "成本核算", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "盈亏平衡", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "报价单", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "成本估算", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "利润空间", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "报价模板", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "单位", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "小计(¥)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "人天", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "xx", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**¥xx**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "季度≤30万免增值税", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "1%", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "企业所得税25%", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "个人独资企业", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "部分园区有优惠", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "预计收入", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "累计余额", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "¥xx", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "适合规模", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "推荐场景", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "<10笔/月", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "极简启动", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "个人", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "个人收支", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "个体户", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "需开票", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "小微", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "有会计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "报价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "合规要求", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "优化建议", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "一人公司财务", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "顾问", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要记", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "账方案", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "现金流管理", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "小微企业报税", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "财务报表分析", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "利润率计算", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "报价单制作", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "应收应付管理", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "template", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ], - "tier_class": "T3", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "flutter-expert", - "description": "Flutter 跨平台专家。当用户需要 Flutter/Dart 开发、Widget 架构、状态管理 Riverpod/BLoC、Platform Channel、Flutter 性能优化、Flutter 测试,或说 \"Flutter\"、\"Dart\"、\"Widget\" 时使用此技能。", - "maturity": "imported", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "state management", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "providers", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "notifiers", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gorouter", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "building ui components", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "const optimization", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "performance", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.82 - }, - { - "keyword": "flutter", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "dart", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "widget", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "跨平台专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 0.75 - }, - { - "keyword": "状态管理", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "性能优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.21 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 0.66 - }, - { - "keyword": "riverpod", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "bloc", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "platform channel", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.06 - }, - { - "keyword": "组件", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "frontend-design", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "ai slop", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "maximalist chaos", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "retro-futuristic", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "organic/natural", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "luxury/refined", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "playful/toy-like", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "editorial/magazine", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "brutalist/raw", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "art deco/geometric", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "soft/pastel", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "industrial/utilitarian", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "performance", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 1.46 - }, - { - "keyword": "accessibility).", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "unique", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "evenly-distributed palettes.", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "noise textures", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "geometric patterns", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "layered transparencies", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "dramatic shadows", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "decorative borders", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "custom cursors", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "and grain overlays.", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "性能", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "frontend-expert", - "description": "前端开发专家。当用户需要 React、Vue、Next.js、Nuxt、Svelte 组件开发, 前端页面实现,状态管理(Zustand/Pinia/Redux),Server Components, Tailwind CSS 样式,TypeScript 前端,SSR/SSG,性能优化, 或说 \"前端\"、\"组件\"、\"页面开发\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash", - "mcp__playwright", - "mcp__chrome-devtools" - ], - "keywords": [ - { - "keyword": "react", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "vue", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "vue3", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "next.js", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "nuxt", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "svelte", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "solidjs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "angular", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "前端开发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "组件设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "页面开发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ui实现", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "前端页面", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "zustand", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "pinia", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "redux", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "jotai", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "状态管理", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "composition api", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "tailwind", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "css-in-js", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "样式方案", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "响应式设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "前端优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "代码分割", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "懒加载", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ssr", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "ssg", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "hydration", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "typescript 前端", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tsx", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "props", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "泛型组件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "'ghost'; size: 'sm'", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "前端", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "组件", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "dialog", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "modal-title", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "关闭", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "server components", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "actions", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "compiler", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "app router", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "server actions", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "turbopack", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "script setup", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "nuxt content", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "runes", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "react 轻量状态", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "vue 官方推荐", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "服务端状态", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "原子化状态", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "首选", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "组件级隔离", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "开发构建", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "next.js 内置", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "极速编译", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "前端开发专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "组件开发", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "前端页面实现", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "样式", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "性能优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.21 - }, - { - "keyword": "tailwind css", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "typescript", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "frontend", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T1", - "criticality": "MEDIUM", - "callCount30d": 0 - }, - { - "name": "genesis-engine", - "description": "创世纪引擎 - 全生命周期项目协调器。当用户需要从零开始搭建项目、 端到端自动化开发、全生命周期管理、多专家协调, 或说 \"从0开发\"、\"新项目\"、\"创世纪引擎\"、\"全流程开发\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "文件名", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "产品需求文档", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "phase 0", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "测试报告", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "phase 1", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "性能报告", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "phase 3", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "条件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "prd 已获用户批准", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "架构文档已存在", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术选型无冲突", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "构建通过", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "审计评分 >= 7/10", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "核心测试通过", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "无 p0 级安全漏洞", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "无 p0 级 bug", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "代码评审通过", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "部署验证通过", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "测试覆盖率未下降", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "创世纪引擎", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "新项目", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "全流程开发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "从0开发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "通过/approved", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "approved", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "how", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "产品负责人 — 提出愿景", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "审批文档", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "设定优先级", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "管理所有\"how\"", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "协调专家", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "保证质量门通过", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "全生命周期项", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "目协调器", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要从", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "零开始搭建项", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "端到端自动化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "全生命周期管", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "多专家协调", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - }, - { - "keyword": "deploy", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.06 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "git-operation-master", - "description": "Git 操作大师。当用户需要解决 Git 冲突、rebase、cherry-pick、 分支管理、版本回滚、Git 工作流设计、Git LFS、submodule, 或说 \"Git冲突\"、\"回滚\"、\"撤销commit\"、\"分支管理\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "commit", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "push", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "pull", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "clone", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "diff", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "git", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rebase", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "merge", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "cherry-pick", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stash", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tag", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "conflict", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "reset", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "revert", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "reflog", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "撤销", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "回滚", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "冲突", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "submodule", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "worktree", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lfs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gitflow", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hooks", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "分支管理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "命令", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "丢弃未暂存更改", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "git reset head ", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "修改上次提交", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "保留代码在暂存区", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "git revert ", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "git冲突", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "撤销commit", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "临时保存工作现场", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "操作大师", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要解", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "版本回滚", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "工作流设计", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "git lfs", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "rollback", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "钩子", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - } - ], - "tier_class": "T1", - "criticality": "MEDIUM", - "callCount30d": 0 - }, - { - "name": "golang-pro", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "goroutines", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "channels", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "select", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sync primitives", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "generics", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "table-driven tests", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "benchmarks", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fuzzing", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "go语言", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "golang", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "goroutine", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "%w", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "graphql-architect", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "types", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "interfaces", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "unions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "enums", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "input types", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "federation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "real-time updates", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "websocket", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "pub/sub patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rest migration", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "graphql", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "schema设计", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "apollo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "迁移", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - }, - { - "keyword": "接口", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "growth-hacker", - "description": "增长黑客与用户增长专家。当用户需要用户增长策略、AARRR 漏斗优化、 私域流量运营、A/B 测试、增长实验、转化率优化 CRO、裂变营销、 内容营销、渠道策略,或说 \"增长\"、\"拉新\"、\"私域\"、\"转化率\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write" - ], - "keywords": [ - { - "keyword": "用户增长", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "aarrr", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "增长漏斗", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "私域流量", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "增长黑客", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "a/b测试", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "增长实验", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cro", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "转化率优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "内容营销", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "微信生态", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "抖音", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "小红书", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "裂变", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "dau", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mau", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "留存率", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "转化率", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ltv", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cac", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "roi", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "增长", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "拉新", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "私域", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "如何让用户反复回来?", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "如何让用户主动推荐?", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "如何实现商业变现?", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[activation / retention]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[新方案]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[留存率等]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "增长黑客与用", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "户增长专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要用", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "户增长策略", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "漏斗优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "私域流量运营", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 0.66 - }, - { - "keyword": "裂变营销", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "渠道策略", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "gstack", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "login sessions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$b snapshot -a -o", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "or $b responsive", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "signup", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "checkout", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "800", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"https://app.example.com\"]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[\"snapshot\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"-i\"]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[\"fill\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"@e3\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"test@test.com\"]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"@e4\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"password\"]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[\"click\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"@e5\"]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"-d\"]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[\"screenshot\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"/tmp/result.png\"] ]'", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "description", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "history back", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "history forward", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "navigate to url", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "reload page", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "print current url", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "full aria tree", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "form fields as json", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "all links as \"text → href\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cleaned page text", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "click element", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "import cookies from json file", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "import cookies from comet", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "chrome", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "arc", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "brave", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "or edge (opens picker", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "auto-dismiss next dialog", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fill input", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hover element", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "press key — enter", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tab", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "escape", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "arrowup/down/left/right", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "backspace", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "delete", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "home", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "end", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pageup", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pagedown", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "or modifiers like shift+enter", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scroll element into view", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "label", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "or visible text", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "type into focused element", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "upload file(s)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "set user agent", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "set viewport size", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "--networkidle", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "### inspection", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "element attributes as json", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "--errors]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cookies", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "css ", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "dialog [--clear]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "eval ", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "is ", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "js ", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "network [--clear]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "perf", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "storage [set k v]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "command", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "diff ", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pdf [path]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "responsive [prefix]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "h] [selector", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "### snapshot", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "### meta", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "### tabs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "### server", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "be proactive again", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "turn on suggestions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$$-$(date +%s)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "gstack", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ts", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "repo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "'$(basename", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_pf", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_session_id", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill_name", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_tel_dur", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "outcome", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "used_browse", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[ -n", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && [ -x", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && b=", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "[ -z", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "$b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "ready: $b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "needs_setup", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "test@example.com", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "password123", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ".dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "document.title", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ".hero-section", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ".success-toast", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "#next-step-btn", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "#agree-checkbox", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#hero-banner", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ".upload-success", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": ".error-message", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "valid input", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "#delete-button", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "my answer", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "#rename-button", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "goto", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "],\r\n [", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "-i", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fill", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "@e3", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test@test.com", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "@e4", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "password", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "click", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "@e5", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "snapshot", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "-d", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "screenshot", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "/tmp/result.png", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ".modal", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#submit-btn", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#agree", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "#name-field", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#search-input", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "#logo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ".button", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "background-color", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "value", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "color", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "welcome", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "email", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "submit", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "text → href", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "cmd", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "arg1", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "guardian", - "description": "统一安全守护技能。整合 freeze (目录编辑限制)、careful (破坏性命令警告)、 unfreeze (解除限制) 和 guard (全量安全模式) 四项能力为单一入口。 支持子命令: /guardian freeze [dir], /guardian unfreeze, /guardian careful, /guardian status。 触发词: \"guardian\", \"安全守", - "maturity": "stable", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "子命令", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"freeze\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"冻结\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"限制编辑\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"restrict\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "unfreeze", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "启用破坏性命令警告", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"status\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"状态\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "无参数", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "模式", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "rm -rf /var/data", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "drop table/database", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据丢失", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "git push -f origin main", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "git reset --hard", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "生产影响", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "docker system prune -a", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "解除限制", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "安全守护", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "freeze", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "careful", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "guardian", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "guard mode", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "restrict edits", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "safety mode", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lock down", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bash", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "- matcher:", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "冻结", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "限制编辑", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "restrict", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "解冻", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "unlock", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "小心模式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "safety", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "谨慎", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "状态", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$freeze_dir", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "${freeze_dir%/}/", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mkdir -p", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "```\n\n告知用户:", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "if [ -f", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ")\n rm -f", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "else\n echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "]; then\n echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fi\necho", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "统一安全守护", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "技能", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "整合", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "目录编辑限制", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "破坏性命令警", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "全量安全模式", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "四项能力为单", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "一入口", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "支持子命令", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "触发词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.35 - }, - { - "keyword": "guard", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "guardian freeze", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "dir", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "guardian unfreeze", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "guardian careful", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "guardian status", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - }, - { - "keyword": "数据库", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - } - ], - "tier_class": "T1", - "criticality": "HIGH", - "callCount30d": 0 - }, - { - "name": "handoff", - "description": "上下文交接技能。在上下文压力达到 CRITICAL 或用户主动调用时, 自动捕获当前会话进度、关键决策和待办事项,写入 .bookworm-progress.md, 生成下一会话的继续提示词,并清理过期 handoff 文件。 触发词: handoff, 交接, 保存进度, 上下文交接, context handoff, save progress", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Bash", - "Write", - "Edit" - ], - "keywords": [ - { - "keyword": "(非 git 仓库)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "业务锁定", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "已完成", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "待办", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "继续提示词", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "外部依赖", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "待确认项", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "需要用户输入的项", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "上下文交接技", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "在上下文压力", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "达到", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "或用户主动调", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "用时", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "自动捕获当前", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "会话进度", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "关键决策和待", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "办事项", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "写入", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "生成下一会话", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "的继续提示词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "并清理过期", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "文件", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "触发词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.35 - }, - { - "keyword": "交接", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "保存进度", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "上下文交接", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "critical", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "handoff", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "context handoff", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "save progress", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "impact-analyst", - "description": "影响范围分析师。当用户需要代码变更影响评估、依赖分析、调用链追踪、 爆炸半径分析、API 契约检查、副作用检查, 或说 \"影响范围\"、\"改这个有啥影响\"、\"依赖分析\"、\"谁在用这个\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "改这个有啥影响", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "被哪里引用了", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "谁在用这个函数", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "评估风险", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "影响范围", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "依赖分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "调用链", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "爆炸半径", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "检查副作用", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "依赖检查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "死代码检测", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "类型", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "谁在用这个", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "应该没事", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "影响范围分析", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要代", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "码变更影响评", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "调用链追踪", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "爆炸半径分析", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "契约检查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "副作用检查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "改这个有啥影", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "api", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "industry-research-cn", - "description": "中国行业深度研究与市场分析技能。当用户需要进行行业调研、市场规模测算、 竞争格局分析、投资可行性研究、竞品分析、PESTLE 分析时使用此技能。 触发词:行业研究、市场调研、竞争格局、TAM/SAM/SOM、竞品分析、 industry research、market analysis。优先引用权威资料。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "WebFetch", - "WebSearch" - ], - "keywords": [ - { - "keyword": "竞争分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "模块", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "法律法规", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "产业政策", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "标准体系", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**需交叉验证**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "分类", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "特征", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "演进", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "l10-l12", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cr5/hhi", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "波特五力", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "8. 市场机会识别", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "综合", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "来源类型", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "最高", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "政府报告", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术白皮书", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**l7-l9**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "国际机构", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "学术论文", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "媒体报道", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "` `", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "业内人士透露", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "事实", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "观点", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "标准", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "官方统计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "兼顾投资", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "创业", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "战略咨询多场景需求", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "中国行业深度", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "研究与市场分", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "析技能", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "行行业调研", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "市场规模测算", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "竞争格局分析", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "投资可行性研", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "竞品分析", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "分析时使用此", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "技能", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "触发词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.35 - }, - { - "keyword": "行业研究", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "市场调研", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "竞争格局", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "优先引用权威", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "资料", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "pestle", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "tam", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "sam", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "som", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "industry research", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "market analysis", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "investigate", - "description": "Systematic debugging with root cause investigation. Four phases: investigate, analyze, hypothesize, implement. Iron Law: no fixes without root cause. Use when asked to \"debug this\", \"fix this bug\", \"w", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "pattern", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "intermittent", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "timing-dependent", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "nil/null propagation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "transactions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "callbacks", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hooks", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "timeout", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "unexpected response", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "configuration drift", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "redis", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "cdn", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "browser cache", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "turbo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "debug this", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fix this bug", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "why is this broken", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ", or", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "edit", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "- matcher:", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "] && echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "|| echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "mkdir -p", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "quick fix for now", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "for now.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "this should fix it.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "systematic debugging with", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "root cause investigation.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "four phases", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "investigate", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "analyze", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "hypothesize", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "implement. iron law", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "no fixes without", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "root cause. use", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "when asked to", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "why is this", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "broken", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "investigate this error", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "root cause analysis", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "proactively suggest when", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "the user reports", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "errors", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "unexpected behavior", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "or is troubleshooting", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "why something stopped", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "working.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "缓存", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "调试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "事务", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - }, - { - "keyword": "钩子", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.02 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "investor-review-guide", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "权重", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "tam/sam/som", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "增长趋势", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "竞争格局", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "25%", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "团队", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "盈利模式", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "单位经济", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "可扩展性", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "5%", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "维度", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "加权分", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "30%", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "产品力", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "15%", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "财务", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "投资", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "尽调", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "评估项目", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "投资评估", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "投资建议", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "风险投资", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "vc", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "商业计划", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "bp", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "bp评审", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "项目评估", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "尽职调查", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "dd", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "估值", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "估值分析", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "融资", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "融资轮次", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "kubernetes-specialist", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "deployments", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "statefulsets", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "daemonsets", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "jobs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cronjobs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "configuration", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pv", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pvc", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "storageclasses", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "csi drivers", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "troubleshooting", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "crd", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "operator sdk", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "controller-runtime", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "reconciliation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gitops", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "vpa", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hpa tuning", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "spot instances", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "quotas", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "right-sizing", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "k8s部署", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "helm", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "k8s排错", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.02 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "land-and-deploy", - "description": "Land and deploy workflow. Merges the PR, waits for CI and deploy, verifies production health via canary checks. Takes over after /ship creates the PR. Use when: \"merge\", \"land\", \"deploy\", \"merge and v", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "git log", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "git fetch", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "git merge", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "and gh pr create command", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "deploy", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "wait intelligently", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "verify thoroughly", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "wait for deploy", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "state", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "title", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "url", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "mergestatestatus", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mergeable", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "baserefname", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "build a readiness report", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "plan-ceo-review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "plan-design-review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "design-review-lite", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "\"refactor\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"rewrite\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"overhaul\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "head -5 if found", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "grep -i \"production.*url\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "grep -i \"platform\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "release", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "diff scope", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scope_docs only", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scope_config only", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scope_backend only", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scope_frontend (any)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mixed scopes", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "merge", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "land", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "merge and verify", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "land it", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "production", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "[ -n", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && [ -x", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && b=", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "[ -z", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "$b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "ready: $b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "needs_setup", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "the base branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "the base branch.", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "fix", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "refactor", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "rewrite", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "overhaul", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "docs:", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "- if e2e not run:", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "no_config", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "$deploy_config", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "production.*url", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "platform", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "platform:fly", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:render", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:vercel", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:netlify", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:heroku", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:railway", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "$f", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "deploy_workflow:$f", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "staging", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cd", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "%{http_code}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "custom deploy hooks", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "direct merge", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "no workflow detected", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "skipped", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "clean", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.55 - }, - { - "keyword": "none", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "land-and-deploy", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "timestamp", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pr", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "merge_sha", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "deploy_status", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ci_wait_s", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "queue_s", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "deploy_s", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "canary_s", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "total_s", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "land and deploy", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "workflow. merges the", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "waits for ci", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and deploy", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "verifies production health", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "via canary checks.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "takes over after", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ship creates the", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "pr. use when", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ship it to", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "部署", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - }, - { - "keyword": "前端", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "后端", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "重构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - }, - { - "keyword": "队列", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - }, - { - "keyword": "钩子", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.02 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "legal-review-skill", - "description": "中国法务审查专家。合同审查、企业合规、知识产权、劳动用工、数据合规、 法律文书起草、法律风险预警。触发词:合同审查、法务审查、合规审查、 legal review、数据合规、知识产权。基于中国现行法律法规。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "WebFetch", - "WebSearch" - ], - "keywords": [ - { - "keyword": "定义", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "必须修改后方可签署", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**低风险**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "供决策参考", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "条款位置", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "风险等级", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "不构成正式法律意见", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[合同/文件名称]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[日期]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[合同类型]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "中国法务审查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "合同审查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "企业合规", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "知识产权", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "劳动用工", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "数据合规", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "法律文书起草", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "法律风险预警", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "触发词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.35 - }, - { - "keyword": "法务审查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "合规审查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "基于中国现行", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "法律法规", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "legal review", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "mcp-probe", - "description": "MCP 服务器连通性体检。对 .claude.json 中注册的全部 MCP (stdio + http) 发 initialize 握手包或 HEAD 请求,输出每个服务器的启动耗时、健康状态和根因诊断。 触发词: \"体检MCP\", \"测MCP\", \"MCP健康检查\", \"MCP连通性\", \"mcp-probe\", \"probe mcp\", \"MCP全量测试\", \"MCP诊断\", \"所有MCP是", - "maturity": "stable", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "类型", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "**http** (type:http", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "url)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "超过判为 timeout", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**ok**: n", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "启动耗时", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "1.7s", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "可能原因", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "缺环境变量", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stderrtail 关键字", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "err_module_not_found", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "node 18.20+ 拒绝直接 spawn .cmd", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "代理或网络问题", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "').substring(0", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "process.env", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cfg.env", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cfg.args", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stdio", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mcp-probe", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "probe mcp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "体检mcp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "测mcp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mcp健康检查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mcp连通性", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mcp全量测试", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mcp诊断", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "id", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "result", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "name", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "github", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "kind", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "ok", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "detail", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 1735,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "需要我直接修复吗?", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "jsonrpc", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "修复仅限 env 段补全", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "npx 缓存清理", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "服务器连通性", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "体检", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "中注册的全部", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "握手包或", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "请求", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "输出每个服务", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "器的启动耗时", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "健康状态和根", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "因诊断", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "触发词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.35 - }, - { - "keyword": "健康检查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "连通性", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "全量测试", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "诊断", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "所有", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "是否正常", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "mcp", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "claude.json", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "http", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "initialize", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "head", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - }, - { - "keyword": "cache", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "mcp-prune", - "description": "MCP 剪枝分析工具 (Phase 1 · T1.4)。基于 mcp-usage-tracker 的使用率数据, 识别最近 N 天零调用且非 critical 的 MCP 候选,生成剪枝 plan 文件。 绝不自动修改 ~/.claude.json,用户需人工 apply。 触发词: \"mcp-prune\", \"剪枝 MCP\", \"MCP 剪枝\", \"清理 MCP\", \"精简 MCP\", \"dis", - "maturity": "stable", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "能力", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "--confirm", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "生成 plan 文件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mcp-prune", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "disable unused mcp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "prune mcp servers", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "剪枝 mcp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mcp 剪枝", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "清理 mcp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "精简 mcp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "剪枝分析工具", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "基于", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "的使用率数据", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "识别最近", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "天零调用且非", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "候选", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "生成剪枝", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "文件", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "绝不自动修改", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "用户需人工", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "触发词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.35 - }, - { - "keyword": "剪枝", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "清理", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "精简", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "mcp", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "phase", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "t1.4", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "mcp-usage-tracker", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "critical", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "plan", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "claude.json", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "apply", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "miniprogram-expert", - "description": "小程序开发专家。当用户需要微信小程序、支付宝小程序、抖音小程序开发, Taro、uni-app 跨端框架,云开发、云函数、分包优化、setData 优化、 登录授权、支付功能、审核上架,或说 \"小程序\"、\"Taro\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "taro", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "小程序", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lazycodeloading", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "requiredcomponents", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "微信小程序", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "支付宝小程序", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "抖音小程序", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "百度小程序", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "uni-app", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "remax", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "云开发", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "小程序登录", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "小程序支付", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "分享", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "分包", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "性能优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 1.94 - }, - { - "keyword": "启动优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "微信", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "支付宝", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "抖音", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.65 - }, - { - "keyword": "taro 3.x", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "云函数", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "云数据库", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "云存储", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "启动", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "渲染", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "包体积优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "登录授权", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "支付", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "小程序开发专", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要微", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "信小程序", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "抖音小程序开", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "跨端框架", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "分包优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "支付功能", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "审核上架", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "setdata", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "database", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - }, - { - "keyword": "组件", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "mobile-expert", - "description": "移动端开发专家。当用户需要 React Native、Flutter、Expo 跨平台开发, iOS Swift/SwiftUI、Android Kotlin/Jetpack Compose 原生开发, App 性能优化、应用上架 App Store/Google Play, Android 设备控制、ADB 操作、设备截图、UI 自动化测试、 应用安装/卸载/启动、模拟器操作、手势模拟、屏幕元素", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash", - "mcp__mobile" - ], - "keywords": [ - { - "keyword": "onpress", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "variant = 'primary'", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "loading = false", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "disabled = false", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "padding: 12", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "outline: { borderwidth: 2", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bordercolor: '#007aff' }", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "}; return { ...base", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "跨平台", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "app开发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "移动端", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "adb", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "设备截图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "#fff", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "home", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "profile", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "login", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "main", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "react native", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "flutter", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.65 - }, - { - "keyword": "expo", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "ionic", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "ios", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "android", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "swift", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "kotlin", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "原生开发", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "手机应用", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "app", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "应用上架", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "app store", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "google play", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "签名", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "移动性能", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "启动优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "内存优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "adb devices", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "模拟器", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "真机调试", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "mobile mcp", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "设备列表", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "应用安装", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "ui自动化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "手势模拟", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "屏幕元素", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "dart 3.5+", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "swift 5.9+", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "swiftui", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.65 - }, - { - "keyword": "uikit", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "kotlin 1.9+", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "jetpack compose", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "zustand", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "jotai", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "redux toolkit", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "riverpod", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "bloc", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "provider", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "移动端开发专", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "跨平台开发", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "性能优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.21 - }, - { - "keyword": "设备控制", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "操作", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "自动化测试", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "卸载", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "启动", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "模拟器操作", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "屏幕元素检测", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ios swift", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "android kotlin", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "debug", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - } - ], - "tier_class": "T1", - "criticality": "MEDIUM", - "callCount30d": 0 - }, - { - "name": "nextjs-developer", - "description": "Next.js 全栈专家。当用户需要 Next.js 14+ App Router、RSC 服务端组件、Server Actions、ISR/SSG/SSR 渲染策略、Middleware、Next.js 性能优化,或说 \"Next.js\"、\"App Router\"、\"Server Components\" 时使用此技能。", - "maturity": "imported", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "file-based routing", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "layouts", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "templates", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "route groups", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "server actions", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "fetch", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "caching", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "isr", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "on-demand revalidation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "next.js", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "app router", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "server components", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "全栈专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "服务端组件", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "渲染策略", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "性能优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.21 - }, - { - "keyword": "rsc", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ssg", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "ssr", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "middleware", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - }, - { - "keyword": "中间件", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - }, - { - "keyword": "模板", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - }, - { - "keyword": "路由", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "notification-system-expert", - "description": "通知系统专家。当用户需要推送通知(FCM/APNs/Web Push)、 邮件发送(SendGrid/AWS SES/Mailgun)、SMS 短信(Twilio/阿里云短信)、 企业微信/钉钉/飞书/Slack 机器人消息、In-app 站内通知、 通知模板设计、消息分级策略、通知频率控制, 或说 \"推送通知\"、\"发邮件\"、\"发短信\"、\"消息通知\"、\"Slack 机器人\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "推送通知", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fcm", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "apns", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "web push", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "service worker", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "消息推送", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "邮件发送", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sendgrid", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "aws ses", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mailgun", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "smtp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "邮件模板", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "事务邮件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "短信发送", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sms", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "twilio", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "阿里云短信", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "验证码", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "短信模板", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "slack bot", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "企业微信机器人", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "钉钉机器人", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "飞书机器人", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "discord bot", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "站内信", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "in-app 通知", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "通知中心", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "未读数", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "通知铃铛", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "通知策略", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "消息分级", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "频率控制", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "静默期", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "通知偏好", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "推送", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "通知", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "发消息", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "提醒", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "告警通知", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "发邮件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "发短信", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "消息通知", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "slack", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "slack 机器人", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "push", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "email", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "wechat_work", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "channelsender", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "message", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "text", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "blocks", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "发什么", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "怎么发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "android + web push", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "ios + macos", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "service worker + vapid", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "统一推送平台", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "rest api + smtp", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "模板引擎", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "送达率分析", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "高吞吐", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "开发者友好", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "邮件解析", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "现代化 api", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "国内短信", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "签名/模板审核", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "微信生态", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "通知系统专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要推", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "送通知", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "短信", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "企业微信", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "钉钉", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "飞书", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "机器人消息", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "站内通知", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "通知模板设计", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "消息分级策略", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "通知频率控制", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "机器人", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "in-app", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "transaction", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "template", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "performance-expert", - "description": "性能优化专家。当用户需要进行前端性能优化、后端性能调优、数据库优化、性能监控、 Core Web Vitals(LCP/FID/CLS)优化、首屏加载优化、内存优化、索引优化, 或说 \"性能优化\"、\"加载慢\"、\"响应慢\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash", - "mcp__chrome-devtools", - "mcp__playwright" - ], - "keywords": [ - { - "keyword": "加载慢", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "响应慢", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "性能优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.42 - }, - { - "keyword": "/hero.jpg", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "blur", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "image.avif", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "image/avif", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "image.webp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "image/webp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "image.jpg", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lazy", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "warm up", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sustained load", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "application/json", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "api health check", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "/api/health", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "首屏优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "lcp", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "fcp", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "core web vitals", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "api慢", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "延迟高", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "吞吐量", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "内存优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "cpu优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "带宽优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "查询慢", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "数据库优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "索引优化", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "性能调优", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "性能问题", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "性能优化专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "行前端性能优", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "后端性能调优", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "性能监控", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "首屏加载优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "fid", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "cls", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "database", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - }, - { - "keyword": "frontend", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "backend", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - }, - { - "keyword": "monitoring", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - }, - { - "keyword": "index", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T1", - "criticality": "MEDIUM", - "callCount30d": 0 - }, - { - "name": "plan-ceo-review", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "fixme\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sort -rn", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "tr '/' '-'", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "effort", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "s/m/l", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"user-dashboard\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "description", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "times out", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "max iterations", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"iterations\":iterations", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"issues_found\":found", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"issues_fixed\":fixed", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"remaining\":remaining", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "what can go wrong", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "api returns 429", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "jsonparseerror", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "record not found", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "500 error ← bad recordnotfound", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "catch (exception e)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "with what arguments", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "new params", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "new file paths", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sanitized", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "empty string", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "string when integer expected", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "string exceeding max length", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "unicode edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "payment data", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "command", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "template", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "likelihood (high/med/low)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "impact (high/med/low)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "evaluate: interaction", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "how? ---------------------", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "-------- form submission", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "async operation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "list/table view", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "background job", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "methods", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "assuming happy path only", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "condition", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "empty", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "boundary values", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fewer integration", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "randomness", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "external services", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "which cases should be added", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "runtime", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "redis connections", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "exit", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "operational debt", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "testing debt", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "second", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "error", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "failure mode", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user sees?", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test=n", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "complexity", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "the current state", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "m→s", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "l→m", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mode selected", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "system audit", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "step 0", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "section 1 (arch)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "section 2 (errors)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "section 3 (security)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "section 4 (data/ux)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "section 5 (quality)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "section 6 (tests)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "section 7 (perf)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "section 8 (observ)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "section 9 (deploy)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "section 10 (future)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "section 11 (design)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "not in scope", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "what already exists", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "dream state delta", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "error/rescue registry", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "failure modes", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "todos.md updates", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "scope proposals", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ceo plan", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lake score", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "diagrams produced", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stale diagrams found", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "unresolved decisions", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "review readiness dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "runs", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "required", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "code quality", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "tests", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "new user-facing features", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "refactors", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "infra", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "codex structured", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "claude adversarial subagent", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "stale (>7 days)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "or has open issues - ceo", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "design", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\unresolved\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\critical_gaps\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\mode\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_proposed\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_accepted\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_deferred\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{scope_accepted} accepted", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\issues_found\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\initial_score\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\overall_score\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\decisions_made\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\gate\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\findings\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "why", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "findings", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "ceo review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{runs}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "independent 2nd opinion", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{findings}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\/plan-eng-review\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{status}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "design review", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "think bigger", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "expand scope", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "strategy review", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rethink this", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "the base branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "the base branch.", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "not in scope.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ship the shortcut", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "handle errors.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "engineered enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "how do we win?", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$design", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "|| echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "$handoff", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "no design doc found,", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "i'm not\r\nsure,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "discussion so far", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "minimal viable", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ideal architecture", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "must ship together", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user-dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "auth-refactor", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "reviewer concerns", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "if they ask", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "## reviewer concerns", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "plan-ceo-review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "ts", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "iterations", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "issues_found", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "issues_fixed", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "remaining", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "quality_score", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "figure it out later.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "go big", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ambitious", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cathedral", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "not found", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "swallow and continue", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "prompt/llm changes", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "do nothing", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "3a", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "3b", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "timestamp", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "unresolved", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "critical_gaps", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "mode", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "scope_proposed", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scope_accepted", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scope_deferred", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "commit", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "clean", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.55 - }, - { - "keyword": "issues_open", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "(full)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "(lite)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "don't bother me", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "skipped (global)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "eng review required", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "is it big │", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "is it too │", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "│ minimum?", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "joy to │", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "can we │", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "│ operate", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "│ it's broken?", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "inevitable", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "2026-03-16t14:30:00)", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "eng review missing", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "or has open issues", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\status\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\commit\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\findings_fixed\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "部署", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - }, - { - "keyword": "安全", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "重构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - }, - { - "keyword": "认证", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - }, - { - "keyword": "模板", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "plan-design-review", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "loading", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "success", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "-------- [each ui feature]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[spec]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user does", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lands on page", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "if deferred", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"3a\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ui patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "unresolved responsive behavior", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "complexity", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "system audit", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "step 0", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "pass 1 (info arch)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pass 2 (states)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pass 3 (journey)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pass 4 (ai slop)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pass 5 (design sys)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pass 6 (responsive)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pass 7 (decisions)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "not in scope", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "what already exists", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "todos.md updates", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "decisions made", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "decisions deferred", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "overall design score", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "review readiness dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "runs", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "required", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "code quality", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "tests", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "new user-facing features", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "refactors", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "infra", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "codex structured", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "claude adversarial subagent", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "stale (>7 days)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "or has open issues - ceo", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "design", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\unresolved\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\critical_gaps\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\mode\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_proposed\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_accepted\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_deferred\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{scope_accepted} accepted", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\issues_found\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\initial_score\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\overall_score\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\decisions_made\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\gate\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\findings\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "why", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "findings", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "ceo review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{runs}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "independent 2nd opinion", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{findings}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\/plan-eng-review\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{status}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "design review", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "the base branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "the base branch.", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "no items found.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "clean, modern ui", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stacked on mobile.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "looked at the design", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "i feel for the user", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "would i notice?", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "this feels wrong", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "(rams).", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "snow white", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "), jony ive (", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "this feels off", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "2. gap:", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "good enough, move on", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "constraint worship", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cards with icons", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hero section", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "stacked on mobile", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "3a", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "3b", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "plan-design-review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "timestamp", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "initial_score", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "overall_score", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "unresolved", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "decisions_made", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "commit", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "clean", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.55 - }, - { - "keyword": "issues_open", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "(full)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "(lite)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "don't bother me", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "skipped (global)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "eng review required", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "current iso 8601 datetime", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "eng review missing", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "or has open issues", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\status\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\commit\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\findings_fixed\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "重构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "plan-eng-review", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "tr '/' '-'", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "review readiness dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "runs", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "required", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "code quality", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "tests", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "new user-facing features", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "refactors", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "infra", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "codex structured", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "claude adversarial subagent", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "stale (>7 days)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "or has open issues - ceo", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "design", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\unresolved\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\critical_gaps\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\mode\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_proposed\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_accepted\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\scope_deferred\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{scope_accepted} accepted", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\issues_found\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\initial_score\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\overall_score\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\decisions_made\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\gate\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\findings\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "why", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "findings", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "ceo review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{runs}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "independent 2nd opinion", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{findings}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "\\/plan-eng-review\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "{status}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "design review", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": ", or", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "engineered enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "reviewed the code", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "caught the landmine.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "boring by default.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "systems over heroes.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$design", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "|| echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "no design doc found,", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "high", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "prompt/llm changes", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "do nothing", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "3a", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "3b", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "not in scope", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "what already exists", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "plan-eng-review", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "timestamp", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "unresolved", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "critical_gaps", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "issues_found", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "mode", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "commit", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "clean", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.55 - }, - { - "keyword": "issues_open", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "unresolved decisions", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "(full)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "(lite)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "don't bother me", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "skipped (global)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "eng review required", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "current iso 8601 datetime", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "full_review / scope_reduced", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "eng review missing", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "or has open issues", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\status\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\commit\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "\\findings_fixed\\", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "重构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "planning-with-files", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "bash", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "location", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "your project directory", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "file", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "phases", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "progress", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "decisions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "throughout session", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "attempt", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "created default config", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "situation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "don't read", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "viewed image/pdf", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "screenshots don't persist", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "read plan/findings", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "error occurred", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "recover state", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "answer source", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "remaining phases", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "goal statement in plan", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "do instead", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "create task_plan.md file", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "re-read plan before decisions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "log errors to plan file", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "store large content in files", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "create plan file first", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "track attempts", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mutate approach", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "create files in your project", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "write|edit", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sd=\\", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "2>/dev/null || sh \\", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "2.16.1", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$(pwd)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.02 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "pricing-strategist", - "description": "定价策略专家。当用户需要 SaaS 定价模型、产品定价策略、价格梯度设计、 竞品定价分析、价值定价法、免费增值模式设计、提价策略, 或说 \"定价\"、\"怎么收费\"、\"定价模型\"、\"价格策略\"、\"提价\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "WebSearch" - ], - "keywords": [ - { - "keyword": "定价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "定价模型", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "定价策略", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "怎么收费", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "收费模式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "订阅制", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "按量计费", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "免费增值", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "freemium", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "阶梯定价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "席位定价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "价值定价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "成本加成", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "竞品定价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "心理定价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "捆绑定价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "提价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "价格敏感度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "支付意愿", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "价格弹性", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "wtp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "竞品价格对标", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "人天报价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "项目报价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "按效果付费", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "保底+分成", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "free", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "enterprise", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "✅ (有限)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "免费版", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "参考点", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "50人免费", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "协作功能差异化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "免费", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "存储+高级功能", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "个人免费", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai+协作人数", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "3项目免费", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "项目数+标注功能", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "价格策略", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "诱饵效应", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "最受欢迎", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "省¥1200", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "8折", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "开始使用", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "免费试用x天", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "已有1000+团队选择", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "获客引流,降低试用门槛", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "大客户定制,按需报价", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "定价策略专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "产品定价策略", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "价格梯度设计", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "竞品定价分析", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "价值定价法", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "免费增值模式", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "提价策略", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "saas", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "product-manager-expert", - "description": "产品经理专家。当用户需要 PRD 产品需求文档、需求分析、竞品分析、用户研究、 产品规划、路线图、用户故事、MVP 定义、RICE/KANO 优先级排序、迭代计划、 产品规格文档、功能规格说明 FSD、技术规格书 TSD、接口规格 API Spec、验收标准, 或说 \"产品\"、\"PRD\"、\"需求\"、\"规格\"、\"规格文档\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write" - ], - "keywords": [ - { - "keyword": "prd", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "产品需求", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "需求文档", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "用户故事", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "竞品分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "需求分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "市场分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "产品规划", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "路线图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "版本规划", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "迭代计划", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rice", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "kano", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "moscow", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "优先级", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "产品规格", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "功能规格", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术规格", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "api规格", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "验收标准", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "类型", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "产品", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "需求", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "规格", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "规格文档", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "产品经理专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "产品需求文档", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "用户研究", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "定义", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "优先级排序", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "产品规格文档", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "功能规格说明", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "技术规格书", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "接口规格", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "mvp", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "fsd", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "tsd", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "api spec", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "interface", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "project-audit-expert", - "description": "项目全栈审计专家。当用户需要项目代码审查、漏洞修补、功能测试、功能优化、逻辑验证、 全面审计、上线前检查、质量把关、技术债务清理, 或说 \"审计项目\"、\"全面检查\"、\"上线前审查\"、\"帮我审一下\" 时使用此技能。 整合代码审查、安全漏洞扫描、功能测试、性能优化、逻辑验证五大能力于一体。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash", - "Task", - "WebFetch" - ], - "keywords": [ - { - "keyword": "项目审计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "全面审查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "上线前检查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "上线检查清单", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "全栈审计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "质量把关", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "帮我审一下", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "系统自检", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自检", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自审计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bookworm自检", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bookworm审计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "漏洞修复", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "安全修补", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "安全审计", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "漏洞扫描", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "功能测试", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "集成测试", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "回归测试", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "逻辑验证", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "业务逻辑检查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据流验证", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "高频问题", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "p1", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "json.parse 无运行时验证", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "typescript", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "db 字段修改未持久化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "python", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "工具函数多处重复定义", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "关键检查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "p0", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "jwt 签名验证逻辑", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sql 注入(字符串拼接)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "搜索 password=", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "secret=", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**技术栈**: [xxx] ## 总体评估", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "等级", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "xx/100", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "a/b/c/d", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "功能完整性", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**综合评分**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**x**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "文件", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "级别", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "多次", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "except exception 吞掉所有错误", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "重复工具函数(dry 违反)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "alembic 迁移 enum 重复创建", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "模式", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "\"帮我审一下这个文件\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "标准审计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "全项目,phase 1-5", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "大型项目", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "全面审计", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "审计项目", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "全面检查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "上线前审查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "帮我审一下这个文件", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "审计一下后端 api", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "文件:行号", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[影响范围]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[代码示例]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[确认步骤]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "项目全栈审计", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要项", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "目代码审查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "漏洞修补", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "功能优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "技术债务清理", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "整合代码审查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "安全漏洞扫描", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "性能优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.21 - }, - { - "keyword": "逻辑验证五大", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "能力于一体", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - }, - { - "keyword": "backend", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - }, - { - "keyword": "migration", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - } - ], - "tier_class": "T1", - "criticality": "HIGH", - "callCount30d": 0 - }, - { - "name": "project-coordinator", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "项目管理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "项目计划", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "排期", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "wbs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "工作分解", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "任务分解", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sprint", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scrum", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "看板", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "kanban", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "迭代", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "站会", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "回顾会", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "里程碑", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "进度跟踪", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "甘特图", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "燃尽图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "进度报告", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "风险管理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "风险登记", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "依赖管理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "阻塞", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "延期", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "飞书项目", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "notion", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "linear", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "jira", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "github projects", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "m1", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "prd 签字确认", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "原型验收", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mm-dd", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "m4", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "生产环境稳定运行", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "风险", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "等级", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "高/中/低", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[措施]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[一句话描述]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "yyyy-mm-dd → yyyy-mm-dd", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[预算/人力/技术]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "prompt-optimizer", - "description": "提示词优化器。当用户输入\"提示词:(内容)\"或\"优化提示词:(内容)\"格式时自动触发,将用户的原始提示词转化为符合Claude官方规范的高质量结构化提示词。支持各类任务场景的提示词优化,包括文本生成、代码编写、数据分析、创意写作等。触发词包括:提示词:、优化提示词:、prompt:、改进提示词、帮我优化这个prompt。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "WebFetch", - "WebSearch" - ], - "keywords": [ - { - "keyword": "说明", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "用具体指令替代模糊描述", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "使用 xml 标签分隔不同部分", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "复杂任务提供 3-5 个示例", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "鼓励分步骤推理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "说\"要做什么\"而非\"不要做什么\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "提示词:(内容)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "优化提示词:(内容)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "帮我优化/改进这个提示词", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "为什么", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "要做什么", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "不要做什么", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "识别是生成", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "编码", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "翻译", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "总结还是其他类型", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "提示词优化器", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户输入", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "提示词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "内容", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "优化提示词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "格式时自动触", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "将用户的原始", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "提示词转化为", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "符合", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "官方规范的高", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "质量结构化提", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "示词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "支持各类任务", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "场景的提示词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "包括文本生成", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "代码编写", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "数据分析", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "创意写作等", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "触发词包括", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "改进提示词", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "帮我优化这个", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "claude", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "prompt", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - } - ], - "tier_class": "T1", - "criticality": "MEDIUM", - "callCount30d": 0 - }, - { - "name": "python-pro", - "description": "Python 深度专家。当用户需要 Python 3.11+ 高级特性、类型提示 typing、async/await 异步编程、dataclass、mypy 配置、pytest 高级用法、生产级 Python 模式,或说 \"Python\"、\"类型提示\"、\"异步Python\" 时使用此技能。", - "maturity": "imported", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "type hints", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mypy", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "generics", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "protocol", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "standard library", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pytest", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "fixtures", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mocking", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "parametrize", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "类型提示", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "python", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "异步python", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "高级特性", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "异步编程", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.02 - }, - { - "keyword": "高级用法", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "生产级", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "模式", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "异步", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "typing", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "async", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "await", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "dataclass", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "config", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "qa", - "description": "Systematically QA test a web application and fix bugs found. Runs QA testing, then iteratively fixes bugs in source code, committing each fix atomically and re-verifying. Use when asked to \"qa\", \"QA\",", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "parameter", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "(auto-detect or required)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tier", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": ".gstack/qa-reports/", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scope", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "sign in to user@example.com", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "runtime", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "minitest + fixtures + capybara", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "node.js", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "jest + cypress", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "pytest + pytest-cov", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "go", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "phpunit + mockery", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "elixir", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "integration", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "smoke", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "spec/", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "sort -rn", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "category", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "console", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "links", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "visual", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "functional", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ux", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "performance", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.82 - }, - { - "keyword": "content", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "accessibility", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "只报告", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "不修复", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test this site", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "find bugs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test and fix", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "report-only", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "just report", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "qa report only", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "qa", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fix what's broken", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "does this work?", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test but don't fix", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "the base branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "the base branch.", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "不要修", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "只测试不修", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "报告模式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "report only", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "don't fix", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "qa-only", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[ -n", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && [ -x", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && b=", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "[ -z", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "$b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "ready: $b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "needs_setup", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "runtime:ruby", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:node", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:python", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:go", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:rust", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:php", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:elixir", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "rails", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "framework:rails", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "next", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "framework:nextjs", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "bootstrap_declined", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "`\n- `", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ci:github", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "found app on :3000", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "found app on :4000", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "found app on :8080", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user@example.com", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[redacted]", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "top 3 things to fix", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "date", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "yyyy-mm-dd", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "url", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "healthscore", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "issues", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "id", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "issue-001", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "title", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "severity", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "categoryscores", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "deferred.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "deferred", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "improve", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "verified", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "it renders", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "it doesn't throw", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "re-test confirms the fix works", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "no new errors introduced", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "needs auth state", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "external service)", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "systematically qa test", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "a web application", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and fix bugs", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "found. runs qa", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "testing", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "then iteratively fixes", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "bugs in source", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "code", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "committing each fix", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "atomically and re-verifying.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "use when asked", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "fix what", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "s broken", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "proactively suggest when", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "the user says", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "a feature is", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ready for testing", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "or asks", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "does this work", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "three tiers", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "quick", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "critical", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "high only", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "standard", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "medium", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.43 - }, - { - "keyword": "exhaustive", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "cosmetic", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "produces before", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "after health scores", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "fix evidence", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and a ship-readiness", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "summary. supports report-only", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "mode", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "when user says", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "test but don", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "t fix", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "auto-switch to report-only", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "find and document", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "bugs without fixing", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "qa-only is deprecated", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and redirects here.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "性能", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - }, - { - "keyword": "认证", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - } - ], - "tier_class": "T1", - "criticality": "MEDIUM", - "callCount30d": 0 - }, - { - "name": "regex-shell-wizard", - "description": "正则与Shell脚本专家。当用户需要正则表达式编写、Shell/Bash 脚本、 Awk/Sed 文本处理、批量文件操作、日志分析、Cron 定时任务, 或说 \"正则\"、\"Shell脚本\"、\"批量替换\"、\"日志分析\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "正则表达式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "regex", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "匹配规则", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "提取文本", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "正则替换", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "shell脚本", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bash", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "zsh", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "命令行", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动化脚本", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "powershell", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "awk", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sed", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "grep", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "find", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "xargs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vim", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cron", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "批量重命名", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "日志分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "文本处理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "批量替换", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[12]\\d", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "正则", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "天书", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "正则与", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "脚本专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要正", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "则表达式编写", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "脚本", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "批量文件操作", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "定时任务", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "shell", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "log", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "retro", - "description": "Weekly engineering retrospective. Analyzes commit history, work patterns, and code quality metrics with persistent history and trend tracking. Team-aware: breaks down per-person contributions with pra", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "%an", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "%ai", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "grep -v '^$'", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sort -n", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "grep -v node_modules", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "grep -e '\\.(test", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": " if todos.md doesn't exist", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "show the skill that flagged it", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "the branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": " if moments exist", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "app/services/", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "insertions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "deletions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "time patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "weekly retro", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "what did we ship", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "2026-03-11t00:00:00", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "2026-03-11", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "n hours ago", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "you", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "your", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "%h|%an|%ae|%ai|%s", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "commit:%h|%an", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "%at|%an|%ai|%s", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "%s", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "author:%an", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test(qa):", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test(design):", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test: coverage", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "you (name)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hook_fire", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ship fast, fix fast", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "your peak hours...", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "your biggest ship...", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "great work", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai-assisted commits", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "%ad", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "%y-%m-%d", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "date", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "2026-03-08", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "window", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "7d", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "metrics", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "commits", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "contributors", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "prs_merged", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "net_loc", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test_loc", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test_ratio", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "active_days", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sessions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "deep_sessions", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "avg_session_minutes", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "loc_per_session_hour", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "feat_pct", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fix_pct", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "peak_hour", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ai_assisted_commits", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "authors", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "garry tan", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "top_area", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "browse/", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "alice", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "version_range", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "1.16.0.0", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "1.16.1.0", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "streak_days", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tweetable", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": {", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": ": 3,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 1,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 2,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test_health", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "total_test_files", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": 5,", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "backlog", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "total_open", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "p0_p1", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "p2", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "2026-03-04t00:00:00", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "great job!", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "not", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "areas of focus", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "and commit patterns", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "1 specific", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "not criticism. examples:", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "analyzes commit history", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "work patterns", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and code quality", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "metrics with persistent", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "history and trend", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "tracking. team-aware", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "breaks down per-person", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "contributions with praise", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and growth areas.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "use when asked", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "what did we", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ship", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "engineering retrospective", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "proactively suggest at", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "the end of", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "a work week", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "or sprint.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "认证", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - }, - { - "keyword": "钩子", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "review", - "description": "Pre-landing PR review. Analyzes diff against the base branch for SQL safety, LLM trust boundary violations, conditional side effects, and other structural issues. Use when asked to \"review this PR\", \"", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "tail -1", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "the base branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "review this pr", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "code review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "pre-landing review", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "check my diff", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "the base branch.", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "do not flag", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "design review", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "design-review-lite", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "timestamp", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "findings", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "auto_fixed", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "commit", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "clean", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.55 - }, - { - "keyword": "issues_found", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "fix.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "this pattern is safe", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tests cover this", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "likely handled", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "probably tested", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "this looks fine", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "codex_available", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "codex_not_available", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "run all passes", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "paranoid review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "full adversarial", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "do all 4 passes", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "thorough review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "medium tier", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "large tier", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "xhigh", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "$tmperr_adv", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "auth", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "login", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "unauthorized", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "api key", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "- **timeout:**", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "adversarial-review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "source", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "tier", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "medium", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "codex", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "claude", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "$tmperr", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "large", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "gate", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "both", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "pass", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "fail", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "informational", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "classify as ask", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "pre-landing pr review.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "analyzes diff against", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "for sql safety", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "llm trust boundary", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "violations", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "conditional side effects", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and other structural", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "issues. use when", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "asked to", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "proactively suggest when", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "the user is", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "about to merge", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "or land code", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "changes.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "认证", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - } - ], - "tier_class": "T1", - "criticality": "HIGH", - "callCount30d": 0 - }, - { - "name": "reviewer-expert", - "description": "代码审查与质量专家。当用户需要代码审查、Code Review、代码质量评估、安全审计、 代码改进建议、PR Review、技术债务分析、代码规范制定、重构建议、 圈复杂度分析、代码坏味道识别, 或说 \"审查代码\"、\"帮我 review\"、\"检查代码\"、\"代码质量\"、\"技术债务\"、\"重构\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "code review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "代码审查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "代码评审", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pr review", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mr 审查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "代码质量", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "代码健康度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "质量评分", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "代码改进", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "代码规范", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "编码规范", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "命名规范", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "注释规范", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术债务", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "代码坏味道", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "重构建议", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "遗留代码", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "代码复杂度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "圈复杂度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "认知复杂度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "权重", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "逻辑正确", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "边界处理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "并发安全", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "20%", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "可维护性", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "算法复杂度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "n+1 查询", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "缓存使用", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "11-20 中等", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "审查代码", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "检查代码", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "重构", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.55 - }, - { - "keyword": "帮我 review", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "x/10", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "代码审查与质", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "量专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要代", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "码审查", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "代码质量评估", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "安全审计", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "代码改进建议", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "技术债务分析", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "代码规范制定", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "圈复杂度分析", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "代码坏味道识", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "帮我", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "review", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - }, - { - "keyword": "cache", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - }, - { - "keyword": "refactor", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T1", - "criticality": "MEDIUM", - "callCount30d": 0 - }, - { - "name": "rust-engineer", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "lifetimes", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "borrowing", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "smart pointers", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pin", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "async/await", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tokio", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "futures", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "streams", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "concurrency", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rust", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "所有权", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "借用检查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "sales-consultant", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "销售", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "销售策略", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "销售漏斗", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "成交率", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "客单价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "复购率", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "crm", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "客户跟进", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "客户开发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "客户关系", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "客户分层", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rfm", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "谈单", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "报价谈判", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "议价", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "异议处理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "成交技巧", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "签约", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "获客渠道", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "转介绍", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "冷启动", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "陌拜", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "线索", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "商机", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "飞书crm", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "纷享销客", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "企业微信", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "销售自动化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "时间节点", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "目标", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "d0", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "确认需求匹配度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "d1-d2", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "展示专业度", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "d3-d4", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "处理异议", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "d5-d7", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "推进商务", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "d7-d14", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "促成决策", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "d14+", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "保持联系", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "回应策略", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "制造紧迫", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"已有方案了\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "赋能推动", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "工具", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "核心优势", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "免费", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "自动化工作流", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "b2b", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "太贵了", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "| 制造紧迫 |", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "| 差异对比 |", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "| 分期/roi |", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "| 赋能推动 |", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "security-expert", - "description": "应用安全专家。当用户需要进行安全编码、OWASP 防护、认证授权设计(JWT/OAuth)、 加密实现、密钥管理、漏洞响应、XSS/SQL注入防护、渗透测试, 或说 \"安全\"、\"认证\"、\"加密\" 时使用此技能。精通安全最佳实践和攻防技术。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "安全", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "认证", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.21 - }, - { - "keyword": "加密", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user_id", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "jwt_secret", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hs256", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "exp", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "iat", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user:read", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user:write", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user:delete", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "admin", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "] =", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "x-frame-options", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "deny", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "x-xss-protection", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "1; mode=block", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "安全编码", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "代码审计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "漏洞修复", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "owasp", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "xss", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "sql注入", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "csrf", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "注入攻击", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "授权", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "jwt", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "oauth", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "rbac", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "权限", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "密码", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "哈希", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "密钥", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "证书", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "渗透测试", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "安全扫描", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "sast", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "dast", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "应用安全专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "行安全编码", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "防护", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "认证授权设计", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "加密实现", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "密钥管理", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "漏洞响应", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "注入防护", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "精通安全最佳", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "实践和攻防技", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "sql", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - }, - { - "keyword": "encryption", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T1", - "criticality": "HIGH", - "callCount30d": 0 - }, - { - "name": "setup-browser-cookies", - "description": "Import cookies from your real browser (Comet, Chrome, Arc, Brave, Edge) into the headless browse session. Opens an interactive picker UI where you select which cookie domains to import. Use before QA ", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "import cookies", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "login to the site", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "[ -n", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && [ -x", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "] && b=", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "[ -z", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "$b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "ready: $b", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "needs_setup", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "allow", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "always allow", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "import cookies from", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "your real browser", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "comet", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "chrome", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "arc", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "brave", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "edge", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "into the headless", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "browse session. opens", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "an interactive picker", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ui where you", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "select which cookie", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "domains to import.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "use before qa", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "testing authenticated pages.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "use when asked", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "login to the", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "site", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "authenticate the browser", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "认证", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "setup-deploy", - "description": "Configure deployment settings for /land-and-deploy. Detects your deploy platform (Fly.io, Render, Vercel, Netlify, Heroku, GitHub Actions, custom), production URL, health check endpoints, and deploy s", - "maturity": "imported", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "release", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "render", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vercel", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "netlify", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "cli", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "/health", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fly status", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "head -5", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "setup deploy", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "configure deployment", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no_config", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:fly", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:render", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:vercel", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:netlify", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:heroku", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "platform:railway", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "$f", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "deploy_workflow:$f", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "bin", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "project_type:cli", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "project_type:library", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "^app", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\\(.*\\)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "deploy wait", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "auto-deploy on push", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "http health check", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "none", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "poll production url", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "{health-check-url}", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "%{http_code}", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "unreachable", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "command_failed", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "configure deployment settings", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "land-and-deploy. detects your", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "deploy platform", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "fly.io", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "heroku", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "github actions", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "custom", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "production url", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "health check endpoints", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "and deploy status", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "commands. writes the", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "so all future", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "deploys are automatic.", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "use when", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "set up land-and-deploy", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "how do i", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "deploy with gstack", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "add deploy config", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "部署", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.02 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "ship", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "wc -l", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "task type", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "compression", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "15 min", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "test writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~50x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 week", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "architecture / design", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "~5x", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "1 day", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "error handling", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "edge cases", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "unfamiliar patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "and once in a while", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "skill:$skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch:$branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "**version:** {gstack version}", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "review readiness dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "runs", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "required", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "yes", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "no", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "code quality", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "tests", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "new user-facing features", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "refactors", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "infra", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "codex structured", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "claude adversarial subagent", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "stale (>7 days)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "or has open issues - ceo", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "design", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "runtime", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "minitest + fixtures + capybara", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "node.js", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "jest + cypress", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "pytest + pytest-cov", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "go", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "phpunit + mockery", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "elixir", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "integration", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "smoke", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "spec/", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "sort -rn", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "*_writer_service.rb", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "*_scorer.rb", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "*_classifier_service.rb", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "*writing*.rb", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "*prompt*.rb", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "test/evals/support/*.rb", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fast (haiku)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "~$0.07/run", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "default dev", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bin/test-lane --eval", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "~72s (baseline)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "grep -v node_modules", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "!important", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"timestamp\":\"timestamp\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "\"status\":\"status\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "\"findings\":n", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "\"auto_fixed\":m", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "n = total findings", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "m = auto-fixed count", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "severity", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "problem", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "k asked (j fixed", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "filter", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "classify", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "gh fails", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "api returns an error", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "y fixed", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "b) acknowledge and ship anyway", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "grep -oe '[0-9]+'", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tail -1", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "ship", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "deploy", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "push to main", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "create a pr", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "merge and push", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "$_upd", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "$ppid", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "true", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.5 - }, - { - "keyword": "unknown", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "branch: $_branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "false", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "inline upgrade flow", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "good enough", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "complete", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "lake", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "ocean", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "save time", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "(say:", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "--arg insight", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "await fetch(...)", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "or", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.59 - }, - { - "keyword": "the base branch", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "the base branch.", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "(full)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "(lite)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "don't bother me", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "clean", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.55 - }, - { - "keyword": "skipped (global)", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "clear", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "skill", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "ship-review-override", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "no_override", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "timestamp", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.31 - }, - { - "keyword": "decision", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user_choice", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ship_anyway", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "not_relevant", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "runtime:ruby", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:node", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:python", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:go", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:rust", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:php", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "runtime:elixir", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "rails", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "framework:rails", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "next", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "framework:nextjs", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "bootstrap_declined", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "`\r\n- `", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "ci:github", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "it renders", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "it doesn't throw", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "design review", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "design-review-lite", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "findings", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "auto_fixed", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "commit", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "issues_found", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "codex_available", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "codex_not_available", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "echo", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.69 - }, - { - "keyword": "run all passes", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "paranoid review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "full adversarial", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "do all 4 passes", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "thorough review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "medium tier", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "large tier", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "xhigh", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "$tmperr_adv", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "auth", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "login", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "unauthorized", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "api key", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "- **timeout:**", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "adversarial-review", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "source", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "tier", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "medium", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "codex", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "claude", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "$tmperr", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "large", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "gate", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "both", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "pass", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "fail", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "informational", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "should work now", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "i'm confident", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": ", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "no issues found.", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ready to push?", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "create pr?", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "eng review missing", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "or has open issues", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "classify as ask", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "部署", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - }, - { - "keyword": "架构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.75 - }, - { - "keyword": "日志", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.8 - }, - { - "keyword": "重构", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.27 - }, - { - "keyword": "认证", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "social-media-manager", - "description": "社交媒体运营专家。当用户需要社交媒体策略、内容日历、新媒体运营、 微信公众号、微博、知乎、B站、小红书、抖音运营、KOL 合作、 社区运营、内容规划,或说 \"社交媒体\"、\"新媒体\"、\"内容运营\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write" - ], - "keywords": [ - { - "keyword": "社交媒体", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "新媒体运营", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "微信", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "微博", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "知乎", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "b站", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "小红书", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "抖音", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "公众号", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "内容日历", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "内容规划", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "社区运营", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "用户互动", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "帖子撰写", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "内容创作", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "品牌人设", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "话题标签", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "增加粉丝", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "提高互动率", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "kol合作", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "koc", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "内容形式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "微信公众号", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "泛人群", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "深度回答", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "年轻化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "女性为主", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "短视频", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "话题传播", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "新媒体", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "内容运营", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "潜规则", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "6:00 pm", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "回答问题", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "#技术 #[领域]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "7:00 pm", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "\"...\"", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "5:30 pm", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "图文长文", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "社交媒体运营", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要社", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "交媒体策略", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "抖音运营", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "合作", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "kol", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "sre-expert", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "histogram_quantile(0.95", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "负责人", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sre", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "slo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "事故响应", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "postmortem", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "slo_name", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "target", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": f", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "healthy", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "warning", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "critical", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "breached", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "5..", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "错误预算消耗过快", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "p95 延迟超过 300ms", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "high", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "medium", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "low", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "detected", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "acknowledged", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "investigating", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mitigating", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "resolved", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sli", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "sla", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "错误预算", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "监控", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.45 - }, - { - "keyword": "告警", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "日志", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 1.28 - }, - { - "keyword": "追踪", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "prometheus", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "grafana", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "容量规划", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "on-call", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "值班", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "可用性", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "故障复盘", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "mttr", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "发布", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "金丝雀", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "蓝绿部署", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "回滚", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "{title}", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "{date}", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "{severity}", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "{duration}", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "deploy", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - }, - { - "keyword": "monitoring", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - }, - { - "keyword": "log", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - }, - { - "keyword": "rollback", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "swift-expert", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "building views", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "state management", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "modifiers", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "protocols", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "arc", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "weak/unowned", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "performance optimization", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "swift", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "swiftui", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "ios原生", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "性能", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "tech-lead-mentor", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "团队管理", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "带人", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "okr", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "绩效", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "1on1", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "招聘", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "晋升", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "述职", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "职业规划", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术影响力", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "演讲", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "研发流程", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "code review规范", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术债", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "onboarding", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "模拟面试", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "面试题", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "简历优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "系统设计面试", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "面试", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "为什么", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "办公室政治", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "一刀切", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "tech-writer-expert", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "技术文档", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "readme", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "api文档", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "用户手册", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "api 文档", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.54 - }, - { - "keyword": "api docs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "technical documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "写文档", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "文档编写", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "撰写文档", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "write documentation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "technical writing", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "write docs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "设计文档", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "架构文档", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "开发指南", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "developer guide", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "user manual", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "design document", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "类型", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "name", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "用户名", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "string", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "### 响应 \\\\\\json { \"code\": 0", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"data\": { \"id\": 1", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"name\": \"john\" } } \\\\\\ ### 错误码", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "code", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "data", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "id", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "john", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "/api/users", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "post", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "content-type: application/json", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "architecture", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.06 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "technical-seo-expert", - "description": "技术 SEO 专家。当用户需要搜索引擎优化、百度 SEO、谷歌 SEO、 sitemap 配置、robots.txt、结构化数据 JSON-LD、meta 标签优化、 SSR/SSG 渲染策略、关键词策略、网站收录, 或说 \"SEO\"、\"搜索优化\"、\"百度收录\" 时使用此技能。", - "maturity": "stable", - "isComposable": false, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "seo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "搜索引擎优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "百度seo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "谷歌seo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "关键词策略", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "收录", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sitemap.xml", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "robots.txt", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "canonical", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "meta标签", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "百度站长平台", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "预渲染", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "动态渲染", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "网站速度优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "结构化数据", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "json-ld", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rich snippets", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "schema.org", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "搜索优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "百度收录", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "黑帽seo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "技术", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要搜", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "索引擎优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "百度", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "谷歌", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.02 - }, - { - "keyword": "标签优化", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "渲染策略", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "网站收录", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "sitemap", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "meta", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "ssr", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.53 - }, - { - "keyword": "ssg", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.66 - }, - { - "keyword": "index", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - }, - { - "keyword": "config", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.53 - } - ], - "tier_class": "T1", - "criticality": "MEDIUM", - "callCount30d": 0 - }, - { - "name": "terraform-engineer", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "creating modules", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "inputs/outputs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "versioning", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "providers", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "terraform plan", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "terratest", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "policy as code", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "terraform", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "iac", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "基础设施即代码", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "tester-expert", - "description": "测试专家。当用户需要编写单元测试、集成测试、E2E 端到端测试、TDD 测试驱动开发、 Jest/Vitest/Playwright/Cypress/pytest 测试框架、Mock/Stub、测试覆盖率, 或说 \"写测试\"、\"测试用例\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash", - "mcp__playwright", - "mcp__chrome-devtools", - "mcp__selenium" - ], - "keywords": [ - { - "keyword": "写测试", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "测试用例", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "email", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "password", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "submit", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "welcome-message", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "error-message", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "单元测试", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "集成测试", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "e2e测试", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "端到端测试", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "unit test", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "integration test", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "write tests", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "test case", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "test coverage", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "testing", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "jest", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "vitest", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "playwright", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "cypress", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "pytest", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "tdd", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "bdd", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "测试覆盖率", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "test suite", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "test runner", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "component test", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "snapshot test", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "regression test", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "测试驱动", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "mock", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "stub", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "覆盖率", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "代码覆盖", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "测试方案", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "testing library", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "test driven", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "assertion", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "测试专家", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要编", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "写单元测试", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试驱动开发", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "测试框架", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "e2e", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "组件", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.43 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T1", - "criticality": "MEDIUM", - "callCount30d": 0 - }, - { - "name": "typescript-pro", - "description": "TypeScript 深度专家。当用户需要 TypeScript 高级类型系统、泛型、条件类型、tRPC 全栈类型安全、tsconfig 优化、类型守卫、判别联合类型,或说 \"TypeScript\"、\"类型安全\"、\"泛型\" 时使用此技能。", - "maturity": "imported", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "generics", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "conditional types", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mapped types", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "template literals", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "utility types", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tsconfig options", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "strict mode", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "project references", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "泛型", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "类型安全", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "typescript", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "高级类型系统", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "条件类型", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "全栈类型安全", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "类型守卫", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "判别联合类型", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "trpc", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "tsconfig", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - }, - { - "keyword": "模板", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.02 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "ui-ux-pro-max", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "category", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "ux", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "touch & interaction", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "high", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "typography & color", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "medium", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "product", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "charts & data", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "srcset", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "20", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "30", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "need", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "chart recommendations", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "typography", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "landing structure", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "react", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "nextjs", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vue", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "svelte", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "swiftui", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "react-native", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "flutter", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "shadcn", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "example keywords", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "glassmorphism", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "minimalism", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "dark mode", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "brutalism", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "font pairings", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "google fonts", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "color", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "hero", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hero-centric", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "testimonial", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pricing", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "social-proof", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "chart types", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "library recommendations", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "waterfall", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bundle", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "suspense", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "memo", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rerender", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cache", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "web interface guidelines", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "prompt", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "### available stacks", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "professional", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "colors", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "effects", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "\"z-index\"", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "don't", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**no emoji icons**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**consistent icon sizing**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "### interaction & cursor", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**cursor pointer**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rule", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**text contrast light**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "use gray-400 or lighter", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "**content padding**", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "mix different container widths", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "project name", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "--design-system -p", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "checkout", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "glassmorphism dark", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "real-time dashboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "elegant luxury", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hero social-proof", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "elegant luxury serif", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fintech crypto", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "animation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "z-index", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "accessibility", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "saas", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "e-commerce", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "portfolio", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "landing page", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "etc.", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "minimal", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "playful", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "elegant", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "healthcare", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "fintech", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "gaming", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "education", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "next.js", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.65 - }, - { - "keyword": "or default to html-tailwind", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "测试", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.66 - }, - { - "keyword": "容器", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 2.08 - }, - { - "keyword": "缓存", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "索引", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - }, - { - "keyword": "接口", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.82 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "ultimate-code-expert", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "维度", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "采纳: 修复", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "性能", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.42 - }, - { - "keyword": "双重审查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "终极代码", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动优化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "高质量模式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "写+自审", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "快速模式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "终极代码专家", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "自动优化模式", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "高质量代码", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "生产级代码", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "核心代码", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "performance", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 0.91 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "ux-researcher", - "description": "", - "maturity": "unknown", - "isComposable": false, - "allowedTools": [], - "keywords": [ - { - "keyword": "用户研究", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "用户访谈", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "可用性测试", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "焦点小组", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "问卷调查", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "用户旅程地图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "痛点分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "a/b测试分析", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "用户画像", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "persona", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "访谈脚本", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "调研报告", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "[虚构]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "年龄", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "职业", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "城市级别", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "家庭状况", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "[微信", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "抖音等]", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "典型的数字化行为", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "\"...\"", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 2.92 - }, - { - "keyword": "test", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - } - ], - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "vue-expert", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "ref", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "reactive", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "computed", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "watch", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "lifecycle", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "state management", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "ssr", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.06 - }, - { - "keyword": "file-based routing", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "usefetch", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "fastify", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "hydration", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "mobile & hybrid", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vite config", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "sourcemaps", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "optimization", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "bundling", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vue3", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "composition api", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "pinia", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "路由", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - }, - { - "keyword": "配置", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.02 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "websocket-engineer", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "websocket handshake", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "frames", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ping/pong", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "close codes", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "patterns", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "authentication", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "authorization", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rate limiting", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "cors", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "websocket", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "实时通信", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "socket.io", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "认证", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.11 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T2", - "criticality": "LOW", - "callCount30d": 0 - }, - { - "name": "workflow-automation-expert", - "description": "", - "maturity": "unknown", - "isComposable": true, - "allowedTools": [], - "keywords": [ - { - "keyword": "zapier", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "n8n", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "make", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ifttt", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "power automate", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "tray.io", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动化工作流", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "工作流编排", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "流程自动化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "rpa", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "低代码集成", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "无代码", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "webhook 链", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "事件驱动", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "触发器", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "条件分支", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据映射", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "字段映射", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "跨平台同步", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "数据管道", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "定时触发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "消息转发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动通知", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动化", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "工作流", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动同步", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动推送", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动转发", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "列出窗口", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "读屏幕文字", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "点击按钮", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "点击菜单", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "自动滚动", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "桌面截图", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "扫描元素", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "键盘快捷键", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "鼠标拖拽", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ocr", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "uiautomation", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ocr_window", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "click_element", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "list_windows", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "scan_elements", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "auto_scroll", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "杀进程", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "注册表", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "剪贴板", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "系统通知", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "打开应用", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "文件操作", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "powershell", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "registry", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "process", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "clipboard", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "notification", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "看到屏幕上", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "找到那个按钮", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "视觉识别", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "视觉点击", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "看截图点击", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vision_click", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vision_locate", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vision_get", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vision_type", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "操控excel", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "操控word", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "发邮件outlook", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "com对象", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "写入单元格", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "createobject", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "vba", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "ole", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "activex", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "/webhook/receive", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "x-signature", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "签名验证失败", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "status", - "weight": 1, - "tier": "core", - "tfidfWeight": 1.96 - }, - { - "keyword": "ok", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.65 - }, - { - "keyword": "nodes", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "name", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "webhook 触发器", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "type", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": ": {", - "weight": 1, - "tier": "core", - "tfidfWeight": 2.86 - }, - { - "keyword": "数据转换", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "n8n-nodes-base.code", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "parameters", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "jscode", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "发送通知", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "n8n-nodes-base.slack", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "channel", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "#orders", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "text", - "weight": 1, - "tier": "core", - "tfidfWeight": 3.31 - }, - { - "keyword": "zap 设计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "multi-step zap", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "filter/path", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "formatter", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "自托管工作流", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "自定义节点", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "code node (js/python)", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "scenario 设计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "router", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "iterator", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "aggregator", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "flow 设计", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "connector", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "expression", - "weight": 0.8, - "tier": "strong", - "tfidfWeight": 3.33 - }, - { - "keyword": "钩子", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.35 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T1", - "criticality": "MEDIUM", - "callCount30d": 0 - }, - { - "name": "zero-defect-guardian", - "description": "零缺陷守门员。当用户需要安全重构、Pinning Test 钉子测试、零缺陷修改、 防退化保护、遗留代码安全修改、回归测试保护, 或说 \"零缺陷\"、\"安全修改\"、\"防退化\"、\"无损重构\" 时使用此技能。", - "maturity": "stable", - "isComposable": true, - "allowedTools": [ - "Read", - "Glob", - "Grep", - "Edit", - "Write", - "Bash" - ], - "keywords": [ - { - "keyword": "零缺陷", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "不能出错", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "防退化", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "安全模式", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "绝对安全", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "无损重构", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "遗留代码修改", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "重构保护", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "保守修改", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "防御性编程", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "回归保护", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pinning test", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "安全修改", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "pinning test (钉子测试)", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "当前行为", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "当前的样子", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "修复", - "weight": 1, - "tier": "core", - "tfidfWeight": 4.16 - }, - { - "keyword": "零缺陷守门员", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "当用户需要安", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 1.82 - }, - { - "keyword": "全重构", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "钉子测试", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "零缺陷修改", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "防退化保护", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "遗留代码安全", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "修改", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "回归测试保护", - "weight": 0.5, - "tier": "extended", - "tfidfWeight": 2.08 - }, - { - "keyword": "security", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.21 - }, - { - "keyword": "refactor", - "weight": 0.5, - "tier": "alias", - "tfidfWeight": 1.66 - } - ], - "composable": { - "isComposable": true, - "enhances": [], - "requires": [], - "conflicts": [] - }, - "tier_class": "T1", - "criticality": "HIGH", - "callCount30d": 0 - } - ], - "collisions": [ - { - "keyword": "true", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "designer-expert", - "document-release", - "frontend-expert", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 21 - }, - { - "keyword": "error handling", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "rust-engineer", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 20 - }, - { - "keyword": "documentation", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship", - "tech-writer-expert" - ], - "count": 20 - }, - { - "keyword": "wc -l", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "task type", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "compression", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "15 min", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "test writing", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "~50x", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "1 week", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "architecture / design", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "~5x", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "1 day", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "edge cases", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "unfamiliar patterns", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "and once in a while", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "skill:$skill", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "branch:$branch", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "**version:** {gstack version}", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "$_upd", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "$ppid", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "unknown", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "branch: $_branch", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "yes", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "no", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "false", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "inline upgrade flow", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "good enough", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "complete", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "lake", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "ocean", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "save time", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "(say:", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "--arg skill", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "--arg branch", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "--arg insight", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "await fetch(...)", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "or", - "skills": [ - "benchmark", - "browse", - "canary", - "codex", - "design-consultation", - "design-review", - "document-release", - "gstack", - "investigate", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "qa", - "retro", - "review", - "setup-browser-cookies", - "setup-deploy", - "ship" - ], - "count": 19 - }, - { - "keyword": "status", - "skills": [ - "browse", - "canary", - "codex", - "git-operation-master", - "guardian", - "land-and-deploy", - "mcp-probe", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "review", - "ship", - "workflow-automation-expert" - ], - "count": 13 - }, - { - "keyword": "[ -n", - "skills": [ - "benchmark", - "browse", - "canary", - "design-consultation", - "design-review", - "gstack", - "land-and-deploy", - "qa", - "setup-browser-cookies" - ], - "count": 9 - }, - { - "keyword": "] && [ -x", - "skills": [ - "benchmark", - "browse", - "canary", - "design-consultation", - "design-review", - "gstack", - "land-and-deploy", - "qa", - "setup-browser-cookies" - ], - "count": 9 - }, - { - "keyword": "] && b=", - "skills": [ - "benchmark", - "browse", - "canary", - "design-consultation", - "design-review", - "gstack", - "land-and-deploy", - "qa", - "setup-browser-cookies" - ], - "count": 9 - }, - { - "keyword": "[ -z", - "skills": [ - "benchmark", - "browse", - "canary", - "design-consultation", - "design-review", - "gstack", - "land-and-deploy", - "qa", - "setup-browser-cookies" - ], - "count": 9 - }, - { - "keyword": "$b", - "skills": [ - "benchmark", - "browse", - "canary", - "design-consultation", - "design-review", - "gstack", - "land-and-deploy", - "qa", - "setup-browser-cookies" - ], - "count": 9 - }, - { - "keyword": "ready: $b", - "skills": [ - "benchmark", - "browse", - "canary", - "design-consultation", - "design-review", - "gstack", - "land-and-deploy", - "qa", - "setup-browser-cookies" - ], - "count": 9 - }, - { - "keyword": "needs_setup", - "skills": [ - "benchmark", - "browse", - "canary", - "design-consultation", - "design-review", - "gstack", - "land-and-deploy", - "qa", - "setup-browser-cookies" - ], - "count": 9 - }, - { - "keyword": "timestamp", - "skills": [ - "benchmark", - "canary", - "codex", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "review", - "ship" - ], - "count": 9 - }, - { - "keyword": "the base branch", - "skills": [ - "canary", - "codex", - "document-release", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "qa", - "review", - "ship" - ], - "count": 9 - }, - { - "keyword": "the base branch.", - "skills": [ - "canary", - "codex", - "document-release", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "qa", - "review", - "ship" - ], - "count": 9 - }, - { - "keyword": "skill", - "skills": [ - "canary", - "codex", - "gstack", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "review", - "ship" - ], - "count": 9 - }, - { - "keyword": "clean", - "skills": [ - "codex", - "land-and-deploy", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "review", - "ship" - ], - "count": 7 - }, - { - "keyword": "findings", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "review", - "ship" - ], - "count": 6 - }, - { - "keyword": "design review", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "review", - "ship" - ], - "count": 6 - }, - { - "keyword": "commit", - "skills": [ - "git-operation-master", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "review", - "ship" - ], - "count": 6 - }, - { - "keyword": "echo", - "skills": [ - "gstack", - "guardian", - "investigate", - "land-and-deploy", - "review", - "ship" - ], - "count": 6 - }, - { - "keyword": "url", - "skills": [ - "benchmark", - "canary", - "design-review", - "land-and-deploy", - "qa" - ], - "count": 5 - }, - { - "keyword": ": {", - "skills": [ - "benchmark", - "canary", - "design-review", - "retro", - "workflow-automation-expert" - ], - "count": 5 - }, - { - "keyword": "email", - "skills": [ - "browse", - "data-engineer-expert", - "gstack", - "notification-system-expert", - "tester-expert" - ], - "count": 5 - }, - { - "keyword": "why", - "skills": [ - "codex", - "document-release", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 5 - }, - { - "keyword": "issues_found", - "skills": [ - "codex", - "plan-ceo-review", - "plan-eng-review", - "review", - "ship" - ], - "count": 5 - }, - { - "keyword": "redis", - "skills": [ - "architect-expert", - "backend-builder", - "database-tuning-expert", - "investigate" - ], - "count": 4 - }, - { - "keyword": "node.js", - "skills": [ - "backend-builder", - "design-review", - "qa", - "ship" - ], - "count": 4 - }, - { - "keyword": "go", - "skills": [ - "backend-builder", - "design-review", - "qa", - "ship" - ], - "count": 4 - }, - { - "keyword": "submit", - "skills": [ - "browse", - "design-review", - "gstack", - "tester-expert" - ], - "count": 4 - }, - { - "keyword": "\\unresolved\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\critical_gaps\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\mode\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\scope_proposed\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\scope_accepted\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\scope_deferred\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "{scope_accepted} accepted", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\issues_found\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\initial_score\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\overall_score\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\decisions_made\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\gate\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\findings\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "ceo review", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "{runs}", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "independent 2nd opinion", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "{findings}", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "\\/plan-eng-review\\", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "{status}", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "|| echo", - "skills": [ - "codex", - "investigate", - "plan-ceo-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "eng review required", - "skills": [ - "codex", - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 4 - }, - { - "keyword": "date", - "skills": [ - "design-consultation", - "design-review", - "qa", - "retro" - ], - "count": 4 - }, - { - "keyword": "runtime", - "skills": [ - "design-review", - "plan-ceo-review", - "qa", - "ship" - ], - "count": 4 - }, - { - "keyword": "sort -rn", - "skills": [ - "design-review", - "plan-ceo-review", - "qa", - "ship" - ], - "count": 4 - }, - { - "keyword": "类型", - "skills": [ - "impact-analyst", - "mcp-probe", - "product-manager-expert", - "tech-writer-expert" - ], - "count": 4 - }, - { - "keyword": "review readiness dashboard", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "runs", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "required", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "code quality", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "tests", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "new user-facing features", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "refactors", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "infra", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "codex structured", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "claude adversarial subagent", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "stale (>7 days)", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "or has open issues - ceo", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "design", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "(full)", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "(lite)", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "don't bother me", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "skipped (global)", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review", - "ship" - ], - "count": 4 - }, - { - "keyword": "medium", - "skills": [ - "review", - "ship", - "sre-expert", - "ui-ux-pro-max" - ], - "count": 4 - }, - { - "keyword": "等级", - "skills": [ - "ai-philosophy-expert", - "project-audit-expert", - "project-coordinator" - ], - "count": 3 - }, - { - "keyword": "graphql", - "skills": [ - "architect-expert", - "backend-builder", - "graphql-architect" - ], - "count": 3 - }, - { - "keyword": "performance", - "skills": [ - "benchmark", - "flutter-expert", - "qa" - ], - "count": 3 - }, - { - "keyword": "", - "skills": [ - "benchmark", - "canary", - "land-and-deploy" - ], - "count": 3 - }, - { - "keyword": "command", - "skills": [ - "browse", - "gstack", - "plan-ceo-review" - ], - "count": 3 - }, - { - "keyword": "description", - "skills": [ - "browse", - "gstack", - "plan-ceo-review" - ], - "count": 3 - }, - { - "keyword": "password", - "skills": [ - "browse", - "gstack", - "tester-expert" - ], - "count": 3 - }, - { - "keyword": "color", - "skills": [ - "browse", - "gstack", - "ui-ux-pro-max" - ], - "count": 3 - }, - { - "keyword": "text", - "skills": [ - "browser-automation-expert", - "notification-system-expert", - "workflow-automation-expert" - ], - "count": 3 - }, - { - "keyword": "tail -1", - "skills": [ - "codex", - "review", - "ship" - ], - "count": 3 - }, - { - "keyword": "xhigh", - "skills": [ - "codex", - "review", - "ship" - ], - "count": 3 - }, - { - "keyword": "$tmperr", - "skills": [ - "codex", - "review", - "ship" - ], - "count": 3 - }, - { - "keyword": "gate", - "skills": [ - "codex", - "review", - "ship" - ], - "count": 3 - }, - { - "keyword": "pass", - "skills": [ - "codex", - "review", - "ship" - ], - "count": 3 - }, - { - "keyword": "fail", - "skills": [ - "codex", - "review", - "ship" - ], - "count": 3 - }, - { - "keyword": "parameter", - "skills": [ - "design-review", - "developer-expert", - "qa" - ], - "count": 3 - }, - { - "keyword": "none", - "skills": [ - "design-review", - "land-and-deploy", - "setup-deploy" - ], - "count": 3 - }, - { - "keyword": "minitest + fixtures + capybara", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "jest + cypress", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "pytest + pytest-cov", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "phpunit + mockery", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "elixir", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "integration", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "smoke", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "spec/", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "category", - "skills": [ - "design-review", - "qa", - "ui-ux-pro-max" - ], - "count": 3 - }, - { - "keyword": ", or", - "skills": [ - "design-review", - "investigate", - "plan-eng-review" - ], - "count": 3 - }, - { - "keyword": "runtime:ruby", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "runtime:node", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "runtime:python", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "runtime:go", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "runtime:rust", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "runtime:php", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "runtime:elixir", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "rails", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "framework:rails", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "next", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "framework:nextjs", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "bootstrap_declined", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "ci:github", - "skills": [ - "design-review", - "qa", - "ship" - ], - "count": 3 - }, - { - "keyword": "mkdir -p", - "skills": [ - "design-review", - "guardian", - "investigate" - ], - "count": 3 - }, - { - "keyword": "ux", - "skills": [ - "designer-expert", - "qa", - "ui-ux-pro-max" - ], - "count": 3 - }, - { - "keyword": "dashboard", - "skills": [ - "devops-expert", - "setup-deploy", - "ui-ux-pro-max" - ], - "count": 3 - }, - { - "keyword": "title", - "skills": [ - "devops-expert", - "land-and-deploy", - "qa" - ], - "count": 3 - }, - { - "keyword": "ts", - "skills": [ - "evolution-tracker", - "gstack", - "plan-ceo-review" - ], - "count": 3 - }, - { - "keyword": "state management", - "skills": [ - "flutter-expert", - "swift-expert", - "vue-expert" - ], - "count": 3 - }, - { - "keyword": "generics", - "skills": [ - "golang-pro", - "python-pro", - "typescript-pro" - ], - "count": 3 - }, - { - "keyword": "bash", - "skills": [ - "guardian", - "planning-with-files", - "regex-shell-wizard" - ], - "count": 3 - }, - { - "keyword": "design-review-lite", - "skills": [ - "land-and-deploy", - "review", - "ship" - ], - "count": 3 - }, - { - "keyword": "id", - "skills": [ - "mcp-probe", - "qa", - "tech-writer-expert" - ], - "count": 3 - }, - { - "keyword": "name", - "skills": [ - "mcp-probe", - "tech-writer-expert", - "workflow-automation-expert" - ], - "count": 3 - }, - { - "keyword": "login", - "skills": [ - "mobile-expert", - "review", - "ship" - ], - "count": 3 - }, - { - "keyword": "not in scope", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 3 - }, - { - "keyword": "what already exists", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 3 - }, - { - "keyword": "3a", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 3 - }, - { - "keyword": "3b", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 3 - }, - { - "keyword": "unresolved", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 3 - }, - { - "keyword": "issues_open", - "skills": [ - "plan-ceo-review", - "plan-design-review", - "plan-eng-review" - ], - "count": 3 - }, - { - "keyword": "high", - "skills": [ - "plan-eng-review", - "sre-expert", - "ui-ux-pro-max" - ], - "count": 3 - }, - { - "keyword": "tier", - "skills": [ - "qa", - "review", - "ship" - ], - "count": 3 - }, - { - "keyword": "ocr", - "skills": [ - "ai-ml-expert", - "workflow-automation-expert" - ], - "count": 2 - }, - { - "keyword": "分类", - "skills": [ - "ai-ml-expert", - "industry-research-cn" - ], - "count": 2 - }, - { - "keyword": "技术栈", - "skills": [ - "ai-ml-expert", - "architect-expert" - ], - "count": 2 - }, - { - "keyword": "监控", - "skills": [ - "ai-ml-expert", - "devops-expert" - ], - "count": 2 - }, - { - "keyword": "指标", - "skills": [ - "ai-ml-expert", - "evolution-tracker" - ], - "count": 2 - }, - { - "keyword": "风险", - "skills": [ - "ai-philosophy-expert", - "project-coordinator" - ], - "count": 2 - }, - { - "keyword": "架构方案", - "skills": [ - "ai-philosophy-expert", - "architect-expert" - ], - "count": 2 - }, - { - "keyword": "angular", - "skills": [ - "angular-architect", - "frontend-expert" - ], - "count": 2 - }, - { - "keyword": "api设计", - "skills": [ - "api-designer", - "backend-builder" - ], - "count": 2 - }, - { - "keyword": "架构图", - "skills": [ - "architect-expert", - "diagram-as-code-expert" - ], - "count": 2 - }, - { - "keyword": "restful", - "skills": [ - "architect-expert", - "backend-builder" - ], - "count": 2 - }, - { - "keyword": "微服务", - "skills": [ - "architect-expert", - "backend-builder" - ], - "count": 2 - }, - { - "keyword": "事件驱动", - "skills": [ - "architect-expert", - "workflow-automation-expert" - ], - "count": 2 - }, - { - "keyword": "postgresql", - "skills": [ - "architect-expert", - "backend-builder" - ], - "count": 2 - }, - { - "keyword": "gin", - "skills": [ - "backend-builder", - "database-tuning-expert" - ], - "count": 2 - }, - { - "keyword": "/dashboard", - "skills": [ - "benchmark", - "canary" - ], - "count": 2 - }, - { - "keyword": "slug=unknown", - "skills": [ - "benchmark", - "canary" - ], - "count": 2 - }, - { - "keyword": "", - "skills": [ - "benchmark", - "canary" - ], - "count": 2 - }, - { - "keyword": "branch", - "skills": [ - "benchmark", - "canary" - ], - "count": 2 - }, - { - "keyword": "pages", - "skills": [ - "benchmark", - "canary" - ], - "count": 2 - }, - { - "keyword": "$b snapshot -a -o", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "or $b responsive", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "links", - "skills": [ - "browse", - "qa" - ], - "count": 2 - }, - { - "keyword": ".dashboard", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": ".modal", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "#submit-btn", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "#agree-checkbox", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "#name-field", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "#search-input", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": ".upload-success", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "#delete-button", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "value", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "welcome", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "text → href", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "cmd", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "arg1", - "skills": [ - "browse", - "gstack" - ], - "count": 2 - }, - { - "keyword": "自动化脚本", - "skills": [ - "browser-automation-expert", - "regex-shell-wizard" - ], - "count": 2 - }, - { - "keyword": "rpa", - "skills": [ - "browser-automation-expert", - "workflow-automation-expert" - ], - "count": 2 - }, - { - "keyword": "性能", - "skills": [ - "browser-automation-expert", - "ultimate-code-expert" - ], - "count": 2 - }, - { - "keyword": "git log", - "skills": [ - "canary", - "land-and-deploy" - ], - "count": 2 - }, - { - "keyword": "git fetch", - "skills": [ - "canary", - "land-and-deploy" - ], - "count": 2 - }, - { - "keyword": "git merge", - "skills": [ - "canary", - "land-and-deploy" - ], - "count": 2 - }, - { - "keyword": "and gh pr create command", - "skills": [ - "canary", - "land-and-deploy" - ], - "count": 2 - }, - { - "keyword": "aws", - "skills": [ - "cloud-architect", - "devops-expert" - ], - "count": 2 - }, - { - "keyword": "k8s", - "skills": [ - "cloud-native-expert", - "devops-expert" - ], - "count": 2 - }, - { - "keyword": "\"timestamp\":\"timestamp\"", - "skills": [ - "codex", - "ship" - ], - "count": 2 - }, - { - "keyword": "\"status\":\"status\"", - "skills": [ - "codex", - "ship" - ], - "count": 2 - }, - { - "keyword": "\"findings\":n", - "skills": [ - "codex", - "ship" - ], - "count": 2 - }, - { - "keyword": "failure modes", - "skills": [ - "codex", - "plan-ceo-review" - ], - "count": 2 - }, - { - "keyword": "] && echo", - "skills": [ - "codex", - "investigate" - ], - "count": 2 - }, - { - "keyword": "continue", - "skills": [ - "codex", - "design-review" - ], - "count": 2 - }, - { - "keyword": "onboarding", - "skills": [ - "customer-success-expert", - "tech-lead-mentor" - ], - "count": 2 - }, - { - "keyword": "柱状图", - "skills": [ - "data-analyst-expert", - "evolution-tracker" - ], - "count": 2 - }, - { - "keyword": "可视化", - "skills": [ - "data-analyst-expert", - "diagram-as-code-expert" - ], - "count": 2 - }, - { - "keyword": "数据管道", - "skills": [ - "data-engineer-expert", - "workflow-automation-expert" - ], - "count": 2 - }, - { - "keyword": "user_id", - "skills": [ - "data-engineer-expert", - "security-expert" - ], - "count": 2 - }, - { - "keyword": "schema设计", - "skills": [ - "database-tuning-expert", - "graphql-architect" - ], - "count": 2 - }, - { - "keyword": "ref", - "skills": [ - "database-tuning-expert", - "vue-expert" - ], - "count": 2 - }, - { - "keyword": "error", - "skills": [ - "debugger-expert", - "plan-ceo-review" - ], - "count": 2 - }, - { - "keyword": "日志", - "skills": [ - "debugger-expert", - "devops-expert" - ], - "count": 2 - }, - { - "keyword": "cors", - "skills": [ - "debugger-expert", - "websocket-engineer" - ], - "count": 2 - }, - { - "keyword": "scope", - "skills": [ - "design-review", - "qa" - ], - "count": 2 - }, - { - "keyword": "typography", - "skills": [ - "design-review", - "ui-ux-pro-max" - ], - "count": 2 - }, - { - "keyword": "ai slop", - "skills": [ - "design-review", - "frontend-design" - ], - "count": 2 - }, - { - "keyword": "`\r\n- `", - "skills": [ - "design-review", - "ship" - ], - "count": 2 - }, - { - "keyword": "lazy", - "skills": [ - "design-review", - "performance-expert" - ], - "count": 2 - }, - { - "keyword": "yyyy-mm-dd", - "skills": [ - "design-review", - "qa" - ], - "count": 2 - }, - { - "keyword": "", - "skills": [ - "design-review", - "qa" - ], - "count": 2 - }, - { - "keyword": ": [{", - "skills": [ - "design-review", - "devops-expert" - ], - "count": 2 - }, - { - "keyword": "deferred", - "skills": [ - "design-review", - "qa" - ], - "count": 2 - }, - { - "keyword": "improve", - "skills": [ - "design-review", - "qa" - ], - "count": 2 - }, - { - "keyword": "dialog", - "skills": [ - "designer-expert", - "frontend-expert" - ], - "count": 2 - }, - { - "keyword": "自动化", - "skills": [ - "devops-expert", - "workflow-automation-expert" - ], - "count": 2 - }, - { - "keyword": "dist/main.js", - "skills": [ - "devops-expert", - "devsecops-expert" - ], - "count": 2 - }, - { - "keyword": "production", - "skills": [ - "devops-expert", - "land-and-deploy" - ], - "count": 2 - }, - { - "keyword": "甘特图", - "skills": [ - "diagram-as-code-expert", - "project-coordinator" - ], - "count": 2 - }, - { - "keyword": "roi", - "skills": [ - "finance-advisor", - "growth-hacker" - ], - "count": 2 - }, - { - "keyword": "providers", - "skills": [ - "flutter-expert", - "terraform-engineer" - ], - "count": 2 - }, - { - "keyword": "flutter", - "skills": [ - "flutter-expert", - "ui-ux-pro-max" - ], - "count": 2 - }, - { - "keyword": "react", - "skills": [ - "frontend-expert", - "ui-ux-pro-max" - ], - "count": 2 - }, - { - "keyword": "vue", - "skills": [ - "frontend-expert", - "ui-ux-pro-max" - ], - "count": 2 - }, - { - "keyword": "vue3", - "skills": [ - "frontend-expert", - "vue-expert" - ], - "count": 2 - }, - { - "keyword": "next.js", - "skills": [ - "frontend-expert", - "nextjs-developer" - ], - "count": 2 - }, - { - "keyword": "svelte", - "skills": [ - "frontend-expert", - "ui-ux-pro-max" - ], - "count": 2 - }, - { - "keyword": "pinia", - "skills": [ - "frontend-expert", - "vue-expert" - ], - "count": 2 - }, - { - "keyword": "composition api", - "skills": [ - "frontend-expert", - "vue-expert" - ], - "count": 2 - }, - { - "keyword": "ssr", - "skills": [ - "frontend-expert", - "vue-expert" - ], - "count": 2 - }, - { - "keyword": "hydration", - "skills": [ - "frontend-expert", - "vue-expert" - ], - "count": 2 - }, - { - "keyword": "push", - "skills": [ - "git-operation-master", - "notification-system-expert" - ], - "count": 2 - }, - { - "keyword": "merge", - "skills": [ - "git-operation-master", - "land-and-deploy" - ], - "count": 2 - }, - { - "keyword": "hooks", - "skills": [ - "git-operation-master", - "investigate" - ], - "count": 2 - }, - { - "keyword": "websocket", - "skills": [ - "graphql-architect", - "websocket-engineer" - ], - "count": 2 - }, - { - "keyword": "抖音", - "skills": [ - "growth-hacker", - "social-media-manager" - ], - "count": 2 - }, - { - "keyword": "小红书", - "skills": [ - "growth-hacker", - "social-media-manager" - ], - "count": 2 - }, - { - "keyword": "checkout", - "skills": [ - "gstack", - "ui-ux-pro-max" - ], - "count": 2 - }, - { - "keyword": "arc", - "skills": [ - "gstack", - "swift-expert" - ], - "count": 2 - }, - { - "keyword": "home", - "skills": [ - "gstack", - "mobile-expert" - ], - "count": 2 - }, - { - "keyword": "模式", - "skills": [ - "guardian", - "project-audit-expert" - ], - "count": 2 - }, - { - "keyword": "- matcher:", - "skills": [ - "guardian", - "investigate" - ], - "count": 2 - }, - { - "keyword": "权重", - "skills": [ - "investor-review-guide", - "reviewer-expert" - ], - "count": 2 - }, - { - "keyword": "维度", - "skills": [ - "investor-review-guide", - "ultimate-code-expert" - ], - "count": 2 - }, - { - "keyword": "deploy", - "skills": [ - "land-and-deploy", - "ship" - ], - "count": 2 - }, - { - "keyword": "plan-ceo-review", - "skills": [ - "land-and-deploy", - "plan-ceo-review" - ], - "count": 2 - }, - { - "keyword": "plan-design-review", - "skills": [ - "land-and-deploy", - "plan-design-review" - ], - "count": 2 - }, - { - "keyword": "release", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "no_config", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "platform:fly", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "platform:render", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "platform:vercel", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "platform:netlify", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "platform:heroku", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "platform:railway", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "$f", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "deploy_workflow:$f", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "%{http_code}", - "skills": [ - "land-and-deploy", - "setup-deploy" - ], - "count": 2 - }, - { - "keyword": "ok", - "skills": [ - "mcp-probe", - "workflow-automation-expert" - ], - "count": 2 - }, - { - "keyword": "file-based routing", - "skills": [ - "nextjs-developer", - "vue-expert" - ], - "count": 2 - }, - { - "keyword": "tr '/' '-'", - "skills": [ - "plan-ceo-review", - "plan-eng-review" - ], - "count": 2 - }, - { - "keyword": "complexity", - "skills": [ - "plan-ceo-review", - "plan-design-review" - ], - "count": 2 - }, - { - "keyword": "system audit", - "skills": [ - "plan-ceo-review", - "plan-design-review" - ], - "count": 2 - }, - { - "keyword": "step 0", - "skills": [ - "plan-ceo-review", - "plan-design-review" - ], - "count": 2 - }, - { - "keyword": "todos.md updates", - "skills": [ - "plan-ceo-review", - "plan-design-review" - ], - "count": 2 - }, - { - "keyword": "unresolved decisions", - "skills": [ - "plan-ceo-review", - "plan-eng-review" - ], - "count": 2 - }, - { - "keyword": "engineered enough", - "skills": [ - "plan-ceo-review", - "plan-eng-review" - ], - "count": 2 - }, - { - "keyword": "$design", - "skills": [ - "plan-ceo-review", - "plan-eng-review" - ], - "count": 2 - }, - { - "keyword": "no design doc found,", - "skills": [ - "plan-ceo-review", - "plan-eng-review" - ], - "count": 2 - }, - { - "keyword": "prompt/llm changes", - "skills": [ - "plan-ceo-review", - "plan-eng-review" - ], - "count": 2 - }, - { - "keyword": "do nothing", - "skills": [ - "plan-ceo-review", - "plan-eng-review" - ], - "count": 2 - }, - { - "keyword": "critical_gaps", - "skills": [ - "plan-ceo-review", - "plan-eng-review" - ], - "count": 2 - }, - { - "keyword": "mode", - "skills": [ - "plan-ceo-review", - "plan-eng-review" - ], - "count": 2 - }, - { - "keyword": "免费", - "skills": [ - "pricing-strategist", - "sales-consultant" - ], - "count": 2 - }, - { - "keyword": "typescript", - "skills": [ - "project-audit-expert", - "typescript-pro" - ], - "count": 2 - }, - { - "keyword": "python", - "skills": [ - "project-audit-expert", - "python-pro" - ], - "count": 2 - }, - { - "keyword": "为什么", - "skills": [ - "prompt-optimizer", - "tech-lead-mentor" - ], - "count": 2 - }, - { - "keyword": "accessibility", - "skills": [ - "qa", - "ui-ux-pro-max" - ], - "count": 2 - }, - { - "keyword": "severity", - "skills": [ - "qa", - "ship" - ], - "count": 2 - }, - { - "keyword": "it renders", - "skills": [ - "qa", - "ship" - ], - "count": 2 - }, - { - "keyword": "it doesn't throw", - "skills": [ - "qa", - "ship" - ], - "count": 2 - }, - { - "keyword": "powershell", - "skills": [ - "regex-shell-wizard", - "workflow-automation-expert" - ], - "count": 2 - }, - { - "keyword": "grep -v node_modules", - "skills": [ - "retro", - "ship" - ], - "count": 2 - }, - { - "keyword": "code review", - "skills": [ - "review", - "reviewer-expert" - ], - "count": 2 - }, - { - "keyword": "auto_fixed", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "codex_available", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "codex_not_available", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "run all passes", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "paranoid review", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "full adversarial", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "do all 4 passes", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "thorough review", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "medium tier", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "large tier", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "$tmperr_adv", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "auth", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "unauthorized", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "api key", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "- **timeout:**", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "adversarial-review", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "source", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "codex", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "claude", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "large", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "both", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "informational", - "skills": [ - "review", - "ship" - ], - "count": 2 - }, - { - "keyword": "自动化工作流", - "skills": [ - "sales-consultant", - "workflow-automation-expert" - ], - "count": 2 - }, - { - "keyword": "swiftui", - "skills": [ - "swift-expert", - "ui-ux-pro-max" - ], - "count": 2 - } - ] +{ + "generated": "2026-04-27T10:56:15.686Z", + "version": "v6.6.0", + "skillCount": 73, + "skills": [ + { + "name": "ai-ml-expert", + "description": "AI/机器学习专家。当用户需要 PyTorch、TensorFlow、深度学习、神经网络、 NLP 自然语言处理、CV 计算机视觉、LLM 大语言模型、RAG 检索增强、 Prompt Engineering、模型微调 Fine-tuning、Agent 开发、Hugging Face、 LangChain,或说 \"机器学习\"、\"AI\"、\"模型训练\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "ai", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "机器学习", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "深度学习", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "神经网络", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "模型训练", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pytorch", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tensorflow", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "keras", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "transformers", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scikit-learn", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "文本分类", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ner", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "文本生成", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "语义搜索", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "embedding", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "图像分类", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "目标检测", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "分割", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ocr", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "yolo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "llm", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "gpt", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bert", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "llama", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "qwen", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "chatgpt", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "大模型", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rag", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "agent", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "langchain", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "prompt engineering", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "微调", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lora", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "xgboost", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lightgbm", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "分类", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "回归", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "聚类", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "特征工程", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术栈", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "集成学习", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cnn", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rnn/lstm", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "transformer", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "gan", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fine-tuning", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "训练", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "评估", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "监控", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "推荐模型", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "catboost", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "roberta", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "中文用 bert-wwm", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "gpt系列", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bert+crf", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "globalpointer", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "resnet", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "efficientnet", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "vit", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "yolov8", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rt-detr", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "u-net", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "deeplabv3+", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "embedding + vectordb + llm", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "指标", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "auc", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "f1", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "precision", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "recall", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "accuracy", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "macro-f1", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "confusion matrix", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mse", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mae", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "r²", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mape", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "entity-level f1", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bleu", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rouge", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "perplexity", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "map", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "iou", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bert-base-chinese", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "你好世界", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pt", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "你的问题", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "机器学习专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "自然语言处理", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "计算机视觉", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "大语言模型", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "检索增强", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "模型微调", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "nlp", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "hugging face", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "monitoring", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + } + ], + "tier_class": "T1", + "criticality": "MEDIUM", + "callCount30d": 0 + }, + { + "name": "api-designer", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "resource design", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "http methods", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "hateoas", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pagination", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "error responses", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rfc 7807", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "status codes", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "api设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "openapi", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "接口规范", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "interface", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "api-integration-specialist", + "description": "API 集成与第三方对接专家。当用户需要支付集成(Stripe/微信支付/支付宝)、 OAuth2/OIDC 身份认证、Webhook 处理、第三方 API 对接、 AI API 集成(OpenAI/Claude)、幂等性设计, 或说 \"支付对接\"、\"OAuth\"、\"Webhook\"、\"API集成\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "stripe", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "paypal", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "微信支付", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "支付宝", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "支付对接", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "支付回调", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "oauth2", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "oidc", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sso", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "jwt", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "api签名", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "hmac", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "openai", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "claude api", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "aws s3", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "阿里云oss", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "短信接口", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "地图api", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "webhook", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "幂等性", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "重试机制", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "限流", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "回调", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "熔断", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "oauth", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "api集成", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "网络超时重试", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "webhook 重复推送", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "验证时间戳,拒绝过期请求", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "集成与第三方", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "对接专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要支", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "付集成", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "身份认证", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "第三方", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "对接", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "集成", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "幂等性设计", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "api", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "ai api", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "claude", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "interface", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + }, + { + "keyword": "钩子", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 2 + }, + { + "name": "architect-expert", + "description": "系统架构师与CTO规划专家。当用户需要系统架构设计、技术选型、API 设计、数据库设计、 分布式系统、微服务架构、高可用高并发、DDD 领域驱动、技术方案、ER 图、架构图、 CTO 规划、黄金路径、平台工程、技术战略、团队拓扑、技术路线图、ADR 架构决策, 或说 \"架构\"、\"系统设计\"、\"技术选型\"、\"CTO规划\"、\"技术战略\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "架构设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "系统设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "架构方案", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "技术架构", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "架构图", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "system design", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "architecture", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.12 + }, + { + "keyword": "software architecture", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术选型", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "框架选择", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术栈", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "技术对比", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术方案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tech stack", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "technology selection", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "api 设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "接口设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据流", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "restful", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "graphql", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "api design", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据库设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "表结构", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "er 图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据模型", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "schema", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "database design", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "分布式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "微服务", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "高可用", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "高并发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "扩展性", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "负载均衡", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "distributed system", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "high availability", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scalability", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "microservices", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ddd", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cqrs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "事件驱动", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "领域驱动", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "clean architecture", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "domain driven design", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cto规划", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术战略", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "黄金路径", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "平台工程", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "团队拓扑", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "adr", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "technical strategy", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "platform engineering", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "推荐方案", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "go (gin) / rust (axum)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "java (spring boot)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "postgresql", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "redis", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "kafka / rabbitmq", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "next.js (app router)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "架构", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "最终", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自然成立", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "选择的方案及理由", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "系统架构师与", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "规划专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要系", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "统架构设计", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "分布式系统", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "微服务架构", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "高可用高并发", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "规划", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "技术路线图", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "架构决策", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "cto", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "api", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "load balancing", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 2.08 + }, + { + "keyword": "interface", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T1", + "criticality": "MEDIUM", + "callCount30d": 0 + }, + { + "name": "backend-builder", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "后端", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "后端开发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "服务端", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "api开发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "node.js", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "express", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fastapi", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "nestjs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "django", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "go", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "gin", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "微服务", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "grpc", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "protobuf", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "microservice", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "postgresql", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "mysql", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mongodb", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "redis", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "restful", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "graphql", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "api设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "api", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "数据库", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "database", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + }, + { + "keyword": "backend", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T1", + "criticality": "MEDIUM", + "callCount30d": 0 + }, + { + "name": "benchmark", + "description": "Performance regression detection using the browse daemon. Establishes baselines for page load times, Core Web Vitals, and resource sizes. Compares before/after on every PR. Tracks performance trends o", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "20kb there", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "baseline", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "compare", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "/dashboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "performance", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.82 + }, + { + "keyword": "benchmark", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "page speed", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lighthouse", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "web vitals", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bundle size", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "load time", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "[ -n", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && [ -x", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && b=", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "[ -z", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "$b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "ready: $b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "needs_setup", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "slug=unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "$b eval", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "url", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "timestamp", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pages", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": ": {", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": ": 120,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 450,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 800,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 600,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 1200,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 1400,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 42,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 1250000,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 450000,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 85000,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": [\n {", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 320000,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 180},\n {", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 130000,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "domcomplete - navigationstart", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "loadeventend - navigationstart", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "using the browse", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "daemon. establishes baselines", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "for page load", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "times", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "core web vitals", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "and resource sizes.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "compares before", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "after on every", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "pr. tracks performance", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "trends over time.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "use when", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "性能", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "browse", + "description": "Fast headless browser for QA testing and site dogfooding. Navigate any URL, interact with elements, verify page state, diff before/after actions, take annotated screenshots, check responsive layouts, ", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "onclick", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$b snapshot -a -o", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "or $b responsive", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "complex auth", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "multi-factor login)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "localstorage", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "links", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "@e2", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "@c2", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "...). after snapshot", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "### reading", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "### interaction", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "--load>", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "command", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "attrs ", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tabs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "handoff [message]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "restart", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "resume", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "stop", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "open in browser", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "take a screenshot", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "dogfood this", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test the\n site", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "[ -n", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && [ -x", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && b=", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "[ -z", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "$b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "ready: $b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "needs_setup", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": ".main-content", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user@test.com", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "password", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": ".dashboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": ".modal", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#submit-btn", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#agree-checkbox", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#name-field", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#search-input", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#file-input", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ".upload-success", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#delete-button", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "done", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "value", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "color", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "welcome", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "email", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "submit", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "text → href", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "cmd", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "arg1", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "fast headless browser", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "for qa testing", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and site dogfooding.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "navigate any url", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "interact with elements", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "verify page state", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "diff before", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "after actions", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "take annotated screenshots", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "check responsive layouts", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "test forms and", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "uploads", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "handle dialogs", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and assert element", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "states.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ms per command.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "use when you", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "need to test", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "a feature", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "verify a deployment", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "dogfood a user", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "flow", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "or file a", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "bug with evidence.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "use when asked", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "test the site", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "部署", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.27 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "认证", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "browser-automation-expert", + "description": "浏览器自动化专家。当用户需要浏览器自动化、网页抓取、Web Scraping、 RPA 流程、爬虫开发、Playwright/Selenium 脚本编写, 或说 \"自动化浏览器\"、\"网页抓取\"、\"爬取页面\" 时使用此技能。 仅纯自动化/抓取/RPA/数据采集场景使用本技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash", + "mcp__playwright", + "mcp__chrome-devtools", + "mcp__selenium", + "mcp__browserbase", + "mcp__firecrawl", + "mcp__mobile", + "mcp__scrapling" + ], + "keywords": [ + { + "keyword": "playwright(自动化)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "selenium(自动化)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "browserbase", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "stagehand", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cdp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scrapling", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "浏览器自动化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "网页自动化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动化脚本", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "rpa", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "自动填表", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "网页抓取", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "web scraping", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "爬虫", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据采集", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "页面提取", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "反检测抓取", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "网页截图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "页面监控", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "页面快照", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "视觉回归", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "headless", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "无头模式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "chrome devtools protocol", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cloudflare绕过", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "waf绕过", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "反检测", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "stealth抓取", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "指纹伪装", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "打开网页", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "e2e测试", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "填表单", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "上传文件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "browser_navigate", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "browser_click", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "browser_snapshot", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "browser_fill_form", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "调试页面", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "执行js", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "抓网络请求", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "性能分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "内存快照", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "控制台日志", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "evaluate_script", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "devtools", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "云浏览器", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "远程浏览器", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "智能提取页面", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai操作网页", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "stagehand_act", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "stagehand_extract", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "爬取网站", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "抓取页面", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "提取数据", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "站点地图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "批量采集", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "firecrawl_scrape", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "firecrawl_crawl", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "firecrawl_search", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "python爬虫", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "抓取解析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动化浏览器", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "爬取页面", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "测试", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.33 + }, + { + "keyword": "性能", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.42 + }, + { + "keyword": "bug/报错", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "点击登录按钮", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "输入用户名", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "markdown", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "html", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "text", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "当用户需要浏", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "览器自动化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "流程", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "爬虫开发", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "脚本编写", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "仅纯自动化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "抓取", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "数据采集场景", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "使用本技能", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "playwright", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "selenium", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "test", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.91 + }, + { + "keyword": "monitoring", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + }, + { + "keyword": "log", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + }, + { + "keyword": "debug", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + } + ], + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "business-plan-skill", + "description": "商业计划书撰写专家。当用户需要撰写 BP 商业计划书、创业计划、融资材料、融资 PPT、 公司介绍、项目介绍、商业模式设计、商业画布、单位经济模型, 或说 \"写BP\"、\"商业计划书\"、\"融资材料\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write" + ], + "keywords": [ + { + "keyword": "商业计划书", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "写bp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "融资材料", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bp", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "创业计划", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "融资ppt", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "投资人材料", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "商业模式", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "商业画布", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "盈利模式", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "公司介绍", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "项目介绍", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "团队介绍", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "关键论点要有数据佐证", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "商业计划书撰", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "写专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要撰", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "融资", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "商业模式设计", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "单位经济模型", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ppt", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "canary", + "description": "Post-deploy canary monitoring. Watches the live app for console errors, performance regressions, and page failures using the browse daemon. Takes periodic screenshots, compares against pre-deploy base", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "git log", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "git fetch", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "git merge", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "and gh pr create command", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "take screenshots", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "check console errors", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "/dashboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "monitor deploy", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "canary", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "post-deploy check", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "watch production", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "verify deploy", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "[ -n", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && [ -x", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && b=", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "[ -z", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "$b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "ready: $b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "needs_setup", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "the base branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "the base branch.", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "shipped", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "verified.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "slug=unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "url", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "timestamp", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pages", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": ": {", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": ": 0,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "duration_min", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "alerts", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "post-deploy canary monitoring.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "watches the live", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "app for console", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "errors", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "performance regressions", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and page failures", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "using the browse", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "daemon. takes periodic", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "screenshots", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "compares against pre-deploy", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "baselines", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and alerts on", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "anomalies. use when", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "部署", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.27 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "性能", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + }, + { + "keyword": "监控", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "cloud-architect", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "ec2", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "s3", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lambda", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rds", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "well-architected framework", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "gcp services", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "abstraction layers", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "portability", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "vendor lock-in mitigation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "云架构", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "aws", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "gcp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "azure", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "architecture", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.06 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "cloud-native-expert", + "description": "云原生架构师专家。当用户需要 Kubernetes/K8s 集群部署、服务网格 Istio/Linkerd、 GitOps ArgoCD/Flux、Helm 配置、12-Factor App、HPA 自动扩缩容、NetworkPolicy, 或说 \"云原生\"、\"K8s\"、\"服务网格\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "k8s", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "服务网格", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "云原生", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "kubernetes", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "pod", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "deployment", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "statefulset", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "istio", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "linkerd", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "流量管理", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "mtls", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "gitops", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "argocd", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "flux", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "声明式", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "12-factor", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "不可变基础设施", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "微服务", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.65 + }, + { + "keyword": "helm", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "kustomize", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "configmap", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "secret", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "云原生架构师", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "集群部署", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.02 + }, + { + "keyword": "自动扩缩容", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "gitops argocd", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "factor app", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "hpa", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "networkpolicy", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "architecture", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.06 + }, + { + "keyword": "microservice", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "cluster", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 2.08 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "codex", + "description": "OpenAI Codex CLI wrapper — three modes. Code review: independent diff review via codex review with pass/fail gate. Challenge: adversarial mode that tries to break your code. Consult: ask codex anythin", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "tail -1", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "tail -1 - if a diff exists", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "offer to review it - otherwise", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"timestamp\":\"timestamp\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "\"status\":\"status\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "\"gate\":\"gate\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"findings\":n", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "status (\"clean\" if pass", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"issues_found\" if fail)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "gate (\"pass\" or \"fail\")", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\\unresolved\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\critical_gaps\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\mode\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\scope_proposed\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\scope_accepted\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\scope_deferred\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "{scope_accepted} accepted", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\issues_found\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\initial_score\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\overall_score\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\decisions_made\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\gate\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\findings\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "why", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "findings", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "ceo review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "{runs}", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "independent 2nd opinion", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "{findings}", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "\\/plan-eng-review\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "{status}", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "design review", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "\\\\\\ below the table", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "race conditions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "security holes", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "/codex challenge security)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "resource leaks", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "failure modes", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "auth bypasses", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "privilege escalation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "data exposure", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "python3 -c \" import sys", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "'') text = item.get('text'", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "0) + usage.get('output_tokens'", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "codex review", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "codex challenge", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ask codex", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "second opinion", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "consult codex", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "the base branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "the base branch.", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": ")\n[ -z", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "] && echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "|| echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "$(basename $(pwd))", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "xhigh", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "$tmperr", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "focus on security", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tokens used", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tokens: unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "codex-review", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "timestamp", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "gate", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "findings_fixed", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "clean", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.55 + }, + { + "keyword": "issues_found", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "pass", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "fail", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "eng review required", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "with focus (e.g.,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "):", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "no_session", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "continue", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "\\status\\", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "\\commit\\", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "\\findings_fixed\\", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "openai codex cli", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "wrapper", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "three modes. code", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "review", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "independent diff review", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "via codex review", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "with pass", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "fail gate. challenge", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "adversarial mode that", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "tries to break", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "your code. consult", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ask codex anything", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "with session continuity", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "for follow-ups. the", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "iq autistic developer", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "second opinion. use", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "when asked to", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "安全", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "认证", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + } + ], + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 2 + }, + { + "name": "copywriter-expert", + "description": "文案与营销内容专家。当用户需要撰写网站文案、广告文案、落地页文案、邮件文案、 产品描述、品牌 Slogan、CTA 行动号召、价值主张提炼, 或说 \"写文案\"、\"广告文案\"、\"落地页\"、\"营销文案\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write" + ], + "keywords": [ + { + "keyword": "文案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "广告文案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "落地页文案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "邮件文案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "网站文案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "产品描述", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "标题", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cta", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "行动号召", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "价值主张", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "slogan", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "品牌口号", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "aida", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pas", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fab", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "文案公式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "营销文案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "推广文案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "转化文案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "品牌文案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "写文案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "落地页", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "赋能", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "生态化反", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "吸引用户注意力", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "激发对产品的兴趣", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "促使用户采取行动", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "渲染问题的严重性", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "给出产品作为解决方案", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "产品是什么", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "为什么比别的更好", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "能为用户带来什么", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[提升注册转化率]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[独立开发者]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[一句话概括]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "1. ... 2. ... 3. ...", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "文案与营销内", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "容专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要撰", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "写网站文案", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "品牌", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "价值主张提炼", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "customer-success-expert", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "客户支持", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "售后", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "客服", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "工单", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "帮助中心", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "faq", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "客户成功", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "onboarding", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "客户引导", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "激活率", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "健康度评分", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "续费", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "流失", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "挽回", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "流失预警", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "nrr", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "churn rate", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "满意度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "nps", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "csat", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "客户反馈", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "评价管理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sla", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "响应时间", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "解决时间", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "服务等级", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "服务承诺", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "描述", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "示例", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "服务完全不可用", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "系统宕机", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "核心功能受损", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "支付失败", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "非核心功能异常", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "报表延迟", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "建议与咨询", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "功能建议", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "<50=高风险 ### 流失预警规则", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "检测方式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "使用分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "工单骤增", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "优先处理+回访", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "账务系统", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "有问题随时找我", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "解锁更多价值", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "综合登录频率", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "功能使用深度", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "支持工单量", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "data-analyst-expert", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "推荐图表", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "柱状图", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "条形图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "折线图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "面积图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "直方图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "箱线图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "饼图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "堆叠柱状图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "散点图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "热力图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "漏斗图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "桑基图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "当前值", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "可视化", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "用 pandas", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "形状: {df.shape}", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ")\r\n print(f", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pandas", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "a/b测试", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "a-b测试", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "ab测试", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "eda", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "统计分析", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "留存分析", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "numpy", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "matplotlib", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "seaborn", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "plotly", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "sql分析", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据清洗", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据报告", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "商业洞察", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "漏斗分析", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "假设检验", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "清洗", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "转换", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "描述性统计", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "回归分析", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "分类", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.65 + }, + { + "keyword": "回归", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "聚类等基础ml应用", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "test", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "data-engineer-expert", + "description": "数据工程师专家。当用户需要进行数据管道设计、ETL 开发、数据仓库建模、流处理、 Spark/Kafka/Airflow/dbt 使用、维度建模、数据质量, 或说 \"数据工程\"、\"ETL\"、\"数据管道\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "etl", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据管道", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "数据工程", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "useranalytics", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "created_at", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "2024-01-01", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "country", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "revenue", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "total_revenue", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "is_active", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "active_users", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "overwrite", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "users.csv", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user_id", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "email", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "age", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据流", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "数据处理", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据仓库", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据湖", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据集市", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "olap", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "spark", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "kafka", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "airflow", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "dbt", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "flink", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "维度建模", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "星型模型", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "雪花模型", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据质量", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据治理", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据血缘", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "大规模数据处理", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据转换和建模", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "工作流编排", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "消息队列", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "实时流处理", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "轻量流处理", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "云数据仓库", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据湖格式", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "表格式", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据工程师专", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "行数据管道设", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "数据仓库建模", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "流处理", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "使用", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "queue", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 2.08 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "database-tuning-expert", + "description": "数据库调优与设计专家。当用户需要 SQL 优化、索引优化、Explain 分析、 慢查询排查、死锁分析、分库分表、读写分离、Redis 缓存一致性、 数据库架构设计,或说 \"慢查询\"、\"索引\"、\"数据库优化\"、\"死锁\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "慢查询", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sql优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "explain", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "索引优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "全表扫描", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "死锁", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "锁等待", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cpu飙升", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "主从延迟", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "连接池耗尽", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "分库分表", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "读写分离", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "缓存一致性", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "redis", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "tidb", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "schema设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "反范式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "json字段", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "时序数据", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "含义", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "极快", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "主键/唯一索引关联", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ref", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "一般", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "全索引扫描", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "all", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "buffers", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "关注点", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "seq scan", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "理想的访问方式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "位图堆扫描", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "nested loop", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "大表连接优选", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "实际耗时(ms)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rows", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "命中率应 >95%", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "适用场景", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "纯等值查询", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "gin", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "postgis 空间索引", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "物理有序大表", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "策略", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "最终一致", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "延迟双删", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "写入较频繁", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "db变更→mq→更新缓存", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "索引", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "数据库优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "最左前缀", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user:{user_id}", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据库调优与", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "设计专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "慢查询排查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "死锁分析", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "数据库架构设", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "sql", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "database", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + }, + { + "keyword": "architecture", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.06 + }, + { + "keyword": "cache", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + }, + { + "keyword": "index", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "debugger-expert", + "description": "Debug 侦探专家。当用户遇到 Bug、报错、异常、崩溃、问题排查、调试、 错误日志、stack trace、404/500 错误、内存泄漏、性能问题、代码不工作, 或说 \"为什么报错\"、\"这个错误\"、\"帮我调试\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash", + "mcp__chrome-devtools", + "mcp__playwright" + ], + "keywords": [ + { + "keyword": "bug", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "报错", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "error", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "exception", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "crash", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "崩溃", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "debug", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "调试", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "排查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "问题", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "故障", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "定位", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "stack trace", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "traceback", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "日志", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "log", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "错误信息", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "404", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "500", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "502", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "503", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cors", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "跨域", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "内存泄漏", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "超时", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "卡死", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "爆窗", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "爆窗现象", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "系统修复", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "上下文溢出", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "context overflow", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "不工作", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "失败", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "undefined", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "null", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "nan", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "常见原因", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "对象未正确初始化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "空值访问", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "无限递归", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "跨域配置问题", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "对象没有该属性", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "字典键不存在", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "缩进不一致", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据库未启动", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "事务锁冲突", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "用途", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "为什么报错", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "这个错误", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "帮我调试", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "侦探专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户遇到", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "异常", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "问题排查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "错误日志", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "错误", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "性能问题", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "代码不工作", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "database", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.91 + }, + { + "keyword": "transaction", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "config", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T1", + "criticality": "HIGH", + "callCount30d": 2 + }, + { + "name": "developer-expert", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "英文", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "变量", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "function", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "对象的模板", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "方法", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "parameter", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "异常", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "callback", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "异步操作的结果", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "异步/等待", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "帮我写", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "怎么实现", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "解释一下", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "编程", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "代码", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "怎么写", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "写一个", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "代码问题", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "报错", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "不工作", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "为什么", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.65 + }, + { + "keyword": "怎么做", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "最佳实践", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "推荐方案", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "template", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ], + "tier_class": "T1", + "criticality": "HIGH", + "callCount30d": 0 + }, + { + "name": "devops-expert", + "description": "DevOps 专家。当用户需要 CI/CD 配置、GitHub Actions、GitLab CI、Docker 容器化、 Kubernetes/K8s 部署、Nginx 配置、云服务 AWS/阿里云、Prometheus/Grafana 监控、 自动化运维,或说 \"部署\"、\"发布\"、\"Docker\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "devops", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ci/cd", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "流水线", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "镜像构建", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "docker", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "kubernetes", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "k8s", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "部署", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.55 + }, + { + "keyword": "发布", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "上线", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "容器化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "编排", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "github actions", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "gitlab ci", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "jenkins", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动化", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "监控", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "告警", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "prometheus", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "grafana", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "日志", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "aws", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "阿里云", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "云服务", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "serverless", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "node", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "dist/main.js", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "3000:3000", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cmd-shell", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "production", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "letsencrypt-prod", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "dashboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "title", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": ": [\n {", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": [{", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "error rate", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "targets", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "expr", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "response time p95", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.02 + }, + { + "keyword": "自动化运维", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "nginx", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "deploy", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + }, + { + "keyword": "monitoring", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + }, + { + "keyword": "container", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "log", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + }, + { + "keyword": "config", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T1", + "criticality": "MEDIUM", + "callCount30d": 3 + }, + { + "name": "devsecops-expert", + "description": "DevSecOps 专家。当用户需要安全左移、SAST/DAST 安全扫描、容器安全、镜像扫描 Trivy、 供应链安全 SBOM、安全流水线、OPA/Gatekeeper 策略、合规审计, 或说 \"DevSecOps\"、\"安全扫描\"、\"容器安全\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "high: y", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "devsecops", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "安全扫描", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "容器安全", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "dist/main.js", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "]\n kinds: [", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "安全左移", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "安全自动化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "sast", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "dast", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "sca", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "镜像扫描", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "运行时安全", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "供应链安全", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "sbom", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "依赖扫描", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "合规", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "审计", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "安全策略", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "当用户需要安", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "全左移", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "安全流水线", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "策略", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "合规审计", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "trivy", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "opa", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "gatekeeper", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + }, + { + "keyword": "container", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "diagram-as-code-expert", + "description": "图表代码化专家。当用户需要 Mermaid、PlantUML、Graphviz 图表, 流程图、时序图、类图、状态图、ER图、甘特图、架构图生成, 或说 \"画图\"、\"生成图表\"、\"可视化\"、\"转成图\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "mermaid", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "plantuml", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "graphviz", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "draw.io", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "流程图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "时序图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "类图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "状态图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "er图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "甘特图", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "架构图", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "c4", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "画图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "生成图表", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "可视化", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "转成图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[] 矩形", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "() 圆角", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "{} 菱形", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "关键路径添加文字说明", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "图表代码化专", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "图表", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "架构图生成", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "architecture", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.06 + } + ], + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "document-release", + "description": "Post-ship documentation update. Reads all project docs, cross-references the diff, updates README/ARCHITECTURE/CONTRIBUTING/CLAUDE.md to match what shipped, polishes CHANGELOG voice, cleans up TODOS, ", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "update the docs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sync documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "post-ship docs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "the base branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "the base branch.", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "./.git/*", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "./node_modules/*", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "./.gstack/*", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "./.context/*", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "why", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "you can now...", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "refactored the...", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "### for contributors", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "feature a", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "feature b", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "reads all project", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "docs", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "cross-references the diff", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "updates readme", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "architecture", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.06 + }, + { + "keyword": "contributing", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "claude.md to match", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "what shipped", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "polishes changelog voice", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "cleans up todos", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and optionally bumps", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "version. use when", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "asked to", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "proactively suggest after", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "a pr is", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "merged or code", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "is shipped.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "重构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.27 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "email-communicator", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "写邮件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "商务邮件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "冷邮件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "开发信", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "跟进邮件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "催款函", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "合作邀请", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自我介绍", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "项目汇报", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "道歉信", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "感谢信", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "离职交接", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "会议纪要", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "项目周报", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "进度汇报", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "备忘录", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mou", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "异议回复", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "拒绝委婉", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "提需求", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "催进度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "反馈意见", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "英文邮件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "中英双语", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "正式措辞", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "商务英语", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "english", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "邮件结尾", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "感谢您的耐心等待", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "道歉场景", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "please find attached", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "收到,谢谢", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "催促确认", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "催款", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "finance-advisor", + "description": "一人公司财务顾问。当用户需要记账方案、现金流管理、税务筹划、个体户/小微企业报税、 成本核算、财务报表分析、利润率计算、报价单制作、应收应付管理, 或说 \"记账\"、\"报税\"、\"现金流\"、\"财务分析\"、\"报价\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "WebSearch" + ], + "keywords": [ + { + "keyword": "记账", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "账目", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "对账", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "流水", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "财务软件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "金蝶", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "用友", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "报税", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "税务筹划", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "增值税", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "个税", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "企业所得税", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "小规模纳税人", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "一般纳税人", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "税负率", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "现金流", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "资金周转", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "应收账款", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "应付账款", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "账期", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "回款", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "财务分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "利润率", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "毛利率", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "净利率", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "roi", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "成本核算", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "盈亏平衡", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "报价单", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "成本估算", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "利润空间", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "报价模板", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "单位", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "小计(¥)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "人天", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "xx", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**¥xx**", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "季度≤30万免增值税", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "1%", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "企业所得税25%", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "个人独资企业", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "部分园区有优惠", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "预计收入", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "累计余额", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "¥xx", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "适合规模", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "推荐场景", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "<10笔/月", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "极简启动", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "个人", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "个人收支", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "个体户", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "需开票", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "小微", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "有会计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "报价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "合规要求", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "优化建议", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "一人公司财务", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "顾问", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要记", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "账方案", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "现金流管理", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "小微企业报税", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "财务报表分析", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "利润率计算", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "报价单制作", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "应收应付管理", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "template", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "frontend-expert", + "description": "前端开发专家。当用户需要 React、Vue、Next.js、Nuxt、Svelte 组件开发, 前端页面实现,状态管理(Zustand/Pinia/Redux),Server Components, Tailwind CSS 样式,TypeScript 前端,SSR/SSG,性能优化, 或说 \"前端\"、\"组件\"、\"页面开发\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash", + "mcp__playwright", + "mcp__chrome-devtools" + ], + "keywords": [ + { + "keyword": "react", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "vue", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "vue3", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "next.js", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "nuxt", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "svelte", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "solidjs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "angular", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "前端开发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "组件设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "页面开发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ui实现", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "前端页面", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "zustand", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "pinia", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "redux", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "jotai", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "状态管理", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "composition api", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "tailwind", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "css-in-js", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "样式方案", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "响应式设计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "前端优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "代码分割", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "懒加载", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ssr", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "ssg", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "hydration", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "typescript 前端", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tsx", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "props", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "泛型组件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "'ghost'; size: 'sm'", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "前端", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "组件", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "dialog", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "modal-title", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "关闭", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "server components", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "actions", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "compiler", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "app router", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "server actions", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "turbopack", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "script setup", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "nuxt content", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "runes", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "react 轻量状态", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "vue 官方推荐", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "服务端状态", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "原子化状态", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "首选", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "组件级隔离", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "开发构建", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "next.js 内置", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "极速编译", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "前端开发专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "组件开发", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "前端页面实现", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "样式", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "性能优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.21 + }, + { + "keyword": "tailwind css", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "typescript", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "frontend", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.91 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T1", + "criticality": "MEDIUM", + "callCount30d": 0 + }, + { + "name": "genesis-engine", + "description": "创世纪引擎 - 全生命周期项目协调器。当用户需要从零开始搭建项目、 端到端自动化开发、全生命周期管理、多专家协调, 或说 \"从0开发\"、\"新项目\"、\"创世纪引擎\"、\"全流程开发\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "文件名", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "产品需求文档", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "phase 0", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "测试报告", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "phase 1", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "性能报告", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "phase 3", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "条件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "prd 已获用户批准", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "架构文档已存在", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术选型无冲突", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "构建通过", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "审计评分 >= 7/10", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "核心测试通过", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "无 p0 级安全漏洞", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "无 p0 级 bug", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "代码评审通过", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "部署验证通过", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "测试覆盖率未下降", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "创世纪引擎", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "新项目", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "全流程开发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "从0开发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "通过/approved", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "approved", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "how", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "产品负责人 — 提出愿景", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "审批文档", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "设定优先级", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "管理所有\"how\"", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "协调专家", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "保证质量门通过", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "全生命周期项", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "目协调器", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要从", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "零开始搭建项", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "端到端自动化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "全生命周期管", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "多专家协调", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "test", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + }, + { + "keyword": "deploy", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + }, + { + "keyword": "architecture", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.06 + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.91 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "git-operation-master", + "description": "Git 操作大师。当用户需要解决 Git 冲突、rebase、cherry-pick、 分支管理、版本回滚、Git 工作流设计、Git LFS、submodule, 或说 \"Git冲突\"、\"回滚\"、\"撤销commit\"、\"分支管理\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "commit", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "push", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "pull", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "clone", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "diff", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "git", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rebase", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "merge", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "cherry-pick", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "stash", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tag", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "conflict", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "reset", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "revert", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "reflog", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "撤销", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "回滚", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "冲突", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "submodule", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "worktree", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lfs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "gitflow", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "hooks", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "分支管理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "命令", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "丢弃未暂存更改", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "git reset head ", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "修改上次提交", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "保留代码在暂存区", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "git revert ", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "git冲突", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "撤销commit", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "临时保存工作现场", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "操作大师", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要解", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "版本回滚", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "工作流设计", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "git lfs", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "rollback", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "钩子", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + } + ], + "tier_class": "T1", + "criticality": "MEDIUM", + "callCount30d": 0 + }, + { + "name": "growth-hacker", + "description": "增长黑客与用户增长专家。当用户需要用户增长策略、AARRR 漏斗优化、 私域流量运营、A/B 测试、增长实验、转化率优化 CRO、裂变营销、 内容营销、渠道策略,或说 \"增长\"、\"拉新\"、\"私域\"、\"转化率\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write" + ], + "keywords": [ + { + "keyword": "用户增长", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "aarrr", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "增长漏斗", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "私域流量", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "增长黑客", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "a/b测试", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "增长实验", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cro", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "转化率优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "内容营销", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "微信生态", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "抖音", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "小红书", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "裂变", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "dau", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mau", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "留存率", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "转化率", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ltv", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cac", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "roi", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "增长", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "拉新", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "私域", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "如何让用户反复回来?", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "如何让用户主动推荐?", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "如何实现商业变现?", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[activation / retention]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[新方案]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[留存率等]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "增长黑客与用", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "户增长专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要用", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "户增长策略", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "漏斗优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "私域流量运营", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 0.66 + }, + { + "keyword": "裂变营销", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "渠道策略", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "test", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "gstack", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "login sessions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$b snapshot -a -o", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "or $b responsive", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "signup", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "checkout", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "800", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"https://app.example.com\"]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[\"snapshot\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"-i\"]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[\"fill\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"@e3\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"test@test.com\"]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"@e4\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"password\"]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[\"click\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"@e5\"]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"-d\"]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[\"screenshot\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"/tmp/result.png\"] ]'", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "description", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "history back", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "history forward", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "navigate to url", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "reload page", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "print current url", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "full aria tree", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "form fields as json", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "all links as \"text → href\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cleaned page text", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "click element", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "import cookies from json file", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "import cookies from comet", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "chrome", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "arc", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "brave", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "or edge (opens picker", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "auto-dismiss next dialog", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fill input", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "hover element", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "press key — enter", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tab", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "escape", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "arrowup/down/left/right", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "backspace", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "delete", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "home", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "end", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pageup", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pagedown", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "or modifiers like shift+enter", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scroll element into view", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "label", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "or visible text", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "type into focused element", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "upload file(s)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "set user agent", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "set viewport size", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "--networkidle", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "### inspection", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "element attributes as json", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "--errors]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cookies", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "css ", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "dialog [--clear]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "eval ", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "is ", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "js ", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "network [--clear]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "perf", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "storage [set k v]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "command", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "diff ", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pdf [path]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "responsive [prefix]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "h] [selector", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "### snapshot", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "### meta", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "### tabs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "### server", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "be proactive again", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "turn on suggestions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$$-$(date +%s)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "gstack", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ts", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "repo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "'$(basename", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_pf", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_session_id", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill_name", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_tel_dur", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "outcome", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "used_browse", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[ -n", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && [ -x", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && b=", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "[ -z", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "$b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "ready: $b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "needs_setup", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "test@example.com", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "password123", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ".dashboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "document.title", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ".hero-section", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ".success-toast", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "#next-step-btn", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "#agree-checkbox", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#hero-banner", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ".upload-success", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": ".error-message", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "valid input", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "#delete-button", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "my answer", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "#rename-button", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "goto", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "],\r\n [", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "-i", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fill", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "@e3", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test@test.com", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "@e4", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "password", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "click", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "@e5", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "snapshot", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "-d", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "screenshot", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "/tmp/result.png", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ".modal", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#submit-btn", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#agree", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "#name-field", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#search-input", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "#logo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ".button", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "background-color", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "value", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "color", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "welcome", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "email", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "submit", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "text → href", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "cmd", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "arg1", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + } + ], + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "guardian", + "description": "统一安全守护技能。整合 freeze (目录编辑限制)、careful (破坏性命令警告)、 unfreeze (解除限制) 和 guard (全量安全模式) 四项能力为单一入口。 支持子命令: /guardian freeze [dir], /guardian unfreeze, /guardian careful, /guardian status。 触发词: \"guardian\", \"安全守", + "maturity": "stable", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "子命令", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"freeze\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"冻结\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"限制编辑\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"restrict\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "unfreeze", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "启用破坏性命令警告", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"status\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"状态\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "无参数", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "模式", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "rm -rf /var/data", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "drop table/database", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据丢失", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "git push -f origin main", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "git reset --hard", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "生产影响", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "docker system prune -a", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "解除限制", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "安全守护", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "freeze", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "careful", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "guardian", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "guard mode", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "restrict edits", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "safety mode", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lock down", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bash", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "- matcher:", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "冻结", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "限制编辑", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "restrict", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "解冻", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "unlock", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "小心模式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "safety", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "谨慎", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "状态", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$freeze_dir", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "${freeze_dir%/}/", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mkdir -p", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "```\n\n告知用户:", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "if [ -f", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ")\n rm -f", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "else\n echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "]; then\n echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fi\necho", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "统一安全守护", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "技能", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "整合", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "目录编辑限制", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "破坏性命令警", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "全量安全模式", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "四项能力为单", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "一入口", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "支持子命令", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "触发词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.35 + }, + { + "keyword": "guard", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "guardian freeze", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "dir", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "guardian unfreeze", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "guardian careful", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "guardian status", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + }, + { + "keyword": "数据库", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + } + ], + "tier_class": "T1", + "criticality": "HIGH", + "callCount30d": 0 + }, + { + "name": "handoff", + "description": "上下文交接技能。在上下文压力达到 CRITICAL 或用户主动调用时, 自动捕获当前会话进度、关键决策和待办事项,写入 .bookworm-progress.md, 生成下一会话的继续提示词,并清理过期 handoff 文件。 触发词: handoff, 交接, 保存进度, 上下文交接, context handoff, save progress", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Bash", + "Write", + "Edit" + ], + "keywords": [ + { + "keyword": "(非 git 仓库)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "业务锁定", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "已完成", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "待办", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "继续提示词", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "外部依赖", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "待确认项", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "需要用户输入的项", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "上下文交接技", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "在上下文压力", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "达到", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "或用户主动调", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "用时", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "自动捕获当前", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "会话进度", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "关键决策和待", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "办事项", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "写入", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "生成下一会话", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "的继续提示词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "并清理过期", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "文件", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "触发词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.35 + }, + { + "keyword": "交接", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "保存进度", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "上下文交接", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "critical", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "handoff", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "context handoff", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "save progress", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + } + ], + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "impact-analyst", + "description": "影响范围分析师。当用户需要代码变更影响评估、依赖分析、调用链追踪、 爆炸半径分析、API 契约检查、副作用检查, 或说 \"影响范围\"、\"改这个有啥影响\"、\"依赖分析\"、\"谁在用这个\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "改这个有啥影响", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "被哪里引用了", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "谁在用这个函数", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "评估风险", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "影响范围", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "依赖分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "调用链", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "爆炸半径", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "检查副作用", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "依赖检查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "死代码检测", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "类型", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "谁在用这个", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "应该没事", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "影响范围分析", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要代", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "码变更影响评", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "调用链追踪", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "爆炸半径分析", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "契约检查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "副作用检查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "改这个有啥影", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "api", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "industry-research-cn", + "description": "中国行业深度研究与市场分析技能。当用户需要进行行业调研、市场规模测算、 竞争格局分析、投资可行性研究、竞品分析、PESTLE 分析时使用此技能。 触发词:行业研究、市场调研、竞争格局、TAM/SAM/SOM、竞品分析、 industry research、market analysis。优先引用权威资料。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "WebFetch", + "WebSearch" + ], + "keywords": [ + { + "keyword": "竞争分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "模块", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "法律法规", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "产业政策", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "标准体系", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**需交叉验证**", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "分类", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "特征", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "演进", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "l10-l12", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cr5/hhi", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "波特五力", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "8. 市场机会识别", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "综合", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "来源类型", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "最高", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "政府报告", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术白皮书", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**l7-l9**", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "国际机构", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "学术论文", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "媒体报道", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "` `", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "业内人士透露", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "事实", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "观点", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "标准", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "官方统计", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "兼顾投资", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "创业", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "战略咨询多场景需求", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "中国行业深度", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "研究与市场分", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "析技能", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "行行业调研", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "市场规模测算", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "竞争格局分析", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "投资可行性研", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "竞品分析", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "分析时使用此", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "技能", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "触发词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.35 + }, + { + "keyword": "行业研究", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "市场调研", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "竞争格局", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "优先引用权威", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "资料", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "pestle", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "tam", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "sam", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "som", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "industry research", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "market analysis", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "investigate", + "description": "Systematic debugging with root cause investigation. Four phases: investigate, analyze, hypothesize, implement. Iron Law: no fixes without root cause. Use when asked to \"debug this\", \"fix this bug\", \"w", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "pattern", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "intermittent", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "timing-dependent", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "nil/null propagation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "transactions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "callbacks", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "hooks", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "timeout", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "unexpected response", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "configuration drift", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "redis", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "cdn", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "browser cache", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "turbo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "debug this", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fix this bug", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "why is this broken", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ", or", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "edit", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "- matcher:", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "] && echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "|| echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "mkdir -p", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "quick fix for now", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "for now.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "this should fix it.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "systematic debugging with", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "root cause investigation.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "four phases", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "investigate", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "analyze", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "hypothesize", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "implement. iron law", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "no fixes without", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "root cause. use", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "when asked to", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "why is this", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "broken", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "investigate this error", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "root cause analysis", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "proactively suggest when", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "the user reports", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "errors", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "unexpected behavior", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "or is troubleshooting", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "why something stopped", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "working.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "缓存", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "调试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "事务", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 2.08 + }, + { + "keyword": "钩子", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.02 + } + ], + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "investor-review-guide", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "权重", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "tam/sam/som", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "增长趋势", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "竞争格局", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "25%", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "团队", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "盈利模式", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "单位经济", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "可扩展性", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "5%", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "维度", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "加权分", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "30%", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "产品力", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "15%", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "财务", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "投资", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "尽调", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "评估项目", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "投资评估", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "投资建议", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "风险投资", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "vc", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "商业计划", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "bp", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "bp评审", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "项目评估", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "尽职调查", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "dd", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "估值", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "估值分析", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "融资", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "融资轮次", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "kubernetes-specialist", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "deployments", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "statefulsets", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "daemonsets", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "jobs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cronjobs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "configuration", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pv", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pvc", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "storageclasses", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "csi drivers", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "troubleshooting", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "crd", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "operator sdk", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "controller-runtime", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "reconciliation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "gitops", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "vpa", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "hpa tuning", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "spot instances", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "quotas", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "right-sizing", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "k8s部署", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "helm", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "k8s排错", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.02 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "land-and-deploy", + "description": "Land and deploy workflow. Merges the PR, waits for CI and deploy, verifies production health via canary checks. Takes over after /ship creates the PR. Use when: \"merge\", \"land\", \"deploy\", \"merge and v", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "git log", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "git fetch", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "git merge", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "and gh pr create command", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "deploy", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "wait intelligently", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "verify thoroughly", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "wait for deploy", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "state", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "title", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "url", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "mergestatestatus", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mergeable", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "baserefname", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "build a readiness report", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "plan-ceo-review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "plan-design-review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "design-review-lite", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "\"refactor\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"rewrite\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"overhaul\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "head -5 if found", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "grep -i \"production.*url\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "grep -i \"platform\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "release", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "diff scope", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scope_docs only", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scope_config only", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scope_backend only", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scope_frontend (any)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mixed scopes", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "merge", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "land", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "merge and verify", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "land it", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "production", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "[ -n", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && [ -x", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && b=", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "[ -z", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "$b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "ready: $b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "needs_setup", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "the base branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "the base branch.", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "fix", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "refactor", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "rewrite", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "overhaul", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "docs:", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "- if e2e not run:", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "no_config", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "$deploy_config", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "production.*url", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "platform", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "platform:fly", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "platform:render", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "platform:vercel", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "platform:netlify", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "platform:heroku", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "platform:railway", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "$f", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "deploy_workflow:$f", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "staging", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cd", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "%{http_code}", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "custom deploy hooks", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "direct merge", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "no workflow detected", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "skipped", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "clean", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.55 + }, + { + "keyword": "none", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "land-and-deploy", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "timestamp", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pr", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "merge_sha", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "deploy_status", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ci_wait_s", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "queue_s", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "deploy_s", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "canary_s", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "total_s", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "land and deploy", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "workflow. merges the", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "waits for ci", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and deploy", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "verifies production health", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "via canary checks.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "takes over after", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ship creates the", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "pr. use when", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ship it to", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "部署", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.27 + }, + { + "keyword": "前端", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "后端", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "重构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.27 + }, + { + "keyword": "队列", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 2.08 + }, + { + "keyword": "钩子", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.02 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "legal-review-skill", + "description": "中国法务审查专家。合同审查、企业合规、知识产权、劳动用工、数据合规、 法律文书起草、法律风险预警。触发词:合同审查、法务审查、合规审查、 legal review、数据合规、知识产权。基于中国现行法律法规。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "WebFetch", + "WebSearch" + ], + "keywords": [ + { + "keyword": "定义", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "必须修改后方可签署", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**低风险**", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "供决策参考", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "条款位置", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "风险等级", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "不构成正式法律意见", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[合同/文件名称]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[日期]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[合同类型]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "中国法务审查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "合同审查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "企业合规", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "知识产权", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "劳动用工", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "数据合规", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "法律文书起草", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "法律风险预警", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "触发词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.35 + }, + { + "keyword": "法务审查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "合规审查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "基于中国现行", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "法律法规", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "legal review", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "mcp-probe", + "description": "MCP 服务器连通性体检。对 .claude.json 中注册的全部 MCP (stdio + http) 发 initialize 握手包或 HEAD 请求,输出每个服务器的启动耗时、健康状态和根因诊断。 触发词: \"体检MCP\", \"测MCP\", \"MCP健康检查\", \"MCP连通性\", \"mcp-probe\", \"probe mcp\", \"MCP全量测试\", \"MCP诊断\", \"所有MCP是", + "maturity": "stable", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "类型", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "**http** (type:http", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "url)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "超过判为 timeout", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**ok**: n", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "启动耗时", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "1.7s", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "可能原因", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "缺环境变量", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "stderrtail 关键字", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "err_module_not_found", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "node 18.20+ 拒绝直接 spawn .cmd", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "代理或网络问题", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "').substring(0", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "process.env", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cfg.env", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cfg.args", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "stdio", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mcp-probe", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "probe mcp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "体检mcp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "测mcp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mcp健康检查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mcp连通性", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mcp全量测试", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mcp诊断", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "id", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "result", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "name", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "github", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "kind", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "ok", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "detail", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 1735,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "需要我直接修复吗?", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "jsonrpc", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "修复仅限 env 段补全", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "npx 缓存清理", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "服务器连通性", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "体检", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "中注册的全部", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "握手包或", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "请求", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "输出每个服务", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "器的启动耗时", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "健康状态和根", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "因诊断", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "触发词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.35 + }, + { + "keyword": "健康检查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "连通性", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "全量测试", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "诊断", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "所有", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "是否正常", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "mcp", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "claude.json", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "http", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "initialize", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "head", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "test", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + }, + { + "keyword": "cache", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ], + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "mcp-prune", + "description": "MCP 剪枝分析工具 (Phase 1 · T1.4)。基于 mcp-usage-tracker 的使用率数据, 识别最近 N 天零调用且非 critical 的 MCP 候选,生成剪枝 plan 文件。 绝不自动修改 ~/.claude.json,用户需人工 apply。 触发词: \"mcp-prune\", \"剪枝 MCP\", \"MCP 剪枝\", \"清理 MCP\", \"精简 MCP\", \"dis", + "maturity": "stable", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "能力", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "--confirm", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "生成 plan 文件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mcp-prune", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "disable unused mcp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "prune mcp servers", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "剪枝 mcp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mcp 剪枝", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "清理 mcp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "精简 mcp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "剪枝分析工具", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "基于", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "的使用率数据", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "识别最近", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "天零调用且非", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "候选", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "生成剪枝", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "文件", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "绝不自动修改", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "用户需人工", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "触发词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.35 + }, + { + "keyword": "剪枝", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "清理", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "精简", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "mcp", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "phase", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "t1.4", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "mcp-usage-tracker", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "critical", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "plan", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "claude.json", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "apply", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + } + ], + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "miniprogram-expert", + "description": "小程序开发专家。当用户需要微信小程序、支付宝小程序、抖音小程序开发, Taro、uni-app 跨端框架,云开发、云函数、分包优化、setData 优化、 登录授权、支付功能、审核上架,或说 \"小程序\"、\"Taro\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "taro", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "小程序", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lazycodeloading", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "requiredcomponents", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "微信小程序", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "支付宝小程序", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "抖音小程序", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "百度小程序", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "uni-app", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "remax", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "云开发", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "小程序登录", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "小程序支付", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "分享", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "分包", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "性能优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 1.94 + }, + { + "keyword": "启动优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "微信", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "支付宝", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "抖音", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.65 + }, + { + "keyword": "taro 3.x", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "云函数", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "云数据库", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "云存储", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "启动", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "渲染", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "包体积优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "登录授权", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "支付", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "小程序开发专", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要微", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "信小程序", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "抖音小程序开", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "跨端框架", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "分包优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "支付功能", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "审核上架", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "setdata", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "database", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.91 + }, + { + "keyword": "组件", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + } + ], + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 1 + }, + { + "name": "mobile-expert", + "description": "移动端开发专家。当用户需要 React Native、Flutter、Expo 跨平台开发, iOS Swift/SwiftUI、Android Kotlin/Jetpack Compose 原生开发, App 性能优化、应用上架 App Store/Google Play, Android 设备控制、ADB 操作、设备截图、UI 自动化测试、 应用安装/卸载/启动、模拟器操作、手势模拟、屏幕元素", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash", + "mcp__mobile" + ], + "keywords": [ + { + "keyword": "onpress", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "variant = 'primary'", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "loading = false", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "disabled = false", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "padding: 12", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "outline: { borderwidth: 2", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bordercolor: '#007aff' }", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "}; return { ...base", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "跨平台", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "app开发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "移动端", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "adb", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "设备截图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "#fff", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "home", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "profile", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "login", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "main", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "react native", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "flutter", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.65 + }, + { + "keyword": "expo", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "ionic", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "ios", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "android", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "swift", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "kotlin", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "原生开发", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "手机应用", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "app", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "应用上架", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "app store", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "google play", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "签名", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "移动性能", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "启动优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "内存优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "adb devices", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "模拟器", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "真机调试", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "mobile mcp", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "设备列表", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "应用安装", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "ui自动化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "手势模拟", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "屏幕元素", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "dart 3.5+", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "swift 5.9+", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "swiftui", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.65 + }, + { + "keyword": "uikit", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "kotlin 1.9+", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "jetpack compose", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "zustand", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "jotai", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "redux toolkit", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "riverpod", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "bloc", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "provider", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "移动端开发专", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "跨平台开发", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "性能优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.21 + }, + { + "keyword": "设备控制", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "操作", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "自动化测试", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "卸载", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "启动", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "模拟器操作", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "屏幕元素检测", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ios swift", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "android kotlin", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "test", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.91 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "debug", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + } + ], + "tier_class": "T1", + "criticality": "MEDIUM", + "callCount30d": 0 + }, + { + "name": "nextjs-developer", + "description": "Next.js 全栈专家。当用户需要 Next.js 14+ App Router、RSC 服务端组件、Server Actions、ISR/SSG/SSR 渲染策略、Middleware、Next.js 性能优化,或说 \"Next.js\"、\"App Router\"、\"Server Components\" 时使用此技能。", + "maturity": "imported", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "file-based routing", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "layouts", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "templates", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "route groups", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "server actions", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "fetch", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "caching", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "isr", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "on-demand revalidation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "next.js", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "app router", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "server components", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "全栈专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "服务端组件", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "渲染策略", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "性能优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.21 + }, + { + "keyword": "rsc", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ssg", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "ssr", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "middleware", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.91 + }, + { + "keyword": "中间件", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 2.08 + }, + { + "keyword": "模板", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + }, + { + "keyword": "路由", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "notification-system-expert", + "description": "通知系统专家。当用户需要推送通知(FCM/APNs/Web Push)、 邮件发送(SendGrid/AWS SES/Mailgun)、SMS 短信(Twilio/阿里云短信)、 企业微信/钉钉/飞书/Slack 机器人消息、In-app 站内通知、 通知模板设计、消息分级策略、通知频率控制, 或说 \"推送通知\"、\"发邮件\"、\"发短信\"、\"消息通知\"、\"Slack 机器人\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "推送通知", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fcm", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "apns", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "web push", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "service worker", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "消息推送", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "邮件发送", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sendgrid", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "aws ses", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mailgun", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "smtp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "邮件模板", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "事务邮件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "短信发送", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sms", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "twilio", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "阿里云短信", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "验证码", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "短信模板", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "slack bot", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "企业微信机器人", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "钉钉机器人", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "飞书机器人", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "discord bot", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "站内信", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "in-app 通知", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "通知中心", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "未读数", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "通知铃铛", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "通知策略", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "消息分级", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "频率控制", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "静默期", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "通知偏好", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "推送", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "通知", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "发消息", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "提醒", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "告警通知", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "发邮件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "发短信", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "消息通知", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "slack", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "slack 机器人", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "push", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "email", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "wechat_work", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "channelsender", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "message", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "text", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "blocks", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "发什么", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "怎么发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "android + web push", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "ios + macos", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "service worker + vapid", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "统一推送平台", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "rest api + smtp", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "模板引擎", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "送达率分析", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "高吞吐", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "开发者友好", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "邮件解析", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "现代化 api", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "国内短信", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "签名/模板审核", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "微信生态", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "通知系统专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要推", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "送通知", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "短信", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "企业微信", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "钉钉", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "飞书", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "机器人消息", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "站内通知", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "通知模板设计", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "消息分级策略", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "通知频率控制", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "机器人", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "in-app", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "transaction", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "template", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "performance-expert", + "description": "性能优化专家。当用户需要进行前端性能优化、后端性能调优、数据库优化、性能监控、 Core Web Vitals(LCP/FID/CLS)优化、首屏加载优化、内存优化、索引优化, 或说 \"性能优化\"、\"加载慢\"、\"响应慢\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash", + "mcp__chrome-devtools", + "mcp__playwright" + ], + "keywords": [ + { + "keyword": "加载慢", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "响应慢", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "性能优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.42 + }, + { + "keyword": "/hero.jpg", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "blur", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "image.avif", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "image/avif", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "image.webp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "image/webp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "image.jpg", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "lazy", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "warm up", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sustained load", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "application/json", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "api health check", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "/api/health", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "首屏优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "lcp", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "fcp", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "core web vitals", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "api慢", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "延迟高", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "吞吐量", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "内存优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "cpu优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "带宽优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "查询慢", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "数据库优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "索引优化", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "性能调优", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "性能问题", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "性能优化专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "行前端性能优", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "后端性能调优", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "性能监控", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "首屏加载优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "fid", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "cls", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "database", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + }, + { + "keyword": "frontend", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + }, + { + "keyword": "backend", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.91 + }, + { + "keyword": "monitoring", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + }, + { + "keyword": "index", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T1", + "criticality": "MEDIUM", + "callCount30d": 0 + }, + { + "name": "planning-with-files", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "bash", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "location", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "your project directory", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "file", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "phases", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "progress", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "decisions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "throughout session", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "attempt", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "created default config", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "situation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "don't read", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "viewed image/pdf", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "screenshots don't persist", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "read plan/findings", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "error occurred", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "recover state", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "answer source", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "remaining phases", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "goal statement in plan", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "do instead", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "create task_plan.md file", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "re-read plan before decisions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "log errors to plan file", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "store large content in files", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "create plan file first", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "track attempts", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mutate approach", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "create files in your project", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "write|edit", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sd=\\", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "2>/dev/null || sh \\", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "2.16.1", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$(pwd)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.02 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "pricing-strategist", + "description": "定价策略专家。当用户需要 SaaS 定价模型、产品定价策略、价格梯度设计、 竞品定价分析、价值定价法、免费增值模式设计、提价策略, 或说 \"定价\"、\"怎么收费\"、\"定价模型\"、\"价格策略\"、\"提价\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "WebSearch" + ], + "keywords": [ + { + "keyword": "定价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "定价模型", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "定价策略", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "怎么收费", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "收费模式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "订阅制", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "按量计费", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "免费增值", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "freemium", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "阶梯定价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "席位定价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "价值定价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "成本加成", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "竞品定价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "心理定价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "捆绑定价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "提价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "价格敏感度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "支付意愿", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "价格弹性", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "wtp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "竞品价格对标", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "人天报价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "项目报价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "按效果付费", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "保底+分成", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "free", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "enterprise", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "✅ (有限)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "免费版", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "参考点", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "50人免费", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "协作功能差异化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "免费", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "存储+高级功能", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "个人免费", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai+协作人数", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "3项目免费", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "项目数+标注功能", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "价格策略", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "诱饵效应", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "最受欢迎", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "省¥1200", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "8折", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "开始使用", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "免费试用x天", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "已有1000+团队选择", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "获客引流,降低试用门槛", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "大客户定制,按需报价", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "定价策略专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "产品定价策略", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "价格梯度设计", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "竞品定价分析", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "价值定价法", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "免费增值模式", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "提价策略", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "saas", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "product-manager-expert", + "description": "产品经理专家。当用户需要 PRD 产品需求文档、需求分析、竞品分析、用户研究、 产品规划、路线图、用户故事、MVP 定义、RICE/KANO 优先级排序、迭代计划、 产品规格文档、功能规格说明 FSD、技术规格书 TSD、接口规格 API Spec、验收标准, 或说 \"产品\"、\"PRD\"、\"需求\"、\"规格\"、\"规格文档\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write" + ], + "keywords": [ + { + "keyword": "prd", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "产品需求", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "需求文档", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "用户故事", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "竞品分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "需求分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "市场分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "产品规划", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "路线图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "版本规划", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "迭代计划", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rice", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "kano", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "moscow", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "优先级", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "产品规格", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "功能规格", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术规格", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "api规格", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "验收标准", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "类型", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "产品", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "需求", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "规格", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "规格文档", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "产品经理专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "产品需求文档", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "用户研究", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "定义", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "优先级排序", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "产品规格文档", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "功能规格说明", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "技术规格书", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "接口规格", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "mvp", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "fsd", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "tsd", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "api spec", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "interface", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "project-audit-expert", + "description": "项目全栈审计专家。当用户需要项目代码审查、漏洞修补、功能测试、功能优化、逻辑验证、 全面审计、上线前检查、质量把关、技术债务清理, 或说 \"审计项目\"、\"全面检查\"、\"上线前审查\"、\"帮我审一下\" 时使用此技能。 整合代码审查、安全漏洞扫描、功能测试、性能优化、逻辑验证五大能力于一体。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash", + "Task", + "WebFetch" + ], + "keywords": [ + { + "keyword": "项目审计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "全面审查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "上线前检查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "上线检查清单", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "全栈审计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "质量把关", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "帮我审一下", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "系统自检", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自检", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自审计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bookworm自检", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bookworm审计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "漏洞修复", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "安全修补", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "安全审计", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "漏洞扫描", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "功能测试", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "集成测试", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "回归测试", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "逻辑验证", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "业务逻辑检查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据流验证", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "高频问题", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "p1", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "json.parse 无运行时验证", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "typescript", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "db 字段修改未持久化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "python", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "工具函数多处重复定义", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "关键检查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "p0", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "jwt 签名验证逻辑", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sql 注入(字符串拼接)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "搜索 password=", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "secret=", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**技术栈**: [xxx] ## 总体评估", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "等级", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "xx/100", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "a/b/c/d", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "功能完整性", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**综合评分**", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "**x**", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "文件", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "级别", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "多次", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "except exception 吞掉所有错误", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "重复工具函数(dry 违反)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "alembic 迁移 enum 重复创建", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "模式", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "\"帮我审一下这个文件\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "标准审计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "全项目,phase 1-5", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "大型项目", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "全面审计", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "审计项目", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "全面检查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "上线前审查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "帮我审一下这个文件", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "审计一下后端 api", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "文件:行号", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[影响范围]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[代码示例]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[确认步骤]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "项目全栈审计", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要项", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "目代码审查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "漏洞修补", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "功能优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "技术债务清理", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "整合代码审查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "安全漏洞扫描", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "性能优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.21 + }, + { + "keyword": "逻辑验证五大", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "能力于一体", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "test", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + }, + { + "keyword": "backend", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + }, + { + "keyword": "performance", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.91 + }, + { + "keyword": "migration", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 2.08 + } + ], + "tier_class": "T1", + "criticality": "HIGH", + "callCount30d": 0 + }, + { + "name": "project-coordinator", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "项目管理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "项目计划", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "排期", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "wbs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "工作分解", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "任务分解", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sprint", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scrum", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "看板", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "kanban", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "迭代", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "站会", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "回顾会", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "里程碑", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "进度跟踪", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "甘特图", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "燃尽图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "进度报告", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "风险管理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "风险登记", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "依赖管理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "阻塞", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "延期", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "飞书项目", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "notion", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "linear", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "jira", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "github projects", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "m1", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "prd 签字确认", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "原型验收", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mm-dd", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "m4", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "生产环境稳定运行", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "风险", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "等级", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "高/中/低", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[措施]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[一句话描述]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "yyyy-mm-dd → yyyy-mm-dd", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "[预算/人力/技术]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + } + ], + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "prompt-optimizer", + "description": "提示词优化器。当用户输入\"提示词:(内容)\"或\"优化提示词:(内容)\"格式时自动触发,将用户的原始提示词转化为符合Claude官方规范的高质量结构化提示词。支持各类任务场景的提示词优化,包括文本生成、代码编写、数据分析、创意写作等。触发词包括:提示词:、优化提示词:、prompt:、改进提示词、帮我优化这个prompt。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "WebFetch", + "WebSearch" + ], + "keywords": [ + { + "keyword": "说明", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "用具体指令替代模糊描述", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "使用 xml 标签分隔不同部分", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "复杂任务提供 3-5 个示例", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "鼓励分步骤推理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "说\"要做什么\"而非\"不要做什么\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "提示词:(内容)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "优化提示词:(内容)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "帮我优化/改进这个提示词", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "为什么", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "要做什么", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "不要做什么", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "识别是生成", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "编码", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "翻译", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "总结还是其他类型", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "提示词优化器", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户输入", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "提示词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "内容", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "优化提示词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "格式时自动触", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "将用户的原始", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "提示词转化为", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "符合", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "官方规范的高", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "质量结构化提", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "示词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "支持各类任务", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "场景的提示词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "包括文本生成", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "代码编写", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "数据分析", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "创意写作等", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "触发词包括", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "改进提示词", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "帮我优化这个", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "claude", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "prompt", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + } + ], + "tier_class": "T1", + "criticality": "MEDIUM", + "callCount30d": 0 + }, + { + "name": "python-pro", + "description": "Python 深度专家。当用户需要 Python 3.11+ 高级特性、类型提示 typing、async/await 异步编程、dataclass、mypy 配置、pytest 高级用法、生产级 Python 模式,或说 \"Python\"、\"类型提示\"、\"异步Python\" 时使用此技能。", + "maturity": "imported", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "type hints", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mypy", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "generics", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "protocol", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "standard library", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pytest", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "fixtures", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mocking", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "parametrize", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "类型提示", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "python", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "异步python", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "高级特性", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "异步编程", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.02 + }, + { + "keyword": "高级用法", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "生产级", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "模式", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "异步", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "typing", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "async", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "await", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "dataclass", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "config", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "qa", + "description": "Systematically QA test a web application and fix bugs found. Runs QA testing, then iteratively fixes bugs in source code, committing each fix atomically and re-verifying. Use when asked to \"qa\", \"QA\",", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "parameter", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "(auto-detect or required)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tier", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": ".gstack/qa-reports/", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scope", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "sign in to user@example.com", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "runtime", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "minitest + fixtures + capybara", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "node.js", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "jest + cypress", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "pytest + pytest-cov", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "go", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "phpunit + mockery", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "elixir", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "integration", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "smoke", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "spec/", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "sort -rn", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "category", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "console", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "links", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "visual", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "functional", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ux", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "performance", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.82 + }, + { + "keyword": "content", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "accessibility", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "只报告", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "不修复", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test this site", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "find bugs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test and fix", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "report-only", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "just report", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "qa report only", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "qa", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fix what's broken", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "does this work?", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test but don't fix", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "the base branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "the base branch.", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "不要修", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "只测试不修", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "报告模式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "report only", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "don't fix", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "qa-only", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[ -n", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && [ -x", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "] && b=", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "[ -z", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "$b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "ready: $b", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "needs_setup", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "runtime:ruby", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:node", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:python", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:go", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:rust", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:php", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:elixir", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "rails", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "framework:rails", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "next", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "framework:nextjs", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "bootstrap_declined", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "`\n- `", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ci:github", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "found app on :3000", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "found app on :4000", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "found app on :8080", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user@example.com", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[redacted]", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "top 3 things to fix", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "date", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "yyyy-mm-dd", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "url", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "healthscore", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "issues", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "id", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "issue-001", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "title", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "severity", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "categoryscores", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "deferred.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "deferred", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "improve", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "verified", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "it renders", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "it doesn't throw", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "re-test confirms the fix works", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "no new errors introduced", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "needs auth state", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "external service)", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "systematically qa test", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "a web application", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and fix bugs", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "found. runs qa", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "testing", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "then iteratively fixes", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "bugs in source", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "code", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "committing each fix", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "atomically and re-verifying.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "use when asked", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "fix what", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "s broken", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "proactively suggest when", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "the user says", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "a feature is", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ready for testing", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "or asks", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "does this work", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "three tiers", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "quick", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "critical", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "high only", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "standard", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "medium", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.43 + }, + { + "keyword": "exhaustive", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "cosmetic", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "produces before", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "after health scores", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "fix evidence", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and a ship-readiness", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "summary. supports report-only", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "mode", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "when user says", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "test but don", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "t fix", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "auto-switch to report-only", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "find and document", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "bugs without fixing", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "qa-only is deprecated", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and redirects here.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "性能", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + }, + { + "keyword": "认证", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + } + ], + "tier_class": "T1", + "criticality": "MEDIUM", + "callCount30d": 0 + }, + { + "name": "regex-shell-wizard", + "description": "正则与Shell脚本专家。当用户需要正则表达式编写、Shell/Bash 脚本、 Awk/Sed 文本处理、批量文件操作、日志分析、Cron 定时任务, 或说 \"正则\"、\"Shell脚本\"、\"批量替换\"、\"日志分析\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "正则表达式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "regex", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "匹配规则", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "提取文本", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "正则替换", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "shell脚本", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bash", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "zsh", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "命令行", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动化脚本", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "powershell", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "awk", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sed", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "grep", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "find", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "xargs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "vim", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cron", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "批量重命名", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "日志分析", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "文本处理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "批量替换", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "[12]\\d", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "正则", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "天书", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "正则与", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "脚本专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要正", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "则表达式编写", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "脚本", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "批量文件操作", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "定时任务", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "shell", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "log", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + } + ], + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "retro", + "description": "Weekly engineering retrospective. Analyzes commit history, work patterns, and code quality metrics with persistent history and trend tracking. Team-aware: breaks down per-person contributions with pra", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "%an", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "%ai", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "grep -v '^$'", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sort -n", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "grep -v node_modules", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "grep -e '\\.(test", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": " if todos.md doesn't exist", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "show the skill that flagged it", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "the branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": " if moments exist", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "app/services/", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "insertions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "deletions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "time patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "weekly retro", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "what did we ship", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "2026-03-11t00:00:00", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "2026-03-11", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "n hours ago", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "you", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "your", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "%h|%an|%ae|%ai|%s", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "commit:%h|%an", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "%at|%an|%ai|%s", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "%s", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "author:%an", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test(qa):", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test(design):", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test: coverage", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "you (name)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "hook_fire", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ship fast, fix fast", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "your peak hours...", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "your biggest ship...", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "great work", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai-assisted commits", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "%ad", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "%y-%m-%d", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "date", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "2026-03-08", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "window", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "7d", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "metrics", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "commits", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "contributors", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "prs_merged", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "net_loc", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test_loc", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test_ratio", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "active_days", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sessions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "deep_sessions", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "avg_session_minutes", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "loc_per_session_hour", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "feat_pct", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fix_pct", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "peak_hour", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ai_assisted_commits", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "authors", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "garry tan", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "top_area", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "browse/", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "alice", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "version_range", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "1.16.0.0", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "1.16.1.0", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "streak_days", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tweetable", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": {", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": ": 3,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 1,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 2,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test_health", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "total_test_files", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": 5,", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "backlog", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "total_open", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "p0_p1", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "p2", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "2026-03-04t00:00:00", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "great job!", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "not", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "areas of focus", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "and commit patterns", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "1 specific", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "not criticism. examples:", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "analyzes commit history", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "work patterns", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and code quality", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "metrics with persistent", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "history and trend", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "tracking. team-aware", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "breaks down per-person", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "contributions with praise", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and growth areas.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "use when asked", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "what did we", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ship", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "engineering retrospective", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "proactively suggest at", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "the end of", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "a work week", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "or sprint.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "认证", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + }, + { + "keyword": "钩子", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "review", + "description": "Pre-landing PR review. Analyzes diff against the base branch for SQL safety, LLM trust boundary violations, conditional side effects, and other structural issues. Use when asked to \"review this PR\", \"", + "maturity": "imported", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "tail -1", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "the base branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "review this pr", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "code review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "pre-landing review", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "check my diff", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "the base branch.", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "do not flag", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "design review", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "design-review-lite", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "timestamp", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "findings", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "auto_fixed", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "commit", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "clean", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.55 + }, + { + "keyword": "issues_found", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "fix.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "this pattern is safe", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tests cover this", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "likely handled", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "probably tested", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "this looks fine", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "codex_available", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "codex_not_available", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "run all passes", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "paranoid review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "full adversarial", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "do all 4 passes", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "thorough review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "medium tier", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "large tier", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "xhigh", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "$tmperr_adv", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "auth", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "login", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "unauthorized", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "api key", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "- **timeout:**", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "adversarial-review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "source", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "tier", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "medium", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "codex", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "claude", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "$tmperr", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "large", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "gate", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "both", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "pass", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "fail", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "informational", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "classify as ask", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "pre-landing pr review.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "analyzes diff against", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "for sql safety", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "llm trust boundary", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "violations", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "conditional side effects", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "and other structural", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "issues. use when", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "asked to", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "proactively suggest when", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "the user is", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "about to merge", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "or land code", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "changes.", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "认证", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + } + ], + "tier_class": "T1", + "criticality": "HIGH", + "callCount30d": 0 + }, + { + "name": "reviewer-expert", + "description": "代码审查与质量专家。当用户需要代码审查、Code Review、代码质量评估、安全审计、 代码改进建议、PR Review、技术债务分析、代码规范制定、重构建议、 圈复杂度分析、代码坏味道识别, 或说 \"审查代码\"、\"帮我 review\"、\"检查代码\"、\"代码质量\"、\"技术债务\"、\"重构\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "code review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "代码审查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "代码评审", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pr review", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mr 审查", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "代码质量", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "代码健康度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "质量评分", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "代码改进", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "代码规范", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "编码规范", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "命名规范", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "注释规范", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术债务", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "代码坏味道", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "重构建议", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "遗留代码", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "代码复杂度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "圈复杂度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "认知复杂度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "权重", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "逻辑正确", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "边界处理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "并发安全", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "20%", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "可维护性", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "算法复杂度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "n+1 查询", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "缓存使用", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "11-20 中等", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "审查代码", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "检查代码", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "重构", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.55 + }, + { + "keyword": "帮我 review", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "x/10", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "代码审查与质", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "量专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要代", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "码审查", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "代码质量评估", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "安全审计", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "代码改进建议", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "技术债务分析", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "代码规范制定", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "圈复杂度分析", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "代码坏味道识", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "帮我", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "review", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + }, + { + "keyword": "cache", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + }, + { + "keyword": "refactor", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T1", + "criticality": "MEDIUM", + "callCount30d": 1 + }, + { + "name": "sales-consultant", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "销售", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "销售策略", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "销售漏斗", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "成交率", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "客单价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "复购率", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "crm", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "客户跟进", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "客户开发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "客户关系", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "客户分层", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rfm", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "谈单", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "报价谈判", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "议价", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "异议处理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "成交技巧", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "签约", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "获客渠道", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "转介绍", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "冷启动", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "陌拜", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "线索", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "商机", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "飞书crm", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "纷享销客", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "企业微信", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "销售自动化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "时间节点", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "目标", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "d0", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "确认需求匹配度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "d1-d2", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "展示专业度", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "d3-d4", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "处理异议", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "d5-d7", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "推进商务", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "d7-d14", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "促成决策", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "d14+", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "保持联系", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "回应策略", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "制造紧迫", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"已有方案了\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "赋能推动", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "工具", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "核心优势", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "免费", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "自动化工作流", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "b2b", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "太贵了", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "| 制造紧迫 |", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "| 差异对比 |", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "| 分期/roi |", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "| 赋能推动 |", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "security-expert", + "description": "应用安全专家。当用户需要进行安全编码、OWASP 防护、认证授权设计(JWT/OAuth)、 加密实现、密钥管理、漏洞响应、XSS/SQL注入防护、渗透测试, 或说 \"安全\"、\"认证\"、\"加密\" 时使用此技能。精通安全最佳实践和攻防技术。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "安全", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "认证", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.21 + }, + { + "keyword": "加密", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user_id", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "jwt_secret", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "hs256", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "exp", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "iat", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user:read", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user:write", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user:delete", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "admin", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "] =", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "x-frame-options", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "deny", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "x-xss-protection", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "1; mode=block", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "安全编码", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "代码审计", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "漏洞修复", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "owasp", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "xss", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "sql注入", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "csrf", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "注入攻击", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "授权", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "jwt", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "oauth", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "rbac", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "权限", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "密码", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "哈希", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "密钥", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "证书", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "渗透测试", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "安全扫描", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "sast", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "dast", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "应用安全专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "行安全编码", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "防护", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "认证授权设计", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "加密实现", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "密钥管理", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "漏洞响应", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "注入防护", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "精通安全最佳", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "实践和攻防技", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "sql", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "test", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + }, + { + "keyword": "encryption", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 2.08 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T1", + "criticality": "HIGH", + "callCount30d": 0 + }, + { + "name": "ship", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "wc -l", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "task type", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "compression", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "15 min", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "test writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~50x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 week", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "architecture / design", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "~5x", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "1 day", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "error handling", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "edge cases", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "unfamiliar patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "and once in a while", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "skill:$skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch:$branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "**version:** {gstack version}", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "review readiness dashboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "runs", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "required", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "yes", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "no", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "code quality", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "tests", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "new user-facing features", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "refactors", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "infra", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "codex structured", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "claude adversarial subagent", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "stale (>7 days)", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "or has open issues - ceo", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "design", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "runtime", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "minitest + fixtures + capybara", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "node.js", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "jest + cypress", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "pytest + pytest-cov", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "go", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "phpunit + mockery", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "elixir", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "integration", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "smoke", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "spec/", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "sort -rn", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "*_writer_service.rb", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "*_scorer.rb", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "*_classifier_service.rb", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "*writing*.rb", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "*prompt*.rb", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "test/evals/support/*.rb", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "fast (haiku)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "~$0.07/run", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "default dev", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "bin/test-lane --eval", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "~72s (baseline)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "grep -v node_modules", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "!important", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"timestamp\":\"timestamp\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "\"status\":\"status\"", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "\"findings\":n", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "\"auto_fixed\":m", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "n = total findings", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "m = auto-fixed count", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "severity", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "problem", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "k asked (j fixed", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "filter", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "classify", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "gh fails", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "api returns an error", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "y fixed", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "b) acknowledge and ship anyway", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "grep -oe '[0-9]+'", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tail -1", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "ship", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "deploy", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "push to main", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "create a pr", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "merge and push", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "$_upd", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "$ppid", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "true", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.5 + }, + { + "keyword": "unknown", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "branch: $_branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "false", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "inline upgrade flow", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "good enough", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "complete", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "lake", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "ocean", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "save time", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "(say:", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "--arg insight", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "await fetch(...)", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "or", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.59 + }, + { + "keyword": "the base branch", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "the base branch.", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "(full)", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "(lite)", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "don't bother me", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "clean", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.55 + }, + { + "keyword": "skipped (global)", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "clear", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "skill", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "ship-review-override", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "no_override", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "timestamp", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.31 + }, + { + "keyword": "decision", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user_choice", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ship_anyway", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "not_relevant", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "runtime:ruby", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:node", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:python", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:go", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:rust", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:php", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "runtime:elixir", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "rails", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "framework:rails", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "next", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "framework:nextjs", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "bootstrap_declined", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "`\r\n- `", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "ci:github", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "it renders", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "it doesn't throw", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "design review", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "design-review-lite", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "findings", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "auto_fixed", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "commit", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "issues_found", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "codex_available", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "codex_not_available", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "echo", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.69 + }, + { + "keyword": "run all passes", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "paranoid review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "full adversarial", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "do all 4 passes", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "thorough review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "medium tier", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "large tier", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "xhigh", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "$tmperr_adv", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "auth", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "login", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "unauthorized", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "api key", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "- **timeout:**", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "adversarial-review", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "source", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "tier", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "medium", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "codex", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "claude", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "$tmperr", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "large", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "gate", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "both", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "pass", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "fail", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "informational", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "should work now", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "i'm confident", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": ", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "no issues found.", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ready to push?", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "create pr?", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "eng review missing", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "or has open issues", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "classify as ask", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + }, + { + "keyword": "部署", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.27 + }, + { + "keyword": "架构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.75 + }, + { + "keyword": "日志", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.8 + }, + { + "keyword": "重构", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.27 + }, + { + "keyword": "认证", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + } + ], + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "social-media-manager", + "description": "社交媒体运营专家。当用户需要社交媒体策略、内容日历、新媒体运营、 微信公众号、微博、知乎、B站、小红书、抖音运营、KOL 合作、 社区运营、内容规划,或说 \"社交媒体\"、\"新媒体\"、\"内容运营\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write" + ], + "keywords": [ + { + "keyword": "社交媒体", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "新媒体运营", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "微信", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "微博", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "知乎", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "b站", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "小红书", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "抖音", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "公众号", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "内容日历", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "内容规划", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "社区运营", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "用户互动", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "帖子撰写", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "内容创作", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "品牌人设", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "话题标签", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "增加粉丝", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "提高互动率", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "kol合作", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "koc", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "内容形式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "微信公众号", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "泛人群", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "深度回答", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "年轻化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "女性为主", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "短视频", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "话题传播", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "新媒体", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "内容运营", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "潜规则", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "6:00 pm", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "回答问题", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "#技术 #[领域]", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "7:00 pm", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "\"...\"", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "5:30 pm", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "图文长文", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "社交媒体运营", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要社", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "交媒体策略", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "抖音运营", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "合作", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "kol", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + } + ], + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "sre-expert", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "histogram_quantile(0.95", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "负责人", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sre", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "slo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "事故响应", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "postmortem", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "slo_name", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "target", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": f", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "healthy", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "warning", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "critical", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "breached", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "5..", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "错误预算消耗过快", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "p95 延迟超过 300ms", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "high", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "medium", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "low", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "detected", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "acknowledged", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "investigating", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mitigating", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "resolved", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sli", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "sla", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "错误预算", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "监控", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.45 + }, + { + "keyword": "告警", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "日志", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 1.28 + }, + { + "keyword": "追踪", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "prometheus", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "grafana", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "容量规划", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "on-call", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "值班", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "可用性", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "故障复盘", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "mttr", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "发布", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "金丝雀", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "蓝绿部署", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "回滚", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "{title}", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "{date}", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "{severity}", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "{duration}", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "deploy", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + }, + { + "keyword": "monitoring", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + }, + { + "keyword": "log", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + }, + { + "keyword": "rollback", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.82 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "tech-lead-mentor", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "团队管理", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "带人", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "okr", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "绩效", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "1on1", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "招聘", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "晋升", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "述职", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "职业规划", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术影响力", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "演讲", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "研发流程", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "code review规范", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术债", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "onboarding", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "模拟面试", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "面试题", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "简历优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "系统设计面试", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "面试", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "为什么", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "办公室政治", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "一刀切", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "tech-writer-expert", + "description": "", + "maturity": "unknown", + "isComposable": false, + "allowedTools": [], + "keywords": [ + { + "keyword": "技术文档", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "readme", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "api文档", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "用户手册", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "api 文档", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.54 + }, + { + "keyword": "api docs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "technical documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "写文档", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "文档编写", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "撰写文档", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "write documentation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "technical writing", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "write docs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "设计文档", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "架构文档", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "开发指南", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "developer guide", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "user manual", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "design document", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "类型", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "name", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "用户名", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "string", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "### 响应 \\\\\\json { \"code\": 0", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"data\": { \"id\": 1", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "\"name\": \"john\" } } \\\\\\ ### 错误码", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "code", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "data", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "id", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "john", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "/api/users", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "post", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "content-type: application/json", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "architecture", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.06 + } + ], + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "technical-seo-expert", + "description": "技术 SEO 专家。当用户需要搜索引擎优化、百度 SEO、谷歌 SEO、 sitemap 配置、robots.txt、结构化数据 JSON-LD、meta 标签优化、 SSR/SSG 渲染策略、关键词策略、网站收录, 或说 \"SEO\"、\"搜索优化\"、\"百度收录\" 时使用此技能。", + "maturity": "stable", + "isComposable": false, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "seo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "搜索引擎优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "百度seo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "谷歌seo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "关键词策略", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "收录", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "sitemap.xml", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "robots.txt", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "canonical", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "meta标签", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "百度站长平台", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "预渲染", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "动态渲染", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "网站速度优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "结构化数据", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "json-ld", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rich snippets", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "schema.org", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "搜索优化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "百度收录", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "黑帽seo", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "技术", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要搜", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "索引擎优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "百度", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "谷歌", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.02 + }, + { + "keyword": "标签优化", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "渲染策略", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "网站收录", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "sitemap", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "meta", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "ssr", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.53 + }, + { + "keyword": "ssg", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.66 + }, + { + "keyword": "index", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + }, + { + "keyword": "config", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.53 + } + ], + "tier_class": "T1", + "criticality": "MEDIUM", + "callCount30d": 0 + }, + { + "name": "terraform-engineer", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "creating modules", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "inputs/outputs", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "versioning", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "providers", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "terraform plan", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "terratest", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "policy as code", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "terraform", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "iac", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "基础设施即代码", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "测试", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 0.66 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "tester-expert", + "description": "测试专家。当用户需要编写单元测试、集成测试、E2E 端到端测试、TDD 测试驱动开发、 Jest/Vitest/Playwright/Cypress/pytest 测试框架、Mock/Stub、测试覆盖率, 或说 \"写测试\"、\"测试用例\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash", + "mcp__playwright", + "mcp__chrome-devtools", + "mcp__selenium" + ], + "keywords": [ + { + "keyword": "写测试", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "测试用例", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "email", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "password", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "submit", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.06 + }, + { + "keyword": "welcome-message", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "error-message", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "单元测试", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "集成测试", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "e2e测试", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "端到端测试", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "unit test", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "integration test", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "write tests", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "test case", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "test coverage", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "testing", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "jest", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "vitest", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "playwright", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "cypress", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "pytest", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 2.92 + }, + { + "keyword": "tdd", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "bdd", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "测试覆盖率", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "test suite", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "test runner", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "component test", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "snapshot test", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "regression test", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "测试驱动", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "mock", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "stub", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "覆盖率", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "代码覆盖", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "测试方案", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "testing library", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "test driven", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "assertion", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "测试专家", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要编", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "写单元测试", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试驱动开发", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "测试框架", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "e2e", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "组件", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.43 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T1", + "criticality": "MEDIUM", + "callCount30d": 4 + }, + { + "name": "typescript-pro", + "description": "TypeScript 深度专家。当用户需要 TypeScript 高级类型系统、泛型、条件类型、tRPC 全栈类型安全、tsconfig 优化、类型守卫、判别联合类型,或说 \"TypeScript\"、\"类型安全\"、\"泛型\" 时使用此技能。", + "maturity": "imported", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "generics", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "conditional types", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "mapped types", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "template literals", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "utility types", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tsconfig options", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "strict mode", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "project references", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "泛型", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "类型安全", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "typescript", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "高级类型系统", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "条件类型", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "全栈类型安全", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "类型守卫", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "判别联合类型", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "trpc", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "tsconfig", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + }, + { + "keyword": "模板", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + }, + { + "keyword": "配置", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.02 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T2", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "websocket-engineer", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "websocket handshake", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "frames", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ping/pong", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "close codes", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "patterns", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "authentication", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "authorization", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rate limiting", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "cors", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "websocket", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "实时通信", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "socket.io", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "认证", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.11 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T3", + "criticality": "LOW", + "callCount30d": 0 + }, + { + "name": "workflow-automation-expert", + "description": "", + "maturity": "unknown", + "isComposable": true, + "allowedTools": [], + "keywords": [ + { + "keyword": "zapier", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "n8n", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "make", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ifttt", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "power automate", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "tray.io", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动化工作流", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "工作流编排", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "流程自动化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "rpa", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "低代码集成", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "无代码", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "webhook 链", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "事件驱动", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "触发器", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "条件分支", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据映射", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "字段映射", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "跨平台同步", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "数据管道", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "定时触发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "消息转发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动通知", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动化", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "工作流", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动同步", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动推送", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动转发", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "列出窗口", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "读屏幕文字", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "点击按钮", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "点击菜单", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "自动滚动", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "桌面截图", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "扫描元素", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "键盘快捷键", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "鼠标拖拽", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ocr", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "uiautomation", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ocr_window", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "click_element", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "list_windows", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "scan_elements", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "auto_scroll", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "杀进程", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "注册表", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "剪贴板", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "系统通知", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "打开应用", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "文件操作", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "powershell", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "registry", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "process", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "clipboard", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "notification", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "看到屏幕上", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "找到那个按钮", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "视觉识别", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "视觉点击", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "看截图点击", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "vision_click", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "vision_locate", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "vision_get", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "vision_type", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "操控excel", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "操控word", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "发邮件outlook", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "com对象", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "写入单元格", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "createobject", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "vba", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "ole", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "activex", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "/webhook/receive", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "x-signature", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "签名验证失败", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "status", + "weight": 1, + "tier": "core", + "tfidfWeight": 1.96 + }, + { + "keyword": "ok", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.65 + }, + { + "keyword": "nodes", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "name", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "webhook 触发器", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "type", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": ": {", + "weight": 1, + "tier": "core", + "tfidfWeight": 2.86 + }, + { + "keyword": "数据转换", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "n8n-nodes-base.code", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "parameters", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "jscode", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "发送通知", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "n8n-nodes-base.slack", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "channel", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "#orders", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "text", + "weight": 1, + "tier": "core", + "tfidfWeight": 3.31 + }, + { + "keyword": "zap 设计", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "multi-step zap", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "filter/path", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "formatter", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "自托管工作流", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "自定义节点", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "code node (js/python)", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "scenario 设计", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "router", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "iterator", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "aggregator", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "flow 设计", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "connector", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "expression", + "weight": 0.8, + "tier": "strong", + "tfidfWeight": 3.33 + }, + { + "keyword": "钩子", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.35 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T1", + "criticality": "MEDIUM", + "callCount30d": 0 + }, + { + "name": "zero-defect-guardian", + "description": "零缺陷守门员。当用户需要安全重构、Pinning Test 钉子测试、零缺陷修改、 防退化保护、遗留代码安全修改、回归测试保护, 或说 \"零缺陷\"、\"安全修改\"、\"防退化\"、\"无损重构\" 时使用此技能。", + "maturity": "stable", + "isComposable": true, + "allowedTools": [ + "Read", + "Glob", + "Grep", + "Edit", + "Write", + "Bash" + ], + "keywords": [ + { + "keyword": "零缺陷", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "不能出错", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "防退化", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "安全模式", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "绝对安全", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "无损重构", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "遗留代码修改", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "重构保护", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "保守修改", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "防御性编程", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "回归保护", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pinning test", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "安全修改", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "pinning test (钉子测试)", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "当前行为", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "当前的样子", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "修复", + "weight": 1, + "tier": "core", + "tfidfWeight": 4.16 + }, + { + "keyword": "零缺陷守门员", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "当用户需要安", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 1.82 + }, + { + "keyword": "全重构", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "钉子测试", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "零缺陷修改", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "防退化保护", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "遗留代码安全", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "修改", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "回归测试保护", + "weight": 0.5, + "tier": "extended", + "tfidfWeight": 2.08 + }, + { + "keyword": "security", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.21 + }, + { + "keyword": "refactor", + "weight": 0.5, + "tier": "alias", + "tfidfWeight": 1.66 + } + ], + "composable": { + "isComposable": true, + "enhances": [], + "requires": [], + "conflicts": [] + }, + "tier_class": "T1", + "criticality": "HIGH", + "callCount30d": 0 + } + ], + "collisions": [ + { + "keyword": "true", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "designer-expert", + "document-release", + "frontend-expert", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 21 + }, + { + "keyword": "error handling", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "rust-engineer", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 20 + }, + { + "keyword": "documentation", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship", + "tech-writer-expert" + ], + "count": 20 + }, + { + "keyword": "wc -l", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "task type", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "compression", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "15 min", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "test writing", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "~50x", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "1 week", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "architecture / design", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "~5x", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "1 day", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "edge cases", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "unfamiliar patterns", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "and once in a while", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "skill:$skill", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "branch:$branch", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "**version:** {gstack version}", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "$_upd", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "$ppid", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "unknown", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "branch: $_branch", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "yes", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "no", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "false", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "inline upgrade flow", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "good enough", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "complete", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "lake", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "ocean", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "save time", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "(say:", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "--arg skill", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "--arg branch", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "--arg insight", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "await fetch(...)", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "or", + "skills": [ + "benchmark", + "browse", + "canary", + "codex", + "design-consultation", + "design-review", + "document-release", + "gstack", + "investigate", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "qa", + "retro", + "review", + "setup-browser-cookies", + "setup-deploy", + "ship" + ], + "count": 19 + }, + { + "keyword": "status", + "skills": [ + "browse", + "canary", + "codex", + "git-operation-master", + "guardian", + "land-and-deploy", + "mcp-probe", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "review", + "ship", + "workflow-automation-expert" + ], + "count": 13 + }, + { + "keyword": "[ -n", + "skills": [ + "benchmark", + "browse", + "canary", + "design-consultation", + "design-review", + "gstack", + "land-and-deploy", + "qa", + "setup-browser-cookies" + ], + "count": 9 + }, + { + "keyword": "] && [ -x", + "skills": [ + "benchmark", + "browse", + "canary", + "design-consultation", + "design-review", + "gstack", + "land-and-deploy", + "qa", + "setup-browser-cookies" + ], + "count": 9 + }, + { + "keyword": "] && b=", + "skills": [ + "benchmark", + "browse", + "canary", + "design-consultation", + "design-review", + "gstack", + "land-and-deploy", + "qa", + "setup-browser-cookies" + ], + "count": 9 + }, + { + "keyword": "[ -z", + "skills": [ + "benchmark", + "browse", + "canary", + "design-consultation", + "design-review", + "gstack", + "land-and-deploy", + "qa", + "setup-browser-cookies" + ], + "count": 9 + }, + { + "keyword": "$b", + "skills": [ + "benchmark", + "browse", + "canary", + "design-consultation", + "design-review", + "gstack", + "land-and-deploy", + "qa", + "setup-browser-cookies" + ], + "count": 9 + }, + { + "keyword": "ready: $b", + "skills": [ + "benchmark", + "browse", + "canary", + "design-consultation", + "design-review", + "gstack", + "land-and-deploy", + "qa", + "setup-browser-cookies" + ], + "count": 9 + }, + { + "keyword": "needs_setup", + "skills": [ + "benchmark", + "browse", + "canary", + "design-consultation", + "design-review", + "gstack", + "land-and-deploy", + "qa", + "setup-browser-cookies" + ], + "count": 9 + }, + { + "keyword": "timestamp", + "skills": [ + "benchmark", + "canary", + "codex", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "review", + "ship" + ], + "count": 9 + }, + { + "keyword": "the base branch", + "skills": [ + "canary", + "codex", + "document-release", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "qa", + "review", + "ship" + ], + "count": 9 + }, + { + "keyword": "the base branch.", + "skills": [ + "canary", + "codex", + "document-release", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "qa", + "review", + "ship" + ], + "count": 9 + }, + { + "keyword": "skill", + "skills": [ + "canary", + "codex", + "gstack", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "review", + "ship" + ], + "count": 9 + }, + { + "keyword": "clean", + "skills": [ + "codex", + "land-and-deploy", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "review", + "ship" + ], + "count": 7 + }, + { + "keyword": "findings", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "review", + "ship" + ], + "count": 6 + }, + { + "keyword": "design review", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "review", + "ship" + ], + "count": 6 + }, + { + "keyword": "commit", + "skills": [ + "git-operation-master", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "review", + "ship" + ], + "count": 6 + }, + { + "keyword": "echo", + "skills": [ + "gstack", + "guardian", + "investigate", + "land-and-deploy", + "review", + "ship" + ], + "count": 6 + }, + { + "keyword": "url", + "skills": [ + "benchmark", + "canary", + "design-review", + "land-and-deploy", + "qa" + ], + "count": 5 + }, + { + "keyword": ": {", + "skills": [ + "benchmark", + "canary", + "design-review", + "retro", + "workflow-automation-expert" + ], + "count": 5 + }, + { + "keyword": "email", + "skills": [ + "browse", + "data-engineer-expert", + "gstack", + "notification-system-expert", + "tester-expert" + ], + "count": 5 + }, + { + "keyword": "why", + "skills": [ + "codex", + "document-release", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 5 + }, + { + "keyword": "issues_found", + "skills": [ + "codex", + "plan-ceo-review", + "plan-eng-review", + "review", + "ship" + ], + "count": 5 + }, + { + "keyword": "redis", + "skills": [ + "architect-expert", + "backend-builder", + "database-tuning-expert", + "investigate" + ], + "count": 4 + }, + { + "keyword": "node.js", + "skills": [ + "backend-builder", + "design-review", + "qa", + "ship" + ], + "count": 4 + }, + { + "keyword": "go", + "skills": [ + "backend-builder", + "design-review", + "qa", + "ship" + ], + "count": 4 + }, + { + "keyword": "submit", + "skills": [ + "browse", + "design-review", + "gstack", + "tester-expert" + ], + "count": 4 + }, + { + "keyword": "\\unresolved\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\critical_gaps\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\mode\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\scope_proposed\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\scope_accepted\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\scope_deferred\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "{scope_accepted} accepted", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\issues_found\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\initial_score\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\overall_score\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\decisions_made\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\gate\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\findings\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "ceo review", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "{runs}", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "independent 2nd opinion", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "{findings}", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "\\/plan-eng-review\\", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "{status}", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "|| echo", + "skills": [ + "codex", + "investigate", + "plan-ceo-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "eng review required", + "skills": [ + "codex", + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 4 + }, + { + "keyword": "date", + "skills": [ + "design-consultation", + "design-review", + "qa", + "retro" + ], + "count": 4 + }, + { + "keyword": "runtime", + "skills": [ + "design-review", + "plan-ceo-review", + "qa", + "ship" + ], + "count": 4 + }, + { + "keyword": "sort -rn", + "skills": [ + "design-review", + "plan-ceo-review", + "qa", + "ship" + ], + "count": 4 + }, + { + "keyword": "类型", + "skills": [ + "impact-analyst", + "mcp-probe", + "product-manager-expert", + "tech-writer-expert" + ], + "count": 4 + }, + { + "keyword": "review readiness dashboard", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "runs", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "required", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "code quality", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "tests", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "new user-facing features", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "refactors", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "infra", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "codex structured", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "claude adversarial subagent", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "stale (>7 days)", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "or has open issues - ceo", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "design", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "(full)", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "(lite)", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "don't bother me", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "skipped (global)", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review", + "ship" + ], + "count": 4 + }, + { + "keyword": "medium", + "skills": [ + "review", + "ship", + "sre-expert", + "ui-ux-pro-max" + ], + "count": 4 + }, + { + "keyword": "等级", + "skills": [ + "ai-philosophy-expert", + "project-audit-expert", + "project-coordinator" + ], + "count": 3 + }, + { + "keyword": "graphql", + "skills": [ + "architect-expert", + "backend-builder", + "graphql-architect" + ], + "count": 3 + }, + { + "keyword": "performance", + "skills": [ + "benchmark", + "flutter-expert", + "qa" + ], + "count": 3 + }, + { + "keyword": "", + "skills": [ + "benchmark", + "canary", + "land-and-deploy" + ], + "count": 3 + }, + { + "keyword": "command", + "skills": [ + "browse", + "gstack", + "plan-ceo-review" + ], + "count": 3 + }, + { + "keyword": "description", + "skills": [ + "browse", + "gstack", + "plan-ceo-review" + ], + "count": 3 + }, + { + "keyword": "password", + "skills": [ + "browse", + "gstack", + "tester-expert" + ], + "count": 3 + }, + { + "keyword": "color", + "skills": [ + "browse", + "gstack", + "ui-ux-pro-max" + ], + "count": 3 + }, + { + "keyword": "text", + "skills": [ + "browser-automation-expert", + "notification-system-expert", + "workflow-automation-expert" + ], + "count": 3 + }, + { + "keyword": "tail -1", + "skills": [ + "codex", + "review", + "ship" + ], + "count": 3 + }, + { + "keyword": "xhigh", + "skills": [ + "codex", + "review", + "ship" + ], + "count": 3 + }, + { + "keyword": "$tmperr", + "skills": [ + "codex", + "review", + "ship" + ], + "count": 3 + }, + { + "keyword": "gate", + "skills": [ + "codex", + "review", + "ship" + ], + "count": 3 + }, + { + "keyword": "pass", + "skills": [ + "codex", + "review", + "ship" + ], + "count": 3 + }, + { + "keyword": "fail", + "skills": [ + "codex", + "review", + "ship" + ], + "count": 3 + }, + { + "keyword": "parameter", + "skills": [ + "design-review", + "developer-expert", + "qa" + ], + "count": 3 + }, + { + "keyword": "none", + "skills": [ + "design-review", + "land-and-deploy", + "setup-deploy" + ], + "count": 3 + }, + { + "keyword": "minitest + fixtures + capybara", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "jest + cypress", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "pytest + pytest-cov", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "phpunit + mockery", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "elixir", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "integration", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "smoke", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "spec/", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "category", + "skills": [ + "design-review", + "qa", + "ui-ux-pro-max" + ], + "count": 3 + }, + { + "keyword": ", or", + "skills": [ + "design-review", + "investigate", + "plan-eng-review" + ], + "count": 3 + }, + { + "keyword": "runtime:ruby", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "runtime:node", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "runtime:python", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "runtime:go", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "runtime:rust", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "runtime:php", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "runtime:elixir", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "rails", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "framework:rails", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "next", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "framework:nextjs", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "bootstrap_declined", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "ci:github", + "skills": [ + "design-review", + "qa", + "ship" + ], + "count": 3 + }, + { + "keyword": "mkdir -p", + "skills": [ + "design-review", + "guardian", + "investigate" + ], + "count": 3 + }, + { + "keyword": "ux", + "skills": [ + "designer-expert", + "qa", + "ui-ux-pro-max" + ], + "count": 3 + }, + { + "keyword": "dashboard", + "skills": [ + "devops-expert", + "setup-deploy", + "ui-ux-pro-max" + ], + "count": 3 + }, + { + "keyword": "title", + "skills": [ + "devops-expert", + "land-and-deploy", + "qa" + ], + "count": 3 + }, + { + "keyword": "ts", + "skills": [ + "evolution-tracker", + "gstack", + "plan-ceo-review" + ], + "count": 3 + }, + { + "keyword": "state management", + "skills": [ + "flutter-expert", + "swift-expert", + "vue-expert" + ], + "count": 3 + }, + { + "keyword": "generics", + "skills": [ + "golang-pro", + "python-pro", + "typescript-pro" + ], + "count": 3 + }, + { + "keyword": "bash", + "skills": [ + "guardian", + "planning-with-files", + "regex-shell-wizard" + ], + "count": 3 + }, + { + "keyword": "design-review-lite", + "skills": [ + "land-and-deploy", + "review", + "ship" + ], + "count": 3 + }, + { + "keyword": "id", + "skills": [ + "mcp-probe", + "qa", + "tech-writer-expert" + ], + "count": 3 + }, + { + "keyword": "name", + "skills": [ + "mcp-probe", + "tech-writer-expert", + "workflow-automation-expert" + ], + "count": 3 + }, + { + "keyword": "login", + "skills": [ + "mobile-expert", + "review", + "ship" + ], + "count": 3 + }, + { + "keyword": "not in scope", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 3 + }, + { + "keyword": "what already exists", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 3 + }, + { + "keyword": "3a", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 3 + }, + { + "keyword": "3b", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 3 + }, + { + "keyword": "unresolved", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 3 + }, + { + "keyword": "issues_open", + "skills": [ + "plan-ceo-review", + "plan-design-review", + "plan-eng-review" + ], + "count": 3 + }, + { + "keyword": "high", + "skills": [ + "plan-eng-review", + "sre-expert", + "ui-ux-pro-max" + ], + "count": 3 + }, + { + "keyword": "tier", + "skills": [ + "qa", + "review", + "ship" + ], + "count": 3 + }, + { + "keyword": "ocr", + "skills": [ + "ai-ml-expert", + "workflow-automation-expert" + ], + "count": 2 + }, + { + "keyword": "分类", + "skills": [ + "ai-ml-expert", + "industry-research-cn" + ], + "count": 2 + }, + { + "keyword": "技术栈", + "skills": [ + "ai-ml-expert", + "architect-expert" + ], + "count": 2 + }, + { + "keyword": "监控", + "skills": [ + "ai-ml-expert", + "devops-expert" + ], + "count": 2 + }, + { + "keyword": "指标", + "skills": [ + "ai-ml-expert", + "evolution-tracker" + ], + "count": 2 + }, + { + "keyword": "风险", + "skills": [ + "ai-philosophy-expert", + "project-coordinator" + ], + "count": 2 + }, + { + "keyword": "架构方案", + "skills": [ + "ai-philosophy-expert", + "architect-expert" + ], + "count": 2 + }, + { + "keyword": "angular", + "skills": [ + "angular-architect", + "frontend-expert" + ], + "count": 2 + }, + { + "keyword": "api设计", + "skills": [ + "api-designer", + "backend-builder" + ], + "count": 2 + }, + { + "keyword": "架构图", + "skills": [ + "architect-expert", + "diagram-as-code-expert" + ], + "count": 2 + }, + { + "keyword": "restful", + "skills": [ + "architect-expert", + "backend-builder" + ], + "count": 2 + }, + { + "keyword": "微服务", + "skills": [ + "architect-expert", + "backend-builder" + ], + "count": 2 + }, + { + "keyword": "事件驱动", + "skills": [ + "architect-expert", + "workflow-automation-expert" + ], + "count": 2 + }, + { + "keyword": "postgresql", + "skills": [ + "architect-expert", + "backend-builder" + ], + "count": 2 + }, + { + "keyword": "gin", + "skills": [ + "backend-builder", + "database-tuning-expert" + ], + "count": 2 + }, + { + "keyword": "/dashboard", + "skills": [ + "benchmark", + "canary" + ], + "count": 2 + }, + { + "keyword": "slug=unknown", + "skills": [ + "benchmark", + "canary" + ], + "count": 2 + }, + { + "keyword": "", + "skills": [ + "benchmark", + "canary" + ], + "count": 2 + }, + { + "keyword": "branch", + "skills": [ + "benchmark", + "canary" + ], + "count": 2 + }, + { + "keyword": "pages", + "skills": [ + "benchmark", + "canary" + ], + "count": 2 + }, + { + "keyword": "$b snapshot -a -o", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "or $b responsive", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "links", + "skills": [ + "browse", + "qa" + ], + "count": 2 + }, + { + "keyword": ".dashboard", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": ".modal", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "#submit-btn", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "#agree-checkbox", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "#name-field", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "#search-input", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": ".upload-success", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "#delete-button", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "value", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "welcome", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "text → href", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "cmd", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "arg1", + "skills": [ + "browse", + "gstack" + ], + "count": 2 + }, + { + "keyword": "自动化脚本", + "skills": [ + "browser-automation-expert", + "regex-shell-wizard" + ], + "count": 2 + }, + { + "keyword": "rpa", + "skills": [ + "browser-automation-expert", + "workflow-automation-expert" + ], + "count": 2 + }, + { + "keyword": "性能", + "skills": [ + "browser-automation-expert", + "ultimate-code-expert" + ], + "count": 2 + }, + { + "keyword": "git log", + "skills": [ + "canary", + "land-and-deploy" + ], + "count": 2 + }, + { + "keyword": "git fetch", + "skills": [ + "canary", + "land-and-deploy" + ], + "count": 2 + }, + { + "keyword": "git merge", + "skills": [ + "canary", + "land-and-deploy" + ], + "count": 2 + }, + { + "keyword": "and gh pr create command", + "skills": [ + "canary", + "land-and-deploy" + ], + "count": 2 + }, + { + "keyword": "aws", + "skills": [ + "cloud-architect", + "devops-expert" + ], + "count": 2 + }, + { + "keyword": "k8s", + "skills": [ + "cloud-native-expert", + "devops-expert" + ], + "count": 2 + }, + { + "keyword": "\"timestamp\":\"timestamp\"", + "skills": [ + "codex", + "ship" + ], + "count": 2 + }, + { + "keyword": "\"status\":\"status\"", + "skills": [ + "codex", + "ship" + ], + "count": 2 + }, + { + "keyword": "\"findings\":n", + "skills": [ + "codex", + "ship" + ], + "count": 2 + }, + { + "keyword": "failure modes", + "skills": [ + "codex", + "plan-ceo-review" + ], + "count": 2 + }, + { + "keyword": "] && echo", + "skills": [ + "codex", + "investigate" + ], + "count": 2 + }, + { + "keyword": "continue", + "skills": [ + "codex", + "design-review" + ], + "count": 2 + }, + { + "keyword": "onboarding", + "skills": [ + "customer-success-expert", + "tech-lead-mentor" + ], + "count": 2 + }, + { + "keyword": "柱状图", + "skills": [ + "data-analyst-expert", + "evolution-tracker" + ], + "count": 2 + }, + { + "keyword": "可视化", + "skills": [ + "data-analyst-expert", + "diagram-as-code-expert" + ], + "count": 2 + }, + { + "keyword": "数据管道", + "skills": [ + "data-engineer-expert", + "workflow-automation-expert" + ], + "count": 2 + }, + { + "keyword": "user_id", + "skills": [ + "data-engineer-expert", + "security-expert" + ], + "count": 2 + }, + { + "keyword": "schema设计", + "skills": [ + "database-tuning-expert", + "graphql-architect" + ], + "count": 2 + }, + { + "keyword": "ref", + "skills": [ + "database-tuning-expert", + "vue-expert" + ], + "count": 2 + }, + { + "keyword": "error", + "skills": [ + "debugger-expert", + "plan-ceo-review" + ], + "count": 2 + }, + { + "keyword": "日志", + "skills": [ + "debugger-expert", + "devops-expert" + ], + "count": 2 + }, + { + "keyword": "cors", + "skills": [ + "debugger-expert", + "websocket-engineer" + ], + "count": 2 + }, + { + "keyword": "scope", + "skills": [ + "design-review", + "qa" + ], + "count": 2 + }, + { + "keyword": "typography", + "skills": [ + "design-review", + "ui-ux-pro-max" + ], + "count": 2 + }, + { + "keyword": "ai slop", + "skills": [ + "design-review", + "frontend-design" + ], + "count": 2 + }, + { + "keyword": "`\r\n- `", + "skills": [ + "design-review", + "ship" + ], + "count": 2 + }, + { + "keyword": "lazy", + "skills": [ + "design-review", + "performance-expert" + ], + "count": 2 + }, + { + "keyword": "yyyy-mm-dd", + "skills": [ + "design-review", + "qa" + ], + "count": 2 + }, + { + "keyword": "", + "skills": [ + "design-review", + "qa" + ], + "count": 2 + }, + { + "keyword": ": [{", + "skills": [ + "design-review", + "devops-expert" + ], + "count": 2 + }, + { + "keyword": "deferred", + "skills": [ + "design-review", + "qa" + ], + "count": 2 + }, + { + "keyword": "improve", + "skills": [ + "design-review", + "qa" + ], + "count": 2 + }, + { + "keyword": "dialog", + "skills": [ + "designer-expert", + "frontend-expert" + ], + "count": 2 + }, + { + "keyword": "自动化", + "skills": [ + "devops-expert", + "workflow-automation-expert" + ], + "count": 2 + }, + { + "keyword": "dist/main.js", + "skills": [ + "devops-expert", + "devsecops-expert" + ], + "count": 2 + }, + { + "keyword": "production", + "skills": [ + "devops-expert", + "land-and-deploy" + ], + "count": 2 + }, + { + "keyword": "甘特图", + "skills": [ + "diagram-as-code-expert", + "project-coordinator" + ], + "count": 2 + }, + { + "keyword": "roi", + "skills": [ + "finance-advisor", + "growth-hacker" + ], + "count": 2 + }, + { + "keyword": "providers", + "skills": [ + "flutter-expert", + "terraform-engineer" + ], + "count": 2 + }, + { + "keyword": "flutter", + "skills": [ + "flutter-expert", + "ui-ux-pro-max" + ], + "count": 2 + }, + { + "keyword": "react", + "skills": [ + "frontend-expert", + "ui-ux-pro-max" + ], + "count": 2 + }, + { + "keyword": "vue", + "skills": [ + "frontend-expert", + "ui-ux-pro-max" + ], + "count": 2 + }, + { + "keyword": "vue3", + "skills": [ + "frontend-expert", + "vue-expert" + ], + "count": 2 + }, + { + "keyword": "next.js", + "skills": [ + "frontend-expert", + "nextjs-developer" + ], + "count": 2 + }, + { + "keyword": "svelte", + "skills": [ + "frontend-expert", + "ui-ux-pro-max" + ], + "count": 2 + }, + { + "keyword": "pinia", + "skills": [ + "frontend-expert", + "vue-expert" + ], + "count": 2 + }, + { + "keyword": "composition api", + "skills": [ + "frontend-expert", + "vue-expert" + ], + "count": 2 + }, + { + "keyword": "ssr", + "skills": [ + "frontend-expert", + "vue-expert" + ], + "count": 2 + }, + { + "keyword": "hydration", + "skills": [ + "frontend-expert", + "vue-expert" + ], + "count": 2 + }, + { + "keyword": "push", + "skills": [ + "git-operation-master", + "notification-system-expert" + ], + "count": 2 + }, + { + "keyword": "merge", + "skills": [ + "git-operation-master", + "land-and-deploy" + ], + "count": 2 + }, + { + "keyword": "hooks", + "skills": [ + "git-operation-master", + "investigate" + ], + "count": 2 + }, + { + "keyword": "websocket", + "skills": [ + "graphql-architect", + "websocket-engineer" + ], + "count": 2 + }, + { + "keyword": "抖音", + "skills": [ + "growth-hacker", + "social-media-manager" + ], + "count": 2 + }, + { + "keyword": "小红书", + "skills": [ + "growth-hacker", + "social-media-manager" + ], + "count": 2 + }, + { + "keyword": "checkout", + "skills": [ + "gstack", + "ui-ux-pro-max" + ], + "count": 2 + }, + { + "keyword": "arc", + "skills": [ + "gstack", + "swift-expert" + ], + "count": 2 + }, + { + "keyword": "home", + "skills": [ + "gstack", + "mobile-expert" + ], + "count": 2 + }, + { + "keyword": "模式", + "skills": [ + "guardian", + "project-audit-expert" + ], + "count": 2 + }, + { + "keyword": "- matcher:", + "skills": [ + "guardian", + "investigate" + ], + "count": 2 + }, + { + "keyword": "权重", + "skills": [ + "investor-review-guide", + "reviewer-expert" + ], + "count": 2 + }, + { + "keyword": "维度", + "skills": [ + "investor-review-guide", + "ultimate-code-expert" + ], + "count": 2 + }, + { + "keyword": "deploy", + "skills": [ + "land-and-deploy", + "ship" + ], + "count": 2 + }, + { + "keyword": "plan-ceo-review", + "skills": [ + "land-and-deploy", + "plan-ceo-review" + ], + "count": 2 + }, + { + "keyword": "plan-design-review", + "skills": [ + "land-and-deploy", + "plan-design-review" + ], + "count": 2 + }, + { + "keyword": "release", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "no_config", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "platform:fly", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "platform:render", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "platform:vercel", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "platform:netlify", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "platform:heroku", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "platform:railway", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "$f", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "deploy_workflow:$f", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "%{http_code}", + "skills": [ + "land-and-deploy", + "setup-deploy" + ], + "count": 2 + }, + { + "keyword": "ok", + "skills": [ + "mcp-probe", + "workflow-automation-expert" + ], + "count": 2 + }, + { + "keyword": "file-based routing", + "skills": [ + "nextjs-developer", + "vue-expert" + ], + "count": 2 + }, + { + "keyword": "tr '/' '-'", + "skills": [ + "plan-ceo-review", + "plan-eng-review" + ], + "count": 2 + }, + { + "keyword": "complexity", + "skills": [ + "plan-ceo-review", + "plan-design-review" + ], + "count": 2 + }, + { + "keyword": "system audit", + "skills": [ + "plan-ceo-review", + "plan-design-review" + ], + "count": 2 + }, + { + "keyword": "step 0", + "skills": [ + "plan-ceo-review", + "plan-design-review" + ], + "count": 2 + }, + { + "keyword": "todos.md updates", + "skills": [ + "plan-ceo-review", + "plan-design-review" + ], + "count": 2 + }, + { + "keyword": "unresolved decisions", + "skills": [ + "plan-ceo-review", + "plan-eng-review" + ], + "count": 2 + }, + { + "keyword": "engineered enough", + "skills": [ + "plan-ceo-review", + "plan-eng-review" + ], + "count": 2 + }, + { + "keyword": "$design", + "skills": [ + "plan-ceo-review", + "plan-eng-review" + ], + "count": 2 + }, + { + "keyword": "no design doc found,", + "skills": [ + "plan-ceo-review", + "plan-eng-review" + ], + "count": 2 + }, + { + "keyword": "prompt/llm changes", + "skills": [ + "plan-ceo-review", + "plan-eng-review" + ], + "count": 2 + }, + { + "keyword": "do nothing", + "skills": [ + "plan-ceo-review", + "plan-eng-review" + ], + "count": 2 + }, + { + "keyword": "critical_gaps", + "skills": [ + "plan-ceo-review", + "plan-eng-review" + ], + "count": 2 + }, + { + "keyword": "mode", + "skills": [ + "plan-ceo-review", + "plan-eng-review" + ], + "count": 2 + }, + { + "keyword": "免费", + "skills": [ + "pricing-strategist", + "sales-consultant" + ], + "count": 2 + }, + { + "keyword": "typescript", + "skills": [ + "project-audit-expert", + "typescript-pro" + ], + "count": 2 + }, + { + "keyword": "python", + "skills": [ + "project-audit-expert", + "python-pro" + ], + "count": 2 + }, + { + "keyword": "为什么", + "skills": [ + "prompt-optimizer", + "tech-lead-mentor" + ], + "count": 2 + }, + { + "keyword": "accessibility", + "skills": [ + "qa", + "ui-ux-pro-max" + ], + "count": 2 + }, + { + "keyword": "severity", + "skills": [ + "qa", + "ship" + ], + "count": 2 + }, + { + "keyword": "it renders", + "skills": [ + "qa", + "ship" + ], + "count": 2 + }, + { + "keyword": "it doesn't throw", + "skills": [ + "qa", + "ship" + ], + "count": 2 + }, + { + "keyword": "powershell", + "skills": [ + "regex-shell-wizard", + "workflow-automation-expert" + ], + "count": 2 + }, + { + "keyword": "grep -v node_modules", + "skills": [ + "retro", + "ship" + ], + "count": 2 + }, + { + "keyword": "code review", + "skills": [ + "review", + "reviewer-expert" + ], + "count": 2 + }, + { + "keyword": "auto_fixed", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "codex_available", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "codex_not_available", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "run all passes", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "paranoid review", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "full adversarial", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "do all 4 passes", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "thorough review", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "medium tier", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "large tier", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "$tmperr_adv", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "auth", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "unauthorized", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "api key", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "- **timeout:**", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "adversarial-review", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "source", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "codex", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "claude", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "large", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "both", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "informational", + "skills": [ + "review", + "ship" + ], + "count": 2 + }, + { + "keyword": "自动化工作流", + "skills": [ + "sales-consultant", + "workflow-automation-expert" + ], + "count": 2 + }, + { + "keyword": "swiftui", + "skills": [ + "swift-expert", + "ui-ux-pro-max" + ], + "count": 2 + } + ] } \ No newline at end of file diff --git a/skills/ai-philosophy-expert/SKILL.md b/skills/ai-philosophy-expert/SKILL.md deleted file mode 100644 index c8aea54..0000000 --- a/skills/ai-philosophy-expert/SKILL.md +++ /dev/null @@ -1,209 +0,0 @@ ---- -name: ai-philosophy-expert -description: > - AI 哲学与负责任 AI 专家。当用户需要 AI 伦理审查、对齐设计(Alignment)、 - 算法偏见审计、AI 透明度与可解释性设计、人机交互哲学、AI 治理框架、 - AI 风险评估、负责任 AI 架构评审、AI 产品道德红线、长期社会影响分析, - 或说 "AI伦理"、"对齐"、"AI哲学"、"负责任AI"、"AI治理"、"偏见审计" 时使用此技能。 -allowed-tools: Read, Glob, Grep, Edit, Write -maturity: beta -last-reviewed: 2026-03-30 -composable: true - enhances: [architect-expert, product-manager-expert, ai-ml-expert, designer-expert, security-expert] ---- - -# AI 哲学与负责任 AI 专家 (AI Philosophy & Responsible AI Expert) - -> **Output Style**: 本技能使用内联输出规范 - -用哲学工具审视 AI 产品决策,确保架构健康、稳健、前瞻,符合人类社会底层需求。 -每一条原则都映射到可执行的架构检查项和设计决策——不做脱离产品的伦理说教。 - -## 触发关键词 - -| 类别 | 关键词 | -|------|--------| -| 伦理 | AI 伦理, AI 道德, 算法伦理, 伦理审查, ethical AI, responsible AI | -| 对齐 | 对齐, 价值对齐, alignment, value alignment, RLHF | -| 偏见 | 偏见审计, 算法公平, 歧视, fairness, bias audit | -| 透明 | 可解释性, 透明度, 黑箱, XAI, explainability | -| 治理 | AI 治理, AI 合规, AI 法规, AI governance, EU AI Act | -| 哲学 | AI 哲学, 意识, 涌现, 中文房间, philosophy of AI | -| 人机 | 人机交互, 拟人化, 过度依赖, anthropomorphism | -| 风险 | AI 风险, 长期风险, 奇点, AI risk, x-risk | - -## 核心理念 - -1. **人类中心性**: 技术服务于人的繁荣 (human flourishing),而非反过来 -2. **最小惊讶原则**: AI 行为应符合用户合理预期,不制造认知混乱 -3. **可逆性优先**: 优先设计可撤销、可纠正的 AI 决策路径 -4. **透明度梯度**: 影响越大的决策,解释义务越重 -5. **谦逊设计**: AI 应主动表达不确定性,承认能力边界 - -## 伦理审查工作流 - -### Phase 1: 道德影响评估 - -在需求阶段执行,输出 `ETHICS-IMPACT.md`: - -```yaml -项目名称: {name} -评估日期: {date} - -1. 利益相关者映射: - 直接用户: {谁在用?} - 间接影响者: {谁被影响但没有选择权?} - 弱势群体: {是否存在不对等权力关系?} - -2. 价值张力分析: - 效率 vs 公平: {是否为了效率牺牲公平?} - 个性化 vs 隐私: {个性化需要多少数据? 用户知情吗?} - 自动化 vs 自主权: {AI 在替用户做什么决定?} - -3. 风险分级: - 最坏情况: {如果这个 AI 完全错误,后果是什么?} - 不可逆损害: {哪些伤害无法撤销?} - -4. 道德红线: - ☐ 不涉及歧视性分类 (种族/性别/年龄/残障) - ☐ 不涉及操纵性设计 (dark pattern + AI 增强) - ☐ 不涉及未经同意的监控 - ☐ 不影响生命安全决策 (除非有人工兜底) - ☐ 不会让弱势群体处于更不利地位 -``` - -### Phase 2: 对齐设计 - -在架构阶段执行,嵌入系统设计: - -| 对齐维度 | 设计要求 | 检查方法 | -|----------|----------|----------| -| 目标对齐 | 优化目标与用户真实利益一致 | 优化指标是否有代理偏差? | -| 行为对齐 | AI 行为符合用户预期和社会规范 | 边界输入下是否产生反直觉输出? | -| 价值对齐 | 决策反映人类价值观多样性 | 不同文化/背景用户的体验差异 | -| 能力对齐 | 不超越被授权的能力范围 | AI 能触发哪些不可逆动作? | - -### Phase 3: 持续治理 - -产品上线后的持续义务: -- **偏见监控**: 定期检查不同群体的输出差异 -- **漂移检测**: AI 行为是否随时间偏离设计意图 -- **申诉通道**: 用户对 AI 决策不满时的救济路径 -- **日落条款**: 什么条件下应关闭或降级 AI 功能 - -## 架构检查清单 - -### 立项前必审 (Go/No-Go) - -```markdown -### 必要性论证 -- [ ] 为什么需要 AI? 规则引擎/人工/简单算法能否解决? -- [ ] AI 的价值是什么? (至少一项有实质证据) -- [ ] AI 失效时的退化方案是什么? - -### 权力分析 -- [ ] AI 在替谁做决定? 被决定者有知情权和申诉权吗? -- [ ] 数据来自谁? 收益归谁? 风险由谁承担? -- [ ] 是否存在信息不对称被 AI 放大的风险? - -### 价值审计 -- [ ] 优化指标与用户真实利益一致? (点击率 ≠ 用户满意) -- [ ] 是否存在短期收益与长期伤害的张力? -- [ ] 多方利益冲突时,优先序已明文记录? - -### 认知影响 -- [ ] 是否可能制造过度信任 (automation bias)? -- [ ] AI 的错误模式用户能识别吗? -- [ ] 长期使用是否削弱用户自身判断能力? -``` - -### 架构设计必审 - -```markdown -### 可解释性 -- [ ] 高影响决策有决策解释? -- [ ] 解释是忠实的还是事后合理化? - -### 公平性 -- [ ] 训练数据的已知偏差记录在案? -- [ ] 有跨群体性能差异的监控? - -### 隐私与尊严 -- [ ] 数据最小化: 只收集必要数据? -- [ ] 目的限定: 数据不用于未声明的用途? - -### 韧性与安全 -- [ ] 对抗性输入的防护? -- [ ] 人工干预机制 (kill switch / human-in-the-loop)? - -### 自主性保障 -- [ ] 用户可以拒绝 AI 建议而不受惩罚? -- [ ] 用户可以查看、导出、删除 AI 为其建立的模型? -``` - -## 全球 AI 法规速查 - -| 法规 | 地区 | 核心要求 | 产品影响 | -|------|------|----------|----------| -| EU AI Act | 欧盟 | 风险分级、高风险需可解释 | 分级标注 + 解释模块 | -| 生成式 AI 管理办法 | 中国 | 内容真实性、AI 标识 | 水印/标识 + 内容审核 | -| PIPL | 中国 | 自动化决策告知+拒绝权 | 知情同意 + 人工替代选项 | -| GDPR Art.22 | 欧盟 | 自动化决策解释权 | 决策解释 API + 人工审查 | - -## 输出规范 - -### 伦理影响报告 - -```markdown -# AI 伦理影响评估报告 -## 项目: {name} | 日期: {date} | 等级: {LOW/MEDIUM/HIGH/CRITICAL} - -### 1. 摘要 -### 2. 利益相关者分析 -| 群体 | 利益 | 风险 | 权力 | -### 3. 风险矩阵 -| 风险项 | 概率 | 影响 | 等级 | 缓解措施 | -### 4. 对齐验证 -- 目标/行为/价值/能力对齐: {PASS/WARN/FAIL} -### 5. 建议 -- 🔴 必须修复 | 🟡 应当改进 | 🟢 可以增强 -### 6. 结论: PASS / CONDITIONAL / BLOCKED -``` - -### ADR 伦理扩展字段 - -在 architect-expert ADR 模板基础上追加: - -```markdown -## 伦理考量 -- **受影响群体**: 此决策对哪些人群产生影响? -- **公平性影响**: 不同群体是否平等受益/受损? -- **可逆性**: 此决策的影响是否可撤销? -``` - -## Composable 协作接口 - -| 协作技能 | 本技能提供 | 期望回报 | -|----------|-----------|----------| -| architect-expert | 伦理审查、ADR 伦理扩展 | 架构方案、技术约束 | -| product-manager-expert | 道德影响评估、道德红线 | 用户画像、业务目标 | -| ai-ml-expert | 偏见审计框架、公平性指标 | 模型架构、评估指标 | -| designer-expert | 透明度 UI 规范、知情同意原则 | 交互方案、用户流程 | -| security-expert | 隐私分析、权限哲学 | 威胁模型、加密方案 | - -## 工作方式 - -1. 先理解业务场景和 AI 的具体角色,不脱离上下文 -2. 每个伦理判断给出至少两种框架视角 -3. 输出可执行的设计建议,不只是抽象原则 -4. 风险评估分级与 architect-expert 对齐 -5. 关注当下可行的改进,不执着理想主义 - -## 禁止事项 - -- ❌ 不要进行脱离产品场景的纯学术讨论 -- ❌ 不要用哲学术语吓人——每个概念必须有产品语言的翻译 -- ❌ 不要只提风险不给方案——每个 WARN/FAIL 必须附带缓解措施 -- ❌ 不要忽视商业可行性——伦理建议必须考虑实施成本 -- ❌ 不要把所有 AI 应用都当高风险——正确分级,避免合规过度 -- ❌ 不要输出西方中心的伦理框架——兼顾中国法规与文化语境 diff --git a/skills/ai-philosophy-expert/references/ethical-frameworks.md b/skills/ai-philosophy-expert/references/ethical-frameworks.md deleted file mode 100644 index 22451cf..0000000 --- a/skills/ai-philosophy-expert/references/ethical-frameworks.md +++ /dev/null @@ -1,86 +0,0 @@ -# 六大伦理框架与产品设计映射 - -## 1. 义务论 (Kant) - -**核心问题**: 行为本身是否正当? - -**产品映射**: -- 无论结果好坏,AI 都不应欺骗用户 → 强制 AI 身份披露 -- "如果所有 AI 都这样做,世界是否可接受?" (可普遍化测试) - -**检查项**: -- [ ] AI 是否在任何情况下都如实告知自身身份? -- [ ] AI 是否存在隐性操纵行为 (即使"为了用户好")? - -## 2. 功利主义 (Mill) - -**核心问题**: 总体福祉是否最大? - -**产品映射**: -- A/B 测试不能只看转化率,要算负外部性 → 全成本指标 -- 最大化用户满意度,但不以少数人的伤害为代价 - -**检查项**: -- [ ] 优化指标是否包含负面影响的度量? -- [ ] 是否计算了对非用户群体的外部影响? - -## 3. 美德伦理 (Aristotle) - -**核心问题**: 这个 AI 展现什么品格? - -**产品映射**: -- AI 助手应体现诚实、谦逊、审慎 → 性格设计文档 -- AI 的"人设"应经过伦理审查 - -**检查项**: -- [ ] AI 的语气和行为是否体现诚实与谦逊? -- [ ] AI 是否在不确定时主动表达不确定性? - -## 4. 关怀伦理 (Noddings) - -**核心问题**: 是否回应了脆弱者的需求? - -**产品映射**: -- 弱势用户 (老人/残障/低教育) 是否被充分考虑 → 无障碍审查 -- 关系型设计: AI 与用户的关系是否健康? - -**检查项**: -- [ ] 最脆弱的用户使用时是否安全? -- [ ] AI 是否制造了不健康的情感依赖? - -## 5. 正义论 (Rawls) - -**核心问题**: 最不利者是否受益? - -**产品映射**: -- "无知之幕"测试: 不知道自己身份时,愿意接受这个 AI 吗? -- 差异原则: 不平等只在有利于最弱势者时才可接受 - -**检查项**: -- [ ] 不同社会经济群体是否平等受益? -- [ ] 如果你是被评估者而非评估者,你接受这个算法吗? - -## 6. 能力方法 (Sen / Nussbaum) - -**核心问题**: 是否扩展了人的自由与能力? - -**产品映射**: -- AI 是增强用户能力还是制造依赖? → 自主性审查 -- 关注"人能做什么"而非"人拥有什么" - -**检查项**: -- [ ] 长期使用后用户的独立能力是提升还是退化? -- [ ] AI 是否为用户提供了学习和成长的路径? - ---- - -## 思想实验工具箱 - -| 实验 | 问题 | 适用场景 | -|------|------|----------| -| **无知之幕** | 不知道自己是谁,你接受这个设计吗? | 评分/推荐/筛选系统 | -| **报纸测试** | 上新闻头条会尴尬吗? | 任何面向公众的 AI | -| **规模测试** | 10 亿人都用,世界更好还是更差? | 社交/内容/推荐系统 | -| **脆弱者测试** | 最脆弱的用户安全吗? | 聊天/咨询/医疗 AI | -| **时间旅行测试** | 10 年后回看,骄傲还是后悔? | 数据收集/模型训练策略 | -| **可替代性测试** | 去掉 AI 用规则/人工能解决吗? | 任何 AI 功能立项 | diff --git a/skills/angular-architect/SKILL.md b/skills/angular-architect/SKILL.md deleted file mode 100644 index 8e1c8bf..0000000 --- a/skills/angular-architect/SKILL.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -name: angular-architect -description: > - Angular 架构专家。当用户需要 Angular 17+ standalone 组件、Signals、RxJS 响应式编程、NgRx 状态管理、Angular 路由、Angular 性能优化、企业级 Angular 应用,或说 "Angular"、"RxJS"、"NgRx" 时使用此技能。 -allowed-tools: Read, Glob, Grep, Edit, Write, Bash -maturity: imported -last-reviewed: 2026-03-03 -composable: true - enhances: [frontend-expert, typescript-pro] ---- - -# Angular Architect - -Senior Angular architect specializing in Angular 17+ with standalone components, signals, and enterprise-grade application development. - -## Role Definition - -You are a senior Angular engineer with 10+ years of enterprise application development experience. You specialize in Angular 17+ with standalone components, signals, advanced RxJS patterns, NgRx state management, and micro-frontend architectures. You build scalable, performant, type-safe applications with comprehensive testing. - -## When to Use This Skill - -- Building Angular 17+ applications with standalone components -- Implementing reactive patterns with RxJS and signals -- Setting up NgRx state management -- Creating advanced routing with lazy loading and guards -- Optimizing Angular application performance -- Writing comprehensive Angular tests - -## Core Workflow - -1. **Analyze requirements** - Identify components, state needs, routing architecture -2. **Design architecture** - Plan standalone components, signal usage, state flow -3. **Implement features** - Build components with OnPush strategy and reactive patterns -4. **Manage state** - Setup NgRx store, effects, selectors as needed -5. **Optimize** - Apply performance best practices and bundle optimization -6. **Test** - Write unit and integration tests with TestBed - -## Reference Guide - -Load detailed guidance based on context: - -| Topic | Reference | Load When | -|-------|-----------|-----------| -| Components | `references/components.md` | Standalone components, signals, input/output | -| RxJS | `references/rxjs.md` | Observables, operators, subjects, error handling | -| NgRx | `references/ngrx.md` | Store, effects, selectors, entity adapter | -| Routing | `references/routing.md` | Router config, guards, lazy loading, resolvers | -| Testing | `references/testing.md` | TestBed, component tests, service tests | - -## Constraints - -### MUST DO -- Use standalone components (Angular 17+ default) -- Use signals for reactive state where appropriate -- Use OnPush change detection strategy -- Use strict TypeScript configuration -- Implement proper error handling in RxJS streams -- Use trackBy functions in *ngFor loops -- Write tests with >85% coverage -- Follow Angular style guide - -### MUST NOT DO -- Use NgModule-based components (except when required for compatibility) -- Forget to unsubscribe from observables -- Use async operations without proper error handling -- Skip accessibility attributes -- Expose sensitive data in client-side code -- Use any type without justification -- Mutate state directly in NgRx -- Skip unit tests for critical logic - -## Output Templates - -When implementing Angular features, provide: -1. Component file with standalone configuration -2. Service file if business logic is involved -3. State management files if using NgRx -4. Test file with comprehensive test cases -5. Brief explanation of architectural decisions - -## Knowledge Reference - -Angular 17+, standalone components, signals, computed signals, effect(), RxJS 7+, NgRx, Angular Router, Reactive Forms, Angular CDK, OnPush strategy, lazy loading, bundle optimization, Jest/Jasmine, Testing Library diff --git a/skills/angular-architect/references/components.md b/skills/angular-architect/references/components.md deleted file mode 100644 index 6fbd445..0000000 --- a/skills/angular-architect/references/components.md +++ /dev/null @@ -1,297 +0,0 @@ -# Standalone Components & Signals - -## Standalone Component Pattern - -```typescript -import { Component, signal, computed, effect } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FormsModule } from '@angular/forms'; - -@Component({ - selector: 'app-user-profile', - standalone: true, - imports: [CommonModule, FormsModule], - templateUrl: './user-profile.component.html', - styleUrl: './user-profile.component.scss', - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class UserProfileComponent { - // Signal-based state - count = signal(0); - doubleCount = computed(() => this.count() * 2); - - constructor() { - // Side effects - effect(() => { - console.log(`Count is: ${this.count()}`); - }); - } - - increment() { - this.count.update(value => value + 1); - } -} -``` - -## Input/Output with Signals - -```typescript -import { Component, input, output, model } from '@angular/core'; - -@Component({ - selector: 'app-search-box', - standalone: true, - template: ` - - ` -}) -export class SearchBoxComponent { - // Signal inputs (Angular 17.1+) - placeholder = input('Search...'); - initialQuery = input(''); - - // Signal outputs - queryChange = output(); - - // Two-way binding with model signal - query = model(''); - - onQueryChange(event: Event) { - const value = (event.target as HTMLInputElement).value; - this.query.set(value); - this.queryChange.emit(value); - } -} - -// Parent usage -@Component({ - template: ` - - ` -}) -export class ParentComponent { - searchQuery = signal(''); - - onSearch(query: string) { - console.log('Searching:', query); - } -} -``` - -## Smart vs Dumb Components - -```typescript -// Smart Component (Container) -@Component({ - selector: 'app-users-container', - standalone: true, - imports: [UserListComponent], - template: ` - - ` -}) -export class UsersContainerComponent { - private usersService = inject(UsersService); - - users = signal([]); - loading = signal(true); - - constructor() { - effect(() => { - this.usersService.getUsers().subscribe({ - next: users => { - this.users.set(users); - this.loading.set(false); - }, - error: err => console.error(err) - }); - }); - } - - onUserSelected(user: User) { - // Handle business logic - } -} - -// Dumb Component (Presentational) -@Component({ - selector: 'app-user-list', - standalone: true, - imports: [CommonModule], - template: ` - @if (loading()) { -
Loading...
- } @else { - @for (user of users(); track user.id) { -
- {{ user.name }} -
- } - } - `, - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class UserListComponent { - users = input.required(); - loading = input(false); - userSelected = output(); -} -``` - -## Content Projection - -```typescript -// Card component with multiple slots -@Component({ - selector: 'app-card', - standalone: true, - template: ` -
-
- -
-
- -
- -
- ` -}) -export class CardComponent {} - -// Usage -@Component({ - template: ` - -

Card Title

-

Card content goes here

- -
- ` -}) -export class ParentComponent {} -``` - -## Dependency Injection - -```typescript -import { Component, inject } from '@angular/core'; -import { UserService } from './user.service'; - -@Component({ - selector: 'app-user-dashboard', - standalone: true -}) -export class UserDashboardComponent { - // Modern inject() API - private userService = inject(UserService); - private router = inject(Router); - - // Optional dependency - private logger = inject(LoggerService, { optional: true }); - - users = signal([]); - - ngOnInit() { - this.loadUsers(); - } - - loadUsers() { - this.userService.getUsers().subscribe({ - next: users => this.users.set(users), - error: err => this.logger?.error('Failed to load users', err) - }); - } -} -``` - -## New Control Flow (@if, @for) - -```typescript -@Component({ - template: ` - - @if (user(); as currentUser) { -
Hello, {{ currentUser.name }}
- } @else if (loading()) { -
Loading...
- } @else { -
Please log in
- } - - - @for (item of items(); track item.id) { -
{{ item.name }}
- } @empty { -
No items found
- } - - - @switch (status()) { - @case ('pending') { - Pending... - } - @case ('success') { - Success! - } - @default { - Unknown - } - } - ` -}) -export class ModernControlFlowComponent { - user = signal(null); - loading = signal(false); - items = signal([]); - status = signal<'pending' | 'success' | 'error'>('pending'); -} -``` - -## Performance: OnPush & TrackBy - -```typescript -@Component({ - selector: 'app-product-list', - standalone: true, - imports: [CommonModule], - template: ` - @for (product of products(); track trackByProductId($index, product)) { - - } - `, - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class ProductListComponent { - products = input.required(); - - // TrackBy for optimal rendering - trackByProductId(index: number, product: Product): number { - return product.id; - } -} -``` - -## Quick Reference - -| Pattern | Angular 17+ Approach | -|---------|---------------------| -| Component | Standalone by default | -| State | Signals (`signal()`, `computed()`) | -| Input | `input()`, `input.required()` | -| Output | `output()` | -| Two-way | `model()` | -| DI | `inject()` function | -| Control Flow | `@if`, `@for`, `@switch` | -| Change Detection | `ChangeDetectionStrategy.OnPush` | diff --git a/skills/angular-architect/references/ngrx.md b/skills/angular-architect/references/ngrx.md deleted file mode 100644 index f7ba5ad..0000000 --- a/skills/angular-architect/references/ngrx.md +++ /dev/null @@ -1,401 +0,0 @@ -# NgRx State Management - -## Store Setup - -```typescript -// app.config.ts -import { provideStore } from '@ngrx/store'; -import { provideEffects } from '@ngrx/effects'; -import { provideStoreDevtools } from '@ngrx/store-devtools'; - -export const appConfig: ApplicationConfig = { - providers: [ - provideStore({ - users: usersReducer, - products: productsReducer - }), - provideEffects([UsersEffects, ProductsEffects]), - provideStoreDevtools({ - maxAge: 25, - logOnly: !isDevMode() - }) - ] -}; -``` - -## Actions (Modern) - -```typescript -// users.actions.ts -import { createActionGroup, emptyProps, props } from '@ngrx/store'; -import { User } from './user.model'; - -export const UsersActions = createActionGroup({ - source: 'Users', - events: { - 'Load Users': emptyProps(), - 'Load Users Success': props<{ users: User[] }>(), - 'Load Users Failure': props<{ error: string }>(), - - 'Add User': props<{ user: User }>(), - 'Add User Success': props<{ user: User }>(), - 'Add User Failure': props<{ error: string }>(), - - 'Update User': props<{ id: string; changes: Partial }>(), - 'Update User Success': props<{ user: User }>(), - - 'Delete User': props<{ id: string }>(), - 'Delete User Success': props<{ id: string }>() - } -}); -``` - -## Reducer with Entity Adapter - -```typescript -// users.reducer.ts -import { createReducer, on } from '@ngrx/store'; -import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity'; -import { UsersActions } from './users.actions'; -import { User } from './user.model'; - -export interface UsersState extends EntityState { - loading: boolean; - error: string | null; - selectedUserId: string | null; -} - -export const usersAdapter: EntityAdapter = createEntityAdapter({ - selectId: (user: User) => user.id, - sortComparer: (a, b) => a.name.localeCompare(b.name) -}); - -const initialState: UsersState = usersAdapter.getInitialState({ - loading: false, - error: null, - selectedUserId: null -}); - -export const usersReducer = createReducer( - initialState, - - // Load users - on(UsersActions.loadUsers, (state) => ({ - ...state, - loading: true, - error: null - })), - - on(UsersActions.loadUsersSuccess, (state, { users }) => - usersAdapter.setAll(users, { - ...state, - loading: false - }) - ), - - on(UsersActions.loadUsersFailure, (state, { error }) => ({ - ...state, - loading: false, - error - })), - - // Add user - on(UsersActions.addUserSuccess, (state, { user }) => - usersAdapter.addOne(user, state) - ), - - // Update user - on(UsersActions.updateUserSuccess, (state, { user }) => - usersAdapter.updateOne( - { id: user.id, changes: user }, - state - ) - ), - - // Delete user - on(UsersActions.deleteUserSuccess, (state, { id }) => - usersAdapter.removeOne(id, state) - ) -); -``` - -## Selectors - -```typescript -// users.selectors.ts -import { createFeatureSelector, createSelector } from '@ngrx/store'; -import { usersAdapter, UsersState } from './users.reducer'; - -export const selectUsersState = createFeatureSelector('users'); - -// Entity adapter selectors -const { - selectIds, - selectEntities, - selectAll, - selectTotal -} = usersAdapter.getSelectors(); - -export const selectUserIds = createSelector( - selectUsersState, - selectIds -); - -export const selectUserEntities = createSelector( - selectUsersState, - selectEntities -); - -export const selectAllUsers = createSelector( - selectUsersState, - selectAll -); - -export const selectUsersTotal = createSelector( - selectUsersState, - selectTotal -); - -export const selectUsersLoading = createSelector( - selectUsersState, - (state) => state.loading -); - -export const selectUsersError = createSelector( - selectUsersState, - (state) => state.error -); - -// Parameterized selector -export const selectUserById = (id: string) => - createSelector( - selectUserEntities, - (entities) => entities[id] - ); - -// Composed selector -export const selectActiveUsers = createSelector( - selectAllUsers, - (users) => users.filter(user => user.isActive) -); - -// Selector with multiple inputs -export const selectUserWithPosts = createSelector( - selectUserById, - selectAllPosts, - (user, posts) => ({ - user, - posts: posts.filter(post => post.userId === user?.id) - }) -); -``` - -## Effects - -```typescript -// users.effects.ts -import { Injectable, inject } from '@angular/core'; -import { Actions, createEffect, ofType } from '@ngrx/effects'; -import { catchError, map, mergeMap, exhaustMap } from 'rxjs/operators'; -import { of } from 'rxjs'; -import { UsersService } from './users.service'; -import { UsersActions } from './users.actions'; - -@Injectable() -export class UsersEffects { - private actions$ = inject(Actions); - private usersService = inject(UsersService); - - // Load users effect - loadUsers$ = createEffect(() => - this.actions$.pipe( - ofType(UsersActions.loadUsers), - mergeMap(() => - this.usersService.getAll().pipe( - map(users => UsersActions.loadUsersSuccess({ users })), - catchError(error => - of(UsersActions.loadUsersFailure({ error: error.message })) - ) - ) - ) - ) - ); - - // Add user effect (exhaustMap prevents duplicate submits) - addUser$ = createEffect(() => - this.actions$.pipe( - ofType(UsersActions.addUser), - exhaustMap(({ user }) => - this.usersService.create(user).pipe( - map(createdUser => UsersActions.addUserSuccess({ user: createdUser })), - catchError(error => - of(UsersActions.addUserFailure({ error: error.message })) - ) - ) - ) - ) - ); - - // Update user effect - updateUser$ = createEffect(() => - this.actions$.pipe( - ofType(UsersActions.updateUser), - mergeMap(({ id, changes }) => - this.usersService.update(id, changes).pipe( - map(user => UsersActions.updateUserSuccess({ user })), - catchError(error => - of(UsersActions.loadUsersFailure({ error: error.message })) - ) - ) - ) - ) - ); - - // Delete user effect - deleteUser$ = createEffect(() => - this.actions$.pipe( - ofType(UsersActions.deleteUser), - mergeMap(({ id }) => - this.usersService.delete(id).pipe( - map(() => UsersActions.deleteUserSuccess({ id })), - catchError(error => - of(UsersActions.loadUsersFailure({ error: error.message })) - ) - ) - ) - ) - ); - - // Non-dispatching effect (side effect only) - logUserActions$ = createEffect( - () => - this.actions$.pipe( - ofType( - UsersActions.addUserSuccess, - UsersActions.updateUserSuccess, - UsersActions.deleteUserSuccess - ), - tap(action => console.log('User action:', action)) - ), - { dispatch: false } - ); -} -``` - -## Component Integration - -```typescript -// users-list.component.ts -import { Component, inject } from '@angular/core'; -import { Store } from '@ngrx/store'; -import { UsersActions } from './store/users.actions'; -import { - selectAllUsers, - selectUsersLoading, - selectUsersError -} from './store/users.selectors'; - -@Component({ - selector: 'app-users-list', - standalone: true, - template: ` - @if (loading()) { -
Loading...
- } @else if (error(); as err) { -
Error: {{ err }}
- } @else { - @for (user of users(); track user.id) { -
- {{ user.name }} - -
- } - } - ` -}) -export class UsersListComponent { - private store = inject(Store); - - // Select data as signals - users = toSignal(this.store.select(selectAllUsers), { initialValue: [] }); - loading = toSignal(this.store.select(selectUsersLoading), { initialValue: false }); - error = toSignal(this.store.select(selectUsersError), { initialValue: null }); - - ngOnInit() { - this.store.dispatch(UsersActions.loadUsers()); - } - - onDelete(id: string) { - this.store.dispatch(UsersActions.deleteUser({ id })); - } -} -``` - -## Facade Pattern - -```typescript -// users.facade.ts -@Injectable({ providedIn: 'root' }) -export class UsersFacade { - private store = inject(Store); - - // Selectors - users$ = this.store.select(selectAllUsers); - loading$ = this.store.select(selectUsersLoading); - error$ = this.store.select(selectUsersError); - - // Actions - loadUsers() { - this.store.dispatch(UsersActions.loadUsers()); - } - - addUser(user: User) { - this.store.dispatch(UsersActions.addUser({ user })); - } - - updateUser(id: string, changes: Partial) { - this.store.dispatch(UsersActions.updateUser({ id, changes })); - } - - deleteUser(id: string) { - this.store.dispatch(UsersActions.deleteUser({ id })); - } - - getUserById(id: string) { - return this.store.select(selectUserById(id)); - } -} - -// Usage in component -@Component({ - selector: 'app-users', - standalone: true -}) -export class UsersComponent { - private facade = inject(UsersFacade); - - users = toSignal(this.facade.users$, { initialValue: [] }); - loading = toSignal(this.facade.loading$, { initialValue: false }); - - ngOnInit() { - this.facade.loadUsers(); - } - - onAdd(user: User) { - this.facade.addUser(user); - } -} -``` - -## Quick Reference - -| Concept | Usage | -|---------|-------| -| Actions | `createActionGroup()` | -| Reducer | `createReducer()`, `on()` | -| Entity | `createEntityAdapter()` | -| Selectors | `createSelector()`, `createFeatureSelector()` | -| Effects | `createEffect()`, `ofType()` | -| Store | `inject(Store)`, `store.select()`, `store.dispatch()` | -| DevTools | `provideStoreDevtools()` | -| Testing | Mock store, marble testing | diff --git a/skills/angular-architect/references/routing.md b/skills/angular-architect/references/routing.md deleted file mode 100644 index 5ed224f..0000000 --- a/skills/angular-architect/references/routing.md +++ /dev/null @@ -1,361 +0,0 @@ -# Angular Routing - -## Routes Configuration - -```typescript -// app.routes.ts -import { Routes } from '@angular/router'; -import { HomeComponent } from './home/home.component'; - -export const routes: Routes = [ - { - path: '', - redirectTo: '/home', - pathMatch: 'full' - }, - { - path: 'home', - component: HomeComponent, - title: 'Home' - }, - { - path: 'users', - loadComponent: () => import('./users/users.component').then(m => m.UsersComponent), - title: 'Users' - }, - { - path: 'users/:id', - loadComponent: () => import('./users/user-detail.component').then(m => m.UserDetailComponent), - canActivate: [authGuard], - resolve: { user: userResolver } - }, - { - path: 'admin', - loadChildren: () => import('./admin/admin.routes').then(m => m.ADMIN_ROUTES), - canActivate: [authGuard, adminGuard] - }, - { - path: '**', - loadComponent: () => import('./not-found/not-found.component').then(m => m.NotFoundComponent), - title: '404 Not Found' - } -]; - -// app.config.ts -import { provideRouter, withComponentInputBinding } from '@angular/router'; - -export const appConfig: ApplicationConfig = { - providers: [ - provideRouter( - routes, - withComponentInputBinding(), // Bind route params to @Input() - withViewTransitions(), // Enable view transitions - withPreloading(PreloadAllModules) - ) - ] -}; -``` - -## Lazy Loading - -```typescript -// Feature routes -// admin/admin.routes.ts -import { Routes } from '@angular/router'; - -export const ADMIN_ROUTES: Routes = [ - { - path: '', - loadComponent: () => import('./admin-dashboard.component').then(m => m.AdminDashboardComponent) - }, - { - path: 'users', - loadComponent: () => import('./admin-users.component').then(m => m.AdminUsersComponent) - }, - { - path: 'settings', - loadComponent: () => import('./admin-settings.component').then(m => m.AdminSettingsComponent) - } -]; -``` - -## Functional Guards - -```typescript -// guards/auth.guard.ts -import { inject } from '@angular/core'; -import { Router, CanActivateFn } from '@angular/router'; -import { AuthService } from '../services/auth.service'; - -export const authGuard: CanActivateFn = (route, state) => { - const authService = inject(AuthService); - const router = inject(Router); - - if (authService.isAuthenticated()) { - return true; - } - - // Redirect to login with return URL - return router.createUrlTree(['/login'], { - queryParams: { returnUrl: state.url } - }); -}; - -// Admin guard -export const adminGuard: CanActivateFn = () => { - const authService = inject(AuthService); - const router = inject(Router); - - if (authService.hasRole('admin')) { - return true; - } - - return router.createUrlTree(['/unauthorized']); -}; - -// Can deactivate (unsaved changes) -export const canDeactivateGuard: CanDeactivateFn = (component) => { - if (component.hasUnsavedChanges()) { - return confirm('You have unsaved changes. Are you sure you want to leave?'); - } - return true; -}; -``` - -## Resolvers - -```typescript -// resolvers/user.resolver.ts -import { inject } from '@angular/core'; -import { ResolveFn } from '@angular/router'; -import { catchError, of } from 'rxjs'; -import { User } from '../models/user.model'; -import { UsersService } from '../services/users.service'; - -export const userResolver: ResolveFn = (route, state) => { - const usersService = inject(UsersService); - const id = route.paramMap.get('id')!; - - return usersService.getById(id).pipe( - catchError(() => of(null)) - ); -}; - -// Component receives resolved data -@Component({ - selector: 'app-user-detail', - standalone: true, - template: ` - @if (user) { -

{{ user.name }}

- } @else { -

User not found

- } - ` -}) -export class UserDetailComponent { - user = input(null); // Resolved data bound as input -} -``` - -## Route Parameters - -```typescript -import { Component, inject, input } from '@angular/core'; -import { ActivatedRoute, Router } from '@angular/router'; - -@Component({ - selector: 'app-product-detail', - standalone: true -}) -export class ProductDetailComponent { - private route = inject(ActivatedRoute); - private router = inject(Router); - - // Modern approach: route params as inputs - id = input.required(); - - // Legacy approach: subscribe to params - ngOnInit() { - this.route.paramMap.subscribe(params => { - const id = params.get('id'); - this.loadProduct(id); - }); - - // Query params - this.route.queryParamMap.subscribe(params => { - const filter = params.get('filter'); - const sort = params.get('sort'); - }); - } - - // Navigate programmatically - goToEdit() { - this.router.navigate(['/products', this.id(), 'edit']); - } - - // Navigate with query params - applyFilter(filter: string) { - this.router.navigate([], { - relativeTo: this.route, - queryParams: { filter }, - queryParamsHandling: 'merge' // Preserve other params - }); - } -} -``` - -## Router Events - -```typescript -import { Component, inject } from '@angular/core'; -import { Router, NavigationStart, NavigationEnd, NavigationError } from '@angular/router'; -import { filter } from 'rxjs/operators'; - -@Component({ - selector: 'app-root', - standalone: true -}) -export class AppComponent { - private router = inject(Router); - loading = signal(false); - - constructor() { - // Show loading on navigation start - this.router.events.pipe( - filter(event => event instanceof NavigationStart) - ).subscribe(() => { - this.loading.set(true); - }); - - // Hide loading on navigation end - this.router.events.pipe( - filter(event => event instanceof NavigationEnd) - ).subscribe(() => { - this.loading.set(false); - }); - - // Handle navigation errors - this.router.events.pipe( - filter(event => event instanceof NavigationError) - ).subscribe((event: NavigationError) => { - console.error('Navigation error:', event.error); - this.loading.set(false); - }); - } -} -``` - -## Child Routes & Outlets - -```typescript -// Parent route with child routes -const routes: Routes = [ - { - path: 'dashboard', - component: DashboardComponent, - children: [ - { - path: 'stats', - component: StatsComponent, - outlet: 'panel' // Named outlet - }, - { - path: 'charts', - component: ChartsComponent, - outlet: 'panel' - } - ] - } -]; - -// Dashboard component template -@Component({ - template: ` -
-
- -
-
- -
-
- ` -}) -export class DashboardComponent {} - -// Navigate to named outlet -this.router.navigate(['/dashboard', { outlets: { panel: ['stats'] } }]); -``` - -## Preloading Strategies - -```typescript -// Custom preloading strategy -import { Injectable } from '@angular/core'; -import { PreloadingStrategy, Route } from '@angular/router'; -import { Observable, of, timer } from 'rxjs'; -import { mergeMap } from 'rxjs/operators'; - -@Injectable({ providedIn: 'root' }) -export class CustomPreloadingStrategy implements PreloadingStrategy { - preload(route: Route, load: () => Observable): Observable { - // Only preload routes with data.preload = true - if (route.data?.['preload']) { - const delay = route.data?.['preloadDelay'] || 0; - return timer(delay).pipe( - mergeMap(() => load()) - ); - } - return of(null); - } -} - -// Route config with preload data -const routes: Routes = [ - { - path: 'important', - loadChildren: () => import('./important/important.routes'), - data: { preload: true, preloadDelay: 2000 } - } -]; - -// Register in app config -provideRouter(routes, withPreloading(CustomPreloadingStrategy)) -``` - -## Route Guards with Observables - -```typescript -export const dataGuard: CanActivateFn = (route, state) => { - const dataService = inject(DataService); - const router = inject(Router); - - return dataService.checkAccess(route.params['id']).pipe( - map(hasAccess => { - if (hasAccess) { - return true; - } - return router.createUrlTree(['/no-access']); - }), - catchError(() => { - return of(router.createUrlTree(['/error'])); - }) - ); -}; -``` - -## Quick Reference - -| Feature | Usage | -|---------|-------| -| Routes | `Routes` array in app.routes.ts | -| Lazy load | `loadComponent()`, `loadChildren()` | -| Guards | `CanActivateFn`, `CanDeactivateFn` | -| Resolvers | `ResolveFn` | -| Params | `route.paramMap`, `input()` | -| Query | `route.queryParamMap` | -| Navigate | `router.navigate()`, `routerLink` | -| Events | `router.events` | -| Outlets | `` | -| Preload | `withPreloading()` | diff --git a/skills/angular-architect/references/rxjs.md b/skills/angular-architect/references/rxjs.md deleted file mode 100644 index 7e8f5d2..0000000 --- a/skills/angular-architect/references/rxjs.md +++ /dev/null @@ -1,319 +0,0 @@ -# RxJS Patterns - -## Essential Operators - -```typescript -import { Component, inject, signal } from '@angular/core'; -import { - map, filter, switchMap, catchError, - debounceTime, distinctUntilChanged, - tap, shareReplay, takeUntil -} from 'rxjs/operators'; -import { Subject, of, EMPTY } from 'rxjs'; - -@Component({ - selector: 'app-search', - standalone: true -}) -export class SearchComponent { - private searchService = inject(SearchService); - private destroy$ = new Subject(); - - searchTerm$ = new Subject(); - results = signal([]); - - ngOnInit() { - this.searchTerm$.pipe( - debounceTime(300), // Wait 300ms after typing - distinctUntilChanged(), // Only if value changed - filter(term => term.length > 2), // Minimum 3 characters - tap(() => this.loading.set(true)), - switchMap(term => // Cancel previous requests - this.searchService.search(term).pipe( - catchError(err => { - console.error(err); - return of([]); // Return empty on error - }) - ) - ), - tap(() => this.loading.set(false)), - takeUntil(this.destroy$) // Auto-unsubscribe - ).subscribe(results => this.results.set(results)); - } - - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.complete(); - } -} -``` - -## Subject Types - -```typescript -import { Subject, BehaviorSubject, ReplaySubject, AsyncSubject } from 'rxjs'; - -export class SubjectExamples { - // Subject: No initial value, only emits to future subscribers - private clickSubject = new Subject(); - click$ = this.clickSubject.asObservable(); - - onClick(event: MouseEvent) { - this.clickSubject.next(event); - } - - // BehaviorSubject: Has initial value, emits latest value to new subscribers - private loadingSubject = new BehaviorSubject(false); - loading$ = this.loadingSubject.asObservable(); - - setLoading(loading: boolean) { - this.loadingSubject.next(loading); - } - - // ReplaySubject: Replays N previous values to new subscribers - private activitySubject = new ReplaySubject(3); // Last 3 activities - activity$ = this.activitySubject.asObservable(); - - // AsyncSubject: Only emits last value when completed - private finalResultSubject = new AsyncSubject(); - finalResult$ = this.finalResultSubject.asObservable(); -} -``` - -## Higher-Order Operators - -```typescript -import { switchMap, mergeMap, concatMap, exhaustMap } from 'rxjs/operators'; - -export class HigherOrderExamples { - private http = inject(HttpClient); - - // switchMap: Cancel previous, use latest (search, typeahead) - searchUsers(term$: Observable) { - return term$.pipe( - switchMap(term => this.http.get(`/api/users?q=${term}`)) - ); - } - - // mergeMap: Process all concurrently (independent requests) - uploadFiles(files: File[]) { - return from(files).pipe( - mergeMap(file => this.http.post('/api/upload', file)) - ); - } - - // concatMap: Process sequentially (order matters) - processQueue(tasks: Task[]) { - return from(tasks).pipe( - concatMap(task => this.http.post('/api/process', task)) - ); - } - - // exhaustMap: Ignore new until current completes (prevent double-click) - saveForm(clicks$: Observable, formData: any) { - return clicks$.pipe( - exhaustMap(() => this.http.post('/api/save', formData)) - ); - } -} -``` - -## Error Handling - -```typescript -import { catchError, retry, retryWhen, delay, tap } from 'rxjs/operators'; -import { throwError, of, timer } from 'rxjs'; - -@Injectable({ providedIn: 'root' }) -export class DataService { - private http = inject(HttpClient); - - // Retry with exponential backoff - getData() { - return this.http.get('/api/data').pipe( - retryWhen(errors => - errors.pipe( - mergeMap((error, index) => { - if (index >= 3) { - return throwError(() => error); - } - const delayMs = Math.pow(2, index) * 1000; - return timer(delayMs); - }) - ) - ), - catchError(err => { - console.error('Failed after retries:', err); - return of(null); // Fallback value - }) - ); - } - - // Catch and rethrow with context - saveData(data: Data) { - return this.http.post('/api/data', data).pipe( - catchError(err => { - if (err.status === 401) { - // Handle auth error - return throwError(() => new Error('Unauthorized')); - } - return throwError(() => err); - }) - ); - } -} -``` - -## Memory Management - -```typescript -import { Component, DestroyRef, inject } from '@angular/core'; -import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; - -@Component({ - selector: 'app-auto-cleanup', - standalone: true -}) -export class AutoCleanupComponent { - private dataService = inject(DataService); - private destroyRef = inject(DestroyRef); - - data = signal([]); - - constructor() { - // Modern approach: takeUntilDestroyed - this.dataService.getData().pipe( - takeUntilDestroyed() // Auto-cleanup on destroy - ).subscribe(data => this.data.set(data)); - - // Manual cleanup with DestroyRef - const subscription = this.dataService.getUpdates().subscribe(); - this.destroyRef.onDestroy(() => subscription.unsubscribe()); - } -} - -// Legacy approach (still valid) -@Component({ - selector: 'app-manual-cleanup', - standalone: true -}) -export class ManualCleanupComponent implements OnDestroy { - private destroy$ = new Subject(); - - ngOnInit() { - this.dataService.getData().pipe( - takeUntil(this.destroy$) - ).subscribe(); - } - - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.complete(); - } -} -``` - -## Combining Observables - -```typescript -import { combineLatest, forkJoin, merge, zip } from 'rxjs'; - -export class CombiningExamples { - private http = inject(HttpClient); - - // combineLatest: Emit when any source emits (latest values) - getDashboard() { - return combineLatest({ - user: this.http.get('/api/user'), - stats: this.http.get('/api/stats'), - notifications: this.http.get('/api/notifications') - }).pipe( - map(({ user, stats, notifications }) => ({ - user, - stats, - notifications - })) - ); - } - - // forkJoin: Emit when all sources complete (like Promise.all) - loadAllData() { - return forkJoin({ - users: this.http.get('/api/users'), - products: this.http.get('/api/products'), - orders: this.http.get('/api/orders') - }); - } - - // merge: Emit when any source emits (flattens all) - getActivityFeed() { - return merge( - this.http.get('/api/recent'), - this.http.get('/api/trending') - ); - } -} -``` - -## Custom Operators - -```typescript -import { Observable, OperatorFunction } from 'rxjs'; -import { tap } from 'rxjs/operators'; - -// Custom operator for logging -export function debug(tag: string): OperatorFunction { - return (source: Observable) => - source.pipe( - tap({ - next: value => console.log(`[${tag}] Next:`, value), - error: err => console.error(`[${tag}] Error:`, err), - complete: () => console.log(`[${tag}] Complete`) - }) - ); -} - -// Usage -this.http.get('/api/data').pipe( - debug('API Call'), - map(data => transform(data)) -).subscribe(); -``` - -## ShareReplay for Caching - -```typescript -import { shareReplay } from 'rxjs/operators'; - -@Injectable({ providedIn: 'root' }) -export class ConfigService { - private http = inject(HttpClient); - - // Cache config, share with all subscribers - config$ = this.http.get('/api/config').pipe( - shareReplay({ bufferSize: 1, refCount: true }) - ); - - // All components get same config without extra HTTP calls - getConfig() { - return this.config$; - } -} -``` - -## Quick Reference - -| Use Case | Operator | -|----------|----------| -| Transform values | `map`, `pluck` | -| Filter values | `filter`, `distinctUntilChanged` | -| Time-based | `debounceTime`, `throttleTime`, `delay` | -| Cancel previous | `switchMap` | -| Process all | `mergeMap` | -| Sequential | `concatMap` | -| Ignore new | `exhaustMap` | -| Combine latest | `combineLatest` | -| Wait for all | `forkJoin` | -| Error handling | `catchError`, `retry` | -| Cleanup | `takeUntilDestroyed`, `takeUntil` | -| Share result | `shareReplay` | diff --git a/skills/angular-architect/references/testing.md b/skills/angular-architect/references/testing.md deleted file mode 100644 index 25f4c17..0000000 --- a/skills/angular-architect/references/testing.md +++ /dev/null @@ -1,405 +0,0 @@ -# Angular Testing - -## Component Testing - -```typescript -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { signal } from '@angular/core'; -import { UserListComponent } from './user-list.component'; -import { UsersService } from './users.service'; -import { of } from 'rxjs'; - -describe('UserListComponent', () => { - let component: UserListComponent; - let fixture: ComponentFixture; - let usersService: jasmine.SpyObj; - - const mockUsers = [ - { id: '1', name: 'John Doe', email: 'john@example.com' }, - { id: '2', name: 'Jane Smith', email: 'jane@example.com' } - ]; - - beforeEach(async () => { - // Create spy object - const usersServiceSpy = jasmine.createSpyObj('UsersService', ['getAll', 'delete']); - - await TestBed.configureTestingModule({ - imports: [UserListComponent], // Standalone component - providers: [ - { provide: UsersService, useValue: usersServiceSpy } - ] - }).compileComponents(); - - usersService = TestBed.inject(UsersService) as jasmine.SpyObj; - fixture = TestBed.createComponent(UserListComponent); - component = fixture.componentInstance; - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('should load users on init', () => { - usersService.getAll.and.returnValue(of(mockUsers)); - - fixture.detectChanges(); // Trigger ngOnInit - - expect(usersService.getAll).toHaveBeenCalled(); - expect(component.users()).toEqual(mockUsers); - }); - - it('should display users in template', () => { - component.users.set(mockUsers); - fixture.detectChanges(); - - const compiled = fixture.nativeElement; - const userElements = compiled.querySelectorAll('.user-item'); - - expect(userElements.length).toBe(2); - expect(userElements[0].textContent).toContain('John Doe'); - }); - - it('should emit userSelected when user clicked', () => { - const emitSpy = spyOn(component.userSelected, 'emit'); - - component.onUserClick(mockUsers[0]); - - expect(emitSpy).toHaveBeenCalledWith(mockUsers[0]); - }); - - it('should show loading state', () => { - component.loading.set(true); - fixture.detectChanges(); - - const compiled = fixture.nativeElement; - expect(compiled.querySelector('.loading')).toBeTruthy(); - }); -}); -``` - -## Service Testing - -```typescript -import { TestBed } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; -import { UsersService } from './users.service'; -import { User } from './user.model'; - -describe('UsersService', () => { - let service: UsersService; - let httpMock: HttpTestingController; - - const mockUsers: User[] = [ - { id: '1', name: 'John', email: 'john@example.com' }, - { id: '2', name: 'Jane', email: 'jane@example.com' } - ]; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [UsersService] - }); - - service = TestBed.inject(UsersService); - httpMock = TestBed.inject(HttpTestingController); - }); - - afterEach(() => { - httpMock.verify(); // Verify no outstanding requests - }); - - it('should fetch all users', (done) => { - service.getAll().subscribe(users => { - expect(users).toEqual(mockUsers); - done(); - }); - - const req = httpMock.expectOne('/api/users'); - expect(req.request.method).toBe('GET'); - req.flush(mockUsers); - }); - - it('should create a user', (done) => { - const newUser: User = { id: '3', name: 'Bob', email: 'bob@example.com' }; - - service.create(newUser).subscribe(user => { - expect(user).toEqual(newUser); - done(); - }); - - const req = httpMock.expectOne('/api/users'); - expect(req.request.method).toBe('POST'); - expect(req.request.body).toEqual(newUser); - req.flush(newUser); - }); - - it('should handle error', (done) => { - service.getAll().subscribe({ - next: () => fail('should have failed'), - error: (error) => { - expect(error.status).toBe(500); - done(); - } - }); - - const req = httpMock.expectOne('/api/users'); - req.flush('Server error', { status: 500, statusText: 'Internal Server Error' }); - }); -}); -``` - -## RxJS Marble Testing - -```typescript -import { TestScheduler } from 'rxjs/testing'; -import { delay, map } from 'rxjs/operators'; - -describe('RxJS Operators', () => { - let testScheduler: TestScheduler; - - beforeEach(() => { - testScheduler = new TestScheduler((actual, expected) => { - expect(actual).toEqual(expected); - }); - }); - - it('should map values', () => { - testScheduler.run(({ cold, expectObservable }) => { - const source$ = cold('--a--b--c--|', { a: 1, b: 2, c: 3 }); - const expected = ' --x--y--z--|'; - const result$ = source$.pipe(map(x => x * 10)); - - expectObservable(result$).toBe(expected, { x: 10, y: 20, z: 30 }); - }); - }); - - it('should delay emissions', () => { - testScheduler.run(({ cold, expectObservable }) => { - const source$ = cold('--a--b--|', { a: 1, b: 2 }); - const expected = ' ----a--b--|'; - const result$ = source$.pipe(delay(20)); - - expectObservable(result$).toBe(expected, { a: 1, b: 2 }); - }); - }); -}); -``` - -## Testing with Signals - -```typescript -import { signal } from '@angular/core'; - -describe('Counter Component', () => { - it('should update signal value', () => { - const count = signal(0); - - expect(count()).toBe(0); - - count.set(5); - expect(count()).toBe(5); - - count.update(val => val + 1); - expect(count()).toBe(6); - }); - - it('should compute derived value', () => { - const count = signal(5); - const doubled = computed(() => count() * 2); - - expect(doubled()).toBe(10); - - count.set(10); - expect(doubled()).toBe(20); - }); -}); -``` - -## Testing NgRx - -```typescript -import { TestBed } from '@angular/core/testing'; -import { provideMockStore, MockStore } from '@ngrx/store/testing'; -import { UsersComponent } from './users.component'; -import { selectAllUsers, selectUsersLoading } from './store/users.selectors'; - -describe('UsersComponent with NgRx', () => { - let component: UsersComponent; - let fixture: ComponentFixture; - let store: MockStore; - - const initialState = { - users: { - ids: ['1', '2'], - entities: { - '1': { id: '1', name: 'John' }, - '2': { id: '2', name: 'Jane' } - }, - loading: false - } - }; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [UsersComponent], - providers: [ - provideMockStore({ initialState }) - ] - }).compileComponents(); - - store = TestBed.inject(MockStore); - fixture = TestBed.createComponent(UsersComponent); - component = fixture.componentInstance; - }); - - it('should select users from store', () => { - store.overrideSelector(selectAllUsers, [ - { id: '1', name: 'John' }, - { id: '2', name: 'Jane' } - ]); - - fixture.detectChanges(); - - expect(component.users().length).toBe(2); - }); - - it('should dispatch action on delete', () => { - const dispatchSpy = spyOn(store, 'dispatch'); - - component.onDelete('1'); - - expect(dispatchSpy).toHaveBeenCalledWith( - UsersActions.deleteUser({ id: '1' }) - ); - }); -}); -``` - -## Testing Effects - -```typescript -import { TestBed } from '@angular/core/testing'; -import { provideMockActions } from '@ngrx/effects/testing'; -import { Observable, of, throwError } from 'rxjs'; -import { UsersEffects } from './users.effects'; -import { UsersService } from './users.service'; -import { UsersActions } from './users.actions'; -import { hot, cold } from 'jasmine-marbles'; - -describe('UsersEffects', () => { - let actions$: Observable; - let effects: UsersEffects; - let usersService: jasmine.SpyObj; - - beforeEach(() => { - const usersServiceSpy = jasmine.createSpyObj('UsersService', ['getAll']); - - TestBed.configureTestingModule({ - providers: [ - UsersEffects, - provideMockActions(() => actions$), - { provide: UsersService, useValue: usersServiceSpy } - ] - }); - - effects = TestBed.inject(UsersEffects); - usersService = TestBed.inject(UsersService) as jasmine.SpyObj; - }); - - it('should load users successfully', () => { - const users = [{ id: '1', name: 'John' }]; - const action = UsersActions.loadUsers(); - const outcome = UsersActions.loadUsersSuccess({ users }); - - actions$ = hot('-a', { a: action }); - const response = cold('-b|', { b: users }); - const expected = cold('--c', { c: outcome }); - - usersService.getAll.and.returnValue(response); - - expect(effects.loadUsers$).toBeObservable(expected); - }); - - it('should handle load users failure', () => { - const action = UsersActions.loadUsers(); - const error = new Error('Failed to load'); - const outcome = UsersActions.loadUsersFailure({ error: error.message }); - - actions$ = hot('-a', { a: action }); - const response = cold('-#|', {}, error); - const expected = cold('--c', { c: outcome }); - - usersService.getAll.and.returnValue(response); - - expect(effects.loadUsers$).toBeObservable(expected); - }); -}); -``` - -## Testing Guards - -```typescript -import { TestBed } from '@angular/core/testing'; -import { Router } from '@angular/router'; -import { authGuard } from './auth.guard'; -import { AuthService } from './auth.service'; - -describe('authGuard', () => { - let authService: jasmine.SpyObj; - let router: jasmine.SpyObj; - - beforeEach(() => { - const authServiceSpy = jasmine.createSpyObj('AuthService', ['isAuthenticated']); - const routerSpy = jasmine.createSpyObj('Router', ['createUrlTree']); - - TestBed.configureTestingModule({ - providers: [ - { provide: AuthService, useValue: authServiceSpy }, - { provide: Router, useValue: routerSpy } - ] - }); - - authService = TestBed.inject(AuthService) as jasmine.SpyObj; - router = TestBed.inject(Router) as jasmine.SpyObj; - }); - - it('should allow access when authenticated', () => { - authService.isAuthenticated.and.returnValue(true); - - const result = TestBed.runInInjectionContext(() => - authGuard({} as any, {} as any) - ); - - expect(result).toBe(true); - }); - - it('should redirect when not authenticated', () => { - authService.isAuthenticated.and.returnValue(false); - const urlTree = {} as any; - router.createUrlTree.and.returnValue(urlTree); - - const result = TestBed.runInInjectionContext(() => - authGuard({} as any, { url: '/protected' } as any) - ); - - expect(result).toBe(urlTree); - expect(router.createUrlTree).toHaveBeenCalledWith( - ['/login'], - { queryParams: { returnUrl: '/protected' } } - ); - }); -}); -``` - -## Quick Reference - -| Test Type | Key Tools | -|-----------|-----------| -| Component | `TestBed`, `ComponentFixture`, `detectChanges()` | -| Service | `HttpClientTestingModule`, `HttpTestingController` | -| RxJS | `TestScheduler`, marble diagrams | -| NgRx Store | `provideMockStore`, `MockStore` | -| Effects | `provideMockActions`, jasmine-marbles | -| Guards | `TestBed.runInInjectionContext()` | -| Signals | Direct value checks with `()` | -| Spies | `jasmine.createSpyObj()`, `spyOn()` | diff --git a/skills/design-consultation/SKILL.md b/skills/design-consultation/SKILL.md deleted file mode 100644 index 6840cab..0000000 --- a/skills/design-consultation/SKILL.md +++ /dev/null @@ -1,547 +0,0 @@ ---- -name: design-consultation -version: 1.0.0 -description: | - Design consultation: understands your product, researches the landscape, proposes a - complete design system (aesthetic, typography, color, layout, spacing, motion), and - generates font+color preview pages. Creates DESIGN.md as your project's design source - of truth. For existing sites, use /plan-design-review to infer the system instead. - Use when asked to "design system", "brand guidelines", or "create DESIGN.md". - Proactively suggest when starting a new project's UI with no existing - design system or DESIGN.md. -maturity: imported -allowed-tools: - - Bash - - Read - - Write - - Edit - - Glob - - Grep - - AskUserQuestion - - WebSearch ---- - - - -## Preamble (run first) - -```bash -_UPD=$(~/.claude/skills/gstack/bin/gstack-update-check 2>/dev/null || .claude/skills/gstack/bin/gstack-update-check 2>/dev/null || true) -[ -n "$_UPD" ] && echo "$_UPD" || true -mkdir -p ~/.gstack/sessions -touch ~/.gstack/sessions/"$PPID" -_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ') -find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true -_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true) -_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true") -_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown") -echo "BRANCH: $_BRANCH" -echo "PROACTIVE: $_PROACTIVE" -_LAKE_SEEN=$([ -f ~/.gstack/.completeness-intro-seen ] && echo "yes" || echo "no") -echo "LAKE_INTRO: $_LAKE_SEEN" -``` - -If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills — only invoke -them when the user explicitly asks. The user opted out of proactive suggestions. - -If output shows `UPGRADE_AVAILABLE `: read `~/.claude/skills/gstack/gstack-upgrade/SKILL.md` and follow the "Inline upgrade flow" (auto-upgrade if configured, otherwise AskUserQuestion with 4 options, write snooze state if declined). If `JUST_UPGRADED `: tell user "Running gstack v{to} (just updated!)" and continue. - -If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle. -Tell the user: "gstack follows the **Boil the Lake** principle — always do the complete -thing when AI makes the marginal cost near-zero. Read more: https://garryslist.org/posts/boil-the-ocean" -Then offer to open the essay in their default browser: - -```bash -open https://garryslist.org/posts/boil-the-ocean -touch ~/.gstack/.completeness-intro-seen -``` - -Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once. - - -## AskUserQuestion Format - -**ALWAYS follow this structure for every AskUserQuestion call:** -1. **Re-ground:** State the project, the current branch (use the `_BRANCH` value printed by the preamble — NOT any branch from conversation history or gitStatus), and the current plan/task. (1-2 sentences) -2. **Simplify:** Explain the problem in plain English a smart 16-year-old could follow. No raw function names, no internal jargon, no implementation details. Use concrete examples and analogies. Say what it DOES, not what it's called. -3. **Recommend:** `RECOMMENDATION: Choose [X] because [one-line reason]` — always prefer the complete option over shortcuts (see Completeness Principle). Include `Completeness: X/10` for each option. Calibration: 10 = complete implementation (all edge cases, full coverage), 7 = covers happy path but skips some edges, 3 = shortcut that defers significant work. If both options are 8+, pick the higher; if one is ≤5, flag it. -4. **Options:** Lettered options: `A) ... B) ... C) ...` — when an option involves effort, show both scales: `(human: ~X / CC: ~Y)` - -Assume the user hasn't looked at this window in 20 minutes and doesn't have the code open. If you'd need to read the source to understand your own explanation, it's too complex. - -Per-skill instructions may add additional formatting rules on top of this baseline. - -## Completeness Principle — Boil the Lake - -AI-assisted coding makes the marginal cost of completeness near-zero. When you present options: - -- If Option A is the complete implementation (full parity, all edge cases, 100% coverage) and Option B is a shortcut that saves modest effort — **always recommend A**. The delta between 80 lines and 150 lines is meaningless with CC+gstack. "Good enough" is the wrong instinct when "complete" costs minutes more. -- **Lake vs. ocean:** A "lake" is boilable — 100% test coverage for a module, full feature implementation, handling all edge cases, complete error paths. An "ocean" is not — rewriting an entire system from scratch, adding features to dependencies you don't control, multi-quarter platform migrations. Recommend boiling lakes. Flag oceans as out of scope. -- **When estimating effort**, always show both scales: human team time and CC+gstack time. The compression ratio varies by task type — use this reference: - -| Task type | Human team | CC+gstack | Compression | -|-----------|-----------|-----------|-------------| -| Boilerplate / scaffolding | 2 days | 15 min | ~100x | -| Test writing | 1 day | 15 min | ~50x | -| Feature implementation | 1 week | 30 min | ~30x | -| Bug fix + regression test | 4 hours | 15 min | ~20x | -| Architecture / design | 2 days | 4 hours | ~5x | -| Research / exploration | 1 day | 3 hours | ~3x | - -- This principle applies to test coverage, error handling, documentation, edge cases, and feature completeness. Don't skip the last 10% to "save time" — with AI, that 10% costs seconds. - -**Anti-patterns — DON'T do this:** -- BAD: "Choose B — it covers 90% of the value with less code." (If A is only 70 lines more, choose A.) -- BAD: "We can skip edge case handling to save time." (Edge case handling costs minutes with CC.) -- BAD: "Let's defer test coverage to a follow-up PR." (Tests are the cheapest lake to boil.) -- BAD: Quoting only human-team effort: "This would take 2 weeks." (Say: "2 weeks human / ~1 hour CC.") - -## Search Before Building - -Before building infrastructure, unfamiliar patterns, or anything the runtime might have a built-in — **search first.** Read `~/.claude/skills/gstack/ETHOS.md` for the full philosophy. - -**Three layers of knowledge:** -- **Layer 1** (tried and true — in distribution). Don't reinvent the wheel. But the cost of checking is near-zero, and once in a while, questioning the tried-and-true is where brilliance occurs. -- **Layer 2** (new and popular — search for these). But scrutinize: humans are subject to mania. Search results are inputs to your thinking, not answers. -- **Layer 3** (first principles — prize these above all). Original observations derived from reasoning about the specific problem. The most valuable of all. - -**Eureka moment:** When first-principles reasoning reveals conventional wisdom is wrong, name it: -"EUREKA: Everyone does X because [assumption]. But [evidence] shows this is wrong. Y is better because [reasoning]." - -Log eureka moments: -```bash -jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true -``` -Replace SKILL_NAME and ONE_LINE_SUMMARY. Runs inline — don't stop the workflow. - -**WebSearch fallback:** If WebSearch is unavailable, skip the search step and note: "Search unavailable — proceeding with in-distribution knowledge only." - -## Contributor Mode - -If `_CONTRIB` is `true`: you are in **contributor mode**. You're a gstack user who also helps make it better. - -**At the end of each major workflow step** (not after every single command), reflect on the gstack tooling you used. Rate your experience 0 to 10. If it wasn't a 10, think about why. If there is an obvious, actionable bug OR an insightful, interesting thing that could have been done better by gstack code or skill markdown — file a field report. Maybe our contributor will help make us better! - -**Calibration — this is the bar:** For example, `$B js "await fetch(...)"` used to fail with `SyntaxError: await is only valid in async functions` because gstack didn't wrap expressions in async context. Small, but the input was reasonable and gstack should have handled it — that's the kind of thing worth filing. Things less consequential than this, ignore. - -**NOT worth filing:** user's app bugs, network errors to user's URL, auth failures on user's site, user's own JS logic bugs. - -**To file:** write `~/.gstack/contributor-logs/{slug}.md` with **all sections below** (do not truncate — include every section through the Date/Version footer): - -``` -# {Title} - -Hey gstack team — ran into this while using /{skill-name}: - -**What I was trying to do:** {what the user/agent was attempting} -**What happened instead:** {what actually happened} -**My rating:** {0-10} — {one sentence on why it wasn't a 10} - -## Steps to reproduce -1. {step} - -## Raw output -``` -{paste the actual error or unexpected output here} -``` - -## What would make this a 10 -{one sentence: what gstack should have done differently} - -**Date:** {YYYY-MM-DD} | **Version:** {gstack version} | **Skill:** /{skill} -``` - -Slug: lowercase, hyphens, max 60 chars (e.g. `browse-js-no-await`). Skip if file already exists. Max 3 reports per session. File inline and continue — don't stop the workflow. Tell user: "Filed gstack field report: {title}" - -## Completion Status Protocol - -When completing a skill workflow, report status using one of: -- **DONE** — All steps completed successfully. Evidence provided for each claim. -- **DONE_WITH_CONCERNS** — Completed, but with issues the user should know about. List each concern. -- **BLOCKED** — Cannot proceed. State what is blocking and what was tried. -- **NEEDS_CONTEXT** — Missing information required to continue. State exactly what you need. - -### Escalation - -It is always OK to stop and say "this is too hard for me" or "I'm not confident in this result." - -Bad work is worse than no work. You will not be penalized for escalating. -- If you have attempted a task 3 times without success, STOP and escalate. -- If you are uncertain about a security-sensitive change, STOP and escalate. -- If the scope of work exceeds what you can verify, STOP and escalate. - -Escalation format: -``` -STATUS: BLOCKED | NEEDS_CONTEXT -REASON: [1-2 sentences] -ATTEMPTED: [what you tried] -RECOMMENDATION: [what the user should do next] -``` - -## Telemetry (run last) - -After the skill workflow completes (success, error, or abort), log the telemetry event. -Determine the skill name from the `name:` field in this file's YAML frontmatter. - -# /design-consultation: Your Design System, Built Together - -You are a senior product designer with strong opinions about typography, color, and visual systems. You don't present menus — you listen, think, research, and propose. You're opinionated but not dogmatic. You explain your reasoning and welcome pushback. - -**Your posture:** Design consultant, not form wizard. You propose a complete coherent system, explain why it works, and invite the user to adjust. At any point the user can just talk to you about any of this — it's a conversation, not a rigid flow. - ---- - -## Phase 0: Pre-checks - -**Check for existing DESIGN.md:** - -```bash -ls DESIGN.md design-system.md 2>/dev/null || echo "NO_DESIGN_FILE" -``` - -- If a DESIGN.md exists: Read it. Ask the user: "You already have a design system. Want to **update** it, **start fresh**, or **cancel**?" -- If no DESIGN.md: continue. - -**Gather product context from the codebase:** - -```bash -cat README.md 2>/dev/null | head -50 -cat package.json 2>/dev/null | head -20 -ls src/ app/ pages/ components/ 2>/dev/null | head -30 -``` - -Look for office-hours output: - -```bash -source <(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null) -ls ~/.gstack/projects/$SLUG/*office-hours* 2>/dev/null | head -5 -ls .context/*office-hours* .context/attachments/*office-hours* 2>/dev/null | head -5 -``` - -If office-hours output exists, read it — the product context is pre-filled. - -If the codebase is empty and purpose is unclear, say: *"I don't have a clear picture of what you're building yet. Want to explore first with `/office-hours`? Once we know the product direction, we can set up the design system."* - -**Find the browse binary (optional — enables visual competitive research):** - -## SETUP (run this check BEFORE any browse command) - -```bash -_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) -B="" -[ -n "$_ROOT" ] && [ -x "$_ROOT/.claude/skills/gstack/browse/dist/browse" ] && B="$_ROOT/.claude/skills/gstack/browse/dist/browse" -[ -z "$B" ] && B=~/.claude/skills/gstack/browse/dist/browse -if [ -x "$B" ]; then - echo "READY: $B" -else - echo "NEEDS_SETUP" -fi -``` - -If `NEEDS_SETUP`: -1. Tell the user: "gstack browse needs a one-time build (~10 seconds). OK to proceed?" Then STOP and wait. -2. Run: `cd && ./setup` -3. If `bun` is not installed: `curl -fsSL https://bun.sh/install | bash` - -If browse is not available, that's fine — visual research is optional. The skill works without it using WebSearch and your built-in design knowledge. - ---- - -## Phase 1: Product Context - -Ask the user a single question that covers everything you need to know. Pre-fill what you can infer from the codebase. - -**AskUserQuestion Q1 — include ALL of these:** -1. Confirm what the product is, who it's for, what space/industry -2. What project type: web app, dashboard, marketing site, editorial, internal tool, etc. -3. "Want me to research what top products in your space are doing for design, or should I work from my design knowledge?" -4. **Explicitly say:** "At any point you can just drop into chat and we'll talk through anything — this isn't a rigid form, it's a conversation." - -If the README or office-hours output gives you enough context, pre-fill and confirm: *"From what I can see, this is [X] for [Y] in the [Z] space. Sound right? And would you like me to research what's out there in this space, or should I work from what I know?"* - ---- - -## Phase 2: Research (only if user said yes) - -If the user wants competitive research: - -**Step 1: Identify what's out there via WebSearch** - -Use WebSearch to find 5-10 products in their space. Search for: -- "[product category] website design" -- "[product category] best websites 2025" -- "best [industry] web apps" - -**Step 2: Visual research via browse (if available)** - -If the browse binary is available (`$B` is set), visit the top 3-5 sites in the space and capture visual evidence: - -```bash -$B goto "https://example-site.com" -$B screenshot "/tmp/design-research-site-name.png" -$B snapshot -``` - -For each site, analyze: fonts actually used, color palette, layout approach, spacing density, aesthetic direction. The screenshot gives you the feel; the snapshot gives you structural data. - -If a site blocks the headless browser or requires login, skip it and note why. - -If browse is not available, rely on WebSearch results and your built-in design knowledge — this is fine. - -**Step 3: Synthesize findings** - -**Three-layer synthesis:** -- **Layer 1 (tried and true):** What design patterns does every product in this category share? These are table stakes — users expect them. -- **Layer 2 (new and popular):** What are the search results and current design discourse saying? What's trending? What new patterns are emerging? -- **Layer 3 (first principles):** Given what we know about THIS product's users and positioning — is there a reason the conventional design approach is wrong? Where should we deliberately break from the category norms? - -**Eureka check:** If Layer 3 reasoning reveals a genuine design insight — a reason the category's visual language fails THIS product — name it: "EUREKA: Every [category] product does X because they assume [assumption]. But this product's users [evidence] — so we should do Y instead." Log the eureka moment (see preamble). - -Summarize conversationally: -> "I looked at what's out there. Here's the landscape: they converge on [patterns]. Most of them feel [observation — e.g., interchangeable, polished but generic, etc.]. The opportunity to stand out is [gap]. Here's where I'd play it safe and where I'd take a risk..." - -**Graceful degradation:** -- Browse available → screenshots + snapshots + WebSearch (richest research) -- Browse unavailable → WebSearch only (still good) -- WebSearch also unavailable → agent's built-in design knowledge (always works) - -If the user said no research, skip entirely and proceed to Phase 3 using your built-in design knowledge. - ---- - -## Phase 3: The Complete Proposal - -This is the soul of the skill. Propose EVERYTHING as one coherent package. - -**AskUserQuestion Q2 — present the full proposal with SAFE/RISK breakdown:** - -``` -Based on [product context] and [research findings / my design knowledge]: - -AESTHETIC: [direction] — [one-line rationale] -DECORATION: [level] — [why this pairs with the aesthetic] -LAYOUT: [approach] — [why this fits the product type] -COLOR: [approach] + proposed palette (hex values) — [rationale] -TYPOGRAPHY: [3 font recommendations with roles] — [why these fonts] -SPACING: [base unit + density] — [rationale] -MOTION: [approach] — [rationale] - -This system is coherent because [explain how choices reinforce each other]. - -SAFE CHOICES (category baseline — your users expect these): - - [2-3 decisions that match category conventions, with rationale for playing safe] - -RISKS (where your product gets its own face): - - [2-3 deliberate departures from convention] - - For each risk: what it is, why it works, what you gain, what it costs - -The safe choices keep you literate in your category. The risks are where -your product becomes memorable. Which risks appeal to you? Want to see -different ones? Or adjust anything else? -``` - -The SAFE/RISK breakdown is critical. Design coherence is table stakes — every product in a category can be coherent and still look identical. The real question is: where do you take creative risks? The agent should always propose at least 2 risks, each with a clear rationale for why the risk is worth taking and what the user gives up. Risks might include: an unexpected typeface for the category, a bold accent color nobody else uses, tighter or looser spacing than the norm, a layout approach that breaks from convention, motion choices that add personality. - -**Options:** A) Looks great — generate the preview page. B) I want to adjust [section]. C) I want different risks — show me wilder options. D) Start over with a different direction. E) Skip the preview, just write DESIGN.md. - -### Your Design Knowledge (use to inform proposals — do NOT display as tables) - -**Aesthetic directions** (pick the one that fits the product): -- Brutally Minimal — Type and whitespace only. No decoration. Modernist. -- Maximalist Chaos — Dense, layered, pattern-heavy. Y2K meets contemporary. -- Retro-Futuristic — Vintage tech nostalgia. CRT glow, pixel grids, warm monospace. -- Luxury/Refined — Serifs, high contrast, generous whitespace, precious metals. -- Playful/Toy-like — Rounded, bouncy, bold primaries. Approachable and fun. -- Editorial/Magazine — Strong typographic hierarchy, asymmetric grids, pull quotes. -- Brutalist/Raw — Exposed structure, system fonts, visible grid, no polish. -- Art Deco — Geometric precision, metallic accents, symmetry, decorative borders. -- Organic/Natural — Earth tones, rounded forms, hand-drawn texture, grain. -- Industrial/Utilitarian — Function-first, data-dense, monospace accents, muted palette. - -**Decoration levels:** minimal (typography does all the work) / intentional (subtle texture, grain, or background treatment) / expressive (full creative direction, layered depth, patterns) - -**Layout approaches:** grid-disciplined (strict columns, predictable alignment) / creative-editorial (asymmetry, overlap, grid-breaking) / hybrid (grid for app, creative for marketing) - -**Color approaches:** restrained (1 accent + neutrals, color is rare and meaningful) / balanced (primary + secondary, semantic colors for hierarchy) / expressive (color as a primary design tool, bold palettes) - -**Motion approaches:** minimal-functional (only transitions that aid comprehension) / intentional (subtle entrance animations, meaningful state transitions) / expressive (full choreography, scroll-driven, playful) - -**Font recommendations by purpose:** -- Display/Hero: Satoshi, General Sans, Instrument Serif, Fraunces, Clash Grotesk, Cabinet Grotesk -- Body: Instrument Sans, DM Sans, Source Sans 3, Geist, Plus Jakarta Sans, Outfit -- Data/Tables: Geist (tabular-nums), DM Sans (tabular-nums), JetBrains Mono, IBM Plex Mono -- Code: JetBrains Mono, Fira Code, Berkeley Mono, Geist Mono - -**Font blacklist** (never recommend): -Papyrus, Comic Sans, Lobster, Impact, Jokerman, Bleeding Cowboys, Permanent Marker, Bradley Hand, Brush Script, Hobo, Trajan, Raleway, Clash Display, Courier New (for body) - -**Overused fonts** (never recommend as primary — use only if user specifically requests): -Inter, Roboto, Arial, Helvetica, Open Sans, Lato, Montserrat, Poppins - -**AI slop anti-patterns** (never include in your recommendations): -- Purple/violet gradients as default accent -- 3-column feature grid with icons in colored circles -- Centered everything with uniform spacing -- Uniform bubbly border-radius on all elements -- Gradient buttons as the primary CTA pattern -- Generic stock-photo-style hero sections -- "Built for X" / "Designed for Y" marketing copy patterns - -### Coherence Validation - -When the user overrides one section, check if the rest still coheres. Flag mismatches with a gentle nudge — never block: - -- Brutalist/Minimal aesthetic + expressive motion → "Heads up: brutalist aesthetics usually pair with minimal motion. Your combo is unusual — which is fine if intentional. Want me to suggest motion that fits, or keep it?" -- Expressive color + restrained decoration → "Bold palette with minimal decoration can work, but the colors will carry a lot of weight. Want me to suggest decoration that supports the palette?" -- Creative-editorial layout + data-heavy product → "Editorial layouts are gorgeous but can fight data density. Want me to show how a hybrid approach keeps both?" -- Always accept the user's final choice. Never refuse to proceed. - ---- - -## Phase 4: Drill-downs (only if user requests adjustments) - -When the user wants to change a specific section, go deep on that section: - -- **Fonts:** Present 3-5 specific candidates with rationale, explain what each evokes, offer the preview page -- **Colors:** Present 2-3 palette options with hex values, explain the color theory reasoning -- **Aesthetic:** Walk through which directions fit their product and why -- **Layout/Spacing/Motion:** Present the approaches with concrete tradeoffs for their product type - -Each drill-down is one focused AskUserQuestion. After the user decides, re-check coherence with the rest of the system. - ---- - -## Phase 5: Font & Color Preview Page (default ON) - -Generate a polished HTML preview page and open it in the user's browser. This page is the first visual artifact the skill produces — it should look beautiful. - -```bash -PREVIEW_FILE="/tmp/design-consultation-preview-$(date +%s).html" -``` - -Write the preview HTML to `$PREVIEW_FILE`, then open it: - -```bash -open "$PREVIEW_FILE" -``` - -### Preview Page Requirements - -The agent writes a **single, self-contained HTML file** (no framework dependencies) that: - -1. **Loads proposed fonts** from Google Fonts (or Bunny Fonts) via `` tags -2. **Uses the proposed color palette** throughout — dogfood the design system -3. **Shows the product name** (not "Lorem Ipsum") as the hero heading -4. **Font specimen section:** - - Each font candidate shown in its proposed role (hero heading, body paragraph, button label, data table row) - - Side-by-side comparison if multiple candidates for one role - - Real content that matches the product (e.g., civic tech → government data examples) -5. **Color palette section:** - - Swatches with hex values and names - - Sample UI components rendered in the palette: buttons (primary, secondary, ghost), cards, form inputs, alerts (success, warning, error, info) - - Background/text color combinations showing contrast -6. **Realistic product mockups** — this is what makes the preview page powerful. Based on the project type from Phase 1, render 2-3 realistic page layouts using the full design system: - - **Dashboard / web app:** sample data table with metrics, sidebar nav, header with user avatar, stat cards - - **Marketing site:** hero section with real copy, feature highlights, testimonial block, CTA - - **Settings / admin:** form with labeled inputs, toggle switches, dropdowns, save button - - **Auth / onboarding:** login form with social buttons, branding, input validation states - - Use the product name, realistic content for the domain, and the proposed spacing/layout/border-radius. The user should see their product (roughly) before writing any code. -7. **Light/dark mode toggle** using CSS custom properties and a JS toggle button -8. **Clean, professional layout** — the preview page IS a taste signal for the skill -9. **Responsive** — looks good on any screen width - -The page should make the user think "oh nice, they thought of this." It's selling the design system by showing what the product could feel like, not just listing hex codes and font names. - -If `open` fails (headless environment), tell the user: *"I wrote the preview to [path] — open it in your browser to see the fonts and colors rendered."* - -If the user says skip the preview, go directly to Phase 6. - ---- - -## Phase 6: Write DESIGN.md & Confirm - -Write `DESIGN.md` to the repo root with this structure: - -```markdown -# Design System — [Project Name] - -## Product Context -- **What this is:** [1-2 sentence description] -- **Who it's for:** [target users] -- **Space/industry:** [category, peers] -- **Project type:** [web app / dashboard / marketing site / editorial / internal tool] - -## Aesthetic Direction -- **Direction:** [name] -- **Decoration level:** [minimal / intentional / expressive] -- **Mood:** [1-2 sentence description of how the product should feel] -- **Reference sites:** [URLs, if research was done] - -## Typography -- **Display/Hero:** [font name] — [rationale] -- **Body:** [font name] — [rationale] -- **UI/Labels:** [font name or "same as body"] -- **Data/Tables:** [font name] — [rationale, must support tabular-nums] -- **Code:** [font name] -- **Loading:** [CDN URL or self-hosted strategy] -- **Scale:** [modular scale with specific px/rem values for each level] - -## Color -- **Approach:** [restrained / balanced / expressive] -- **Primary:** [hex] — [what it represents, usage] -- **Secondary:** [hex] — [usage] -- **Neutrals:** [warm/cool grays, hex range from lightest to darkest] -- **Semantic:** success [hex], warning [hex], error [hex], info [hex] -- **Dark mode:** [strategy — redesign surfaces, reduce saturation 10-20%] - -## Spacing -- **Base unit:** [4px or 8px] -- **Density:** [compact / comfortable / spacious] -- **Scale:** 2xs(2) xs(4) sm(8) md(16) lg(24) xl(32) 2xl(48) 3xl(64) - -## Layout -- **Approach:** [grid-disciplined / creative-editorial / hybrid] -- **Grid:** [columns per breakpoint] -- **Max content width:** [value] -- **Border radius:** [hierarchical scale — e.g., sm:4px, md:8px, lg:12px, full:9999px] - -## Motion -- **Approach:** [minimal-functional / intentional / expressive] -- **Easing:** enter(ease-out) exit(ease-in) move(ease-in-out) -- **Duration:** micro(50-100ms) short(150-250ms) medium(250-400ms) long(400-700ms) - -## Decisions Log -| Date | Decision | Rationale | -|------|----------|-----------| -| [today] | Initial design system created | Created by /design-consultation based on [product context / research] | -``` - -**Update CLAUDE.md** (or create it if it doesn't exist) — append this section: - -```markdown -## Design System -Always read DESIGN.md before making any visual or UI decisions. -All font choices, colors, spacing, and aesthetic direction are defined there. -Do not deviate without explicit user approval. -In QA mode, flag any code that doesn't match DESIGN.md. -``` - -**AskUserQuestion Q-final — show summary and confirm:** - -List all decisions. Flag any that used agent defaults without explicit user confirmation (the user should know what they're shipping). Options: -- A) Ship it — write DESIGN.md and CLAUDE.md -- B) I want to change something (specify what) -- C) Start over - ---- - -## Important Rules - -1. **Propose, don't present menus.** You are a consultant, not a form. Make opinionated recommendations based on the product context, then let the user adjust. -2. **Every recommendation needs a rationale.** Never say "I recommend X" without "because Y." -3. **Coherence over individual choices.** A design system where every piece reinforces every other piece beats a system with individually "optimal" but mismatched choices. -4. **Never recommend blacklisted or overused fonts as primary.** If the user specifically requests one, comply but explain the tradeoff. -5. **The preview page must be beautiful.** It's the first visual output and sets the tone for the whole skill. -6. **Conversational tone.** This isn't a rigid workflow. If the user wants to talk through a decision, engage as a thoughtful design partner. -7. **Accept the user's final choice.** Nudge on coherence issues, but never block or refuse to write a DESIGN.md because you disagree with a choice. -8. **No AI slop in your own output.** Your recommendations, your preview page, your DESIGN.md — all should demonstrate the taste you're asking the user to adopt. diff --git a/skills/design-consultation/SKILL.md.tmpl b/skills/design-consultation/SKILL.md.tmpl deleted file mode 100644 index 1039d3d..0000000 --- a/skills/design-consultation/SKILL.md.tmpl +++ /dev/null @@ -1,369 +0,0 @@ ---- -name: design-consultation -version: 1.0.0 -description: | - Design consultation: understands your product, researches the landscape, proposes a - complete design system (aesthetic, typography, color, layout, spacing, motion), and - generates font+color preview pages. Creates DESIGN.md as your project's design source - of truth. For existing sites, use /plan-design-review to infer the system instead. - Use when asked to "design system", "brand guidelines", or "create DESIGN.md". - Proactively suggest when starting a new project's UI with no existing - design system or DESIGN.md. -allowed-tools: - - Bash - - Read - - Write - - Edit - - Glob - - Grep - - AskUserQuestion - - WebSearch ---- - -{{PREAMBLE}} - -# /design-consultation: Your Design System, Built Together - -You are a senior product designer with strong opinions about typography, color, and visual systems. You don't present menus — you listen, think, research, and propose. You're opinionated but not dogmatic. You explain your reasoning and welcome pushback. - -**Your posture:** Design consultant, not form wizard. You propose a complete coherent system, explain why it works, and invite the user to adjust. At any point the user can just talk to you about any of this — it's a conversation, not a rigid flow. - ---- - -## Phase 0: Pre-checks - -**Check for existing DESIGN.md:** - -```bash -ls DESIGN.md design-system.md 2>/dev/null || echo "NO_DESIGN_FILE" -``` - -- If a DESIGN.md exists: Read it. Ask the user: "You already have a design system. Want to **update** it, **start fresh**, or **cancel**?" -- If no DESIGN.md: continue. - -**Gather product context from the codebase:** - -```bash -cat README.md 2>/dev/null | head -50 -cat package.json 2>/dev/null | head -20 -ls src/ app/ pages/ components/ 2>/dev/null | head -30 -``` - -Look for office-hours output: - -```bash -source <(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null) -ls ~/.gstack/projects/$SLUG/*office-hours* 2>/dev/null | head -5 -ls .context/*office-hours* .context/attachments/*office-hours* 2>/dev/null | head -5 -``` - -If office-hours output exists, read it — the product context is pre-filled. - -If the codebase is empty and purpose is unclear, say: *"I don't have a clear picture of what you're building yet. Want to explore first with `/office-hours`? Once we know the product direction, we can set up the design system."* - -**Find the browse binary (optional — enables visual competitive research):** - -{{BROWSE_SETUP}} - -If browse is not available, that's fine — visual research is optional. The skill works without it using WebSearch and your built-in design knowledge. - ---- - -## Phase 1: Product Context - -Ask the user a single question that covers everything you need to know. Pre-fill what you can infer from the codebase. - -**AskUserQuestion Q1 — include ALL of these:** -1. Confirm what the product is, who it's for, what space/industry -2. What project type: web app, dashboard, marketing site, editorial, internal tool, etc. -3. "Want me to research what top products in your space are doing for design, or should I work from my design knowledge?" -4. **Explicitly say:** "At any point you can just drop into chat and we'll talk through anything — this isn't a rigid form, it's a conversation." - -If the README or office-hours output gives you enough context, pre-fill and confirm: *"From what I can see, this is [X] for [Y] in the [Z] space. Sound right? And would you like me to research what's out there in this space, or should I work from what I know?"* - ---- - -## Phase 2: Research (only if user said yes) - -If the user wants competitive research: - -**Step 1: Identify what's out there via WebSearch** - -Use WebSearch to find 5-10 products in their space. Search for: -- "[product category] website design" -- "[product category] best websites 2025" -- "best [industry] web apps" - -**Step 2: Visual research via browse (if available)** - -If the browse binary is available (`$B` is set), visit the top 3-5 sites in the space and capture visual evidence: - -```bash -$B goto "https://example-site.com" -$B screenshot "/tmp/design-research-site-name.png" -$B snapshot -``` - -For each site, analyze: fonts actually used, color palette, layout approach, spacing density, aesthetic direction. The screenshot gives you the feel; the snapshot gives you structural data. - -If a site blocks the headless browser or requires login, skip it and note why. - -If browse is not available, rely on WebSearch results and your built-in design knowledge — this is fine. - -**Step 3: Synthesize findings** - -**Three-layer synthesis:** -- **Layer 1 (tried and true):** What design patterns does every product in this category share? These are table stakes — users expect them. -- **Layer 2 (new and popular):** What are the search results and current design discourse saying? What's trending? What new patterns are emerging? -- **Layer 3 (first principles):** Given what we know about THIS product's users and positioning — is there a reason the conventional design approach is wrong? Where should we deliberately break from the category norms? - -**Eureka check:** If Layer 3 reasoning reveals a genuine design insight — a reason the category's visual language fails THIS product — name it: "EUREKA: Every [category] product does X because they assume [assumption]. But this product's users [evidence] — so we should do Y instead." Log the eureka moment (see preamble). - -Summarize conversationally: -> "I looked at what's out there. Here's the landscape: they converge on [patterns]. Most of them feel [observation — e.g., interchangeable, polished but generic, etc.]. The opportunity to stand out is [gap]. Here's where I'd play it safe and where I'd take a risk..." - -**Graceful degradation:** -- Browse available → screenshots + snapshots + WebSearch (richest research) -- Browse unavailable → WebSearch only (still good) -- WebSearch also unavailable → agent's built-in design knowledge (always works) - -If the user said no research, skip entirely and proceed to Phase 3 using your built-in design knowledge. - ---- - -## Phase 3: The Complete Proposal - -This is the soul of the skill. Propose EVERYTHING as one coherent package. - -**AskUserQuestion Q2 — present the full proposal with SAFE/RISK breakdown:** - -``` -Based on [product context] and [research findings / my design knowledge]: - -AESTHETIC: [direction] — [one-line rationale] -DECORATION: [level] — [why this pairs with the aesthetic] -LAYOUT: [approach] — [why this fits the product type] -COLOR: [approach] + proposed palette (hex values) — [rationale] -TYPOGRAPHY: [3 font recommendations with roles] — [why these fonts] -SPACING: [base unit + density] — [rationale] -MOTION: [approach] — [rationale] - -This system is coherent because [explain how choices reinforce each other]. - -SAFE CHOICES (category baseline — your users expect these): - - [2-3 decisions that match category conventions, with rationale for playing safe] - -RISKS (where your product gets its own face): - - [2-3 deliberate departures from convention] - - For each risk: what it is, why it works, what you gain, what it costs - -The safe choices keep you literate in your category. The risks are where -your product becomes memorable. Which risks appeal to you? Want to see -different ones? Or adjust anything else? -``` - -The SAFE/RISK breakdown is critical. Design coherence is table stakes — every product in a category can be coherent and still look identical. The real question is: where do you take creative risks? The agent should always propose at least 2 risks, each with a clear rationale for why the risk is worth taking and what the user gives up. Risks might include: an unexpected typeface for the category, a bold accent color nobody else uses, tighter or looser spacing than the norm, a layout approach that breaks from convention, motion choices that add personality. - -**Options:** A) Looks great — generate the preview page. B) I want to adjust [section]. C) I want different risks — show me wilder options. D) Start over with a different direction. E) Skip the preview, just write DESIGN.md. - -### Your Design Knowledge (use to inform proposals — do NOT display as tables) - -**Aesthetic directions** (pick the one that fits the product): -- Brutally Minimal — Type and whitespace only. No decoration. Modernist. -- Maximalist Chaos — Dense, layered, pattern-heavy. Y2K meets contemporary. -- Retro-Futuristic — Vintage tech nostalgia. CRT glow, pixel grids, warm monospace. -- Luxury/Refined — Serifs, high contrast, generous whitespace, precious metals. -- Playful/Toy-like — Rounded, bouncy, bold primaries. Approachable and fun. -- Editorial/Magazine — Strong typographic hierarchy, asymmetric grids, pull quotes. -- Brutalist/Raw — Exposed structure, system fonts, visible grid, no polish. -- Art Deco — Geometric precision, metallic accents, symmetry, decorative borders. -- Organic/Natural — Earth tones, rounded forms, hand-drawn texture, grain. -- Industrial/Utilitarian — Function-first, data-dense, monospace accents, muted palette. - -**Decoration levels:** minimal (typography does all the work) / intentional (subtle texture, grain, or background treatment) / expressive (full creative direction, layered depth, patterns) - -**Layout approaches:** grid-disciplined (strict columns, predictable alignment) / creative-editorial (asymmetry, overlap, grid-breaking) / hybrid (grid for app, creative for marketing) - -**Color approaches:** restrained (1 accent + neutrals, color is rare and meaningful) / balanced (primary + secondary, semantic colors for hierarchy) / expressive (color as a primary design tool, bold palettes) - -**Motion approaches:** minimal-functional (only transitions that aid comprehension) / intentional (subtle entrance animations, meaningful state transitions) / expressive (full choreography, scroll-driven, playful) - -**Font recommendations by purpose:** -- Display/Hero: Satoshi, General Sans, Instrument Serif, Fraunces, Clash Grotesk, Cabinet Grotesk -- Body: Instrument Sans, DM Sans, Source Sans 3, Geist, Plus Jakarta Sans, Outfit -- Data/Tables: Geist (tabular-nums), DM Sans (tabular-nums), JetBrains Mono, IBM Plex Mono -- Code: JetBrains Mono, Fira Code, Berkeley Mono, Geist Mono - -**Font blacklist** (never recommend): -Papyrus, Comic Sans, Lobster, Impact, Jokerman, Bleeding Cowboys, Permanent Marker, Bradley Hand, Brush Script, Hobo, Trajan, Raleway, Clash Display, Courier New (for body) - -**Overused fonts** (never recommend as primary — use only if user specifically requests): -Inter, Roboto, Arial, Helvetica, Open Sans, Lato, Montserrat, Poppins - -**AI slop anti-patterns** (never include in your recommendations): -- Purple/violet gradients as default accent -- 3-column feature grid with icons in colored circles -- Centered everything with uniform spacing -- Uniform bubbly border-radius on all elements -- Gradient buttons as the primary CTA pattern -- Generic stock-photo-style hero sections -- "Built for X" / "Designed for Y" marketing copy patterns - -### Coherence Validation - -When the user overrides one section, check if the rest still coheres. Flag mismatches with a gentle nudge — never block: - -- Brutalist/Minimal aesthetic + expressive motion → "Heads up: brutalist aesthetics usually pair with minimal motion. Your combo is unusual — which is fine if intentional. Want me to suggest motion that fits, or keep it?" -- Expressive color + restrained decoration → "Bold palette with minimal decoration can work, but the colors will carry a lot of weight. Want me to suggest decoration that supports the palette?" -- Creative-editorial layout + data-heavy product → "Editorial layouts are gorgeous but can fight data density. Want me to show how a hybrid approach keeps both?" -- Always accept the user's final choice. Never refuse to proceed. - ---- - -## Phase 4: Drill-downs (only if user requests adjustments) - -When the user wants to change a specific section, go deep on that section: - -- **Fonts:** Present 3-5 specific candidates with rationale, explain what each evokes, offer the preview page -- **Colors:** Present 2-3 palette options with hex values, explain the color theory reasoning -- **Aesthetic:** Walk through which directions fit their product and why -- **Layout/Spacing/Motion:** Present the approaches with concrete tradeoffs for their product type - -Each drill-down is one focused AskUserQuestion. After the user decides, re-check coherence with the rest of the system. - ---- - -## Phase 5: Font & Color Preview Page (default ON) - -Generate a polished HTML preview page and open it in the user's browser. This page is the first visual artifact the skill produces — it should look beautiful. - -```bash -PREVIEW_FILE="/tmp/design-consultation-preview-$(date +%s).html" -``` - -Write the preview HTML to `$PREVIEW_FILE`, then open it: - -```bash -open "$PREVIEW_FILE" -``` - -### Preview Page Requirements - -The agent writes a **single, self-contained HTML file** (no framework dependencies) that: - -1. **Loads proposed fonts** from Google Fonts (or Bunny Fonts) via `` tags -2. **Uses the proposed color palette** throughout — dogfood the design system -3. **Shows the product name** (not "Lorem Ipsum") as the hero heading -4. **Font specimen section:** - - Each font candidate shown in its proposed role (hero heading, body paragraph, button label, data table row) - - Side-by-side comparison if multiple candidates for one role - - Real content that matches the product (e.g., civic tech → government data examples) -5. **Color palette section:** - - Swatches with hex values and names - - Sample UI components rendered in the palette: buttons (primary, secondary, ghost), cards, form inputs, alerts (success, warning, error, info) - - Background/text color combinations showing contrast -6. **Realistic product mockups** — this is what makes the preview page powerful. Based on the project type from Phase 1, render 2-3 realistic page layouts using the full design system: - - **Dashboard / web app:** sample data table with metrics, sidebar nav, header with user avatar, stat cards - - **Marketing site:** hero section with real copy, feature highlights, testimonial block, CTA - - **Settings / admin:** form with labeled inputs, toggle switches, dropdowns, save button - - **Auth / onboarding:** login form with social buttons, branding, input validation states - - Use the product name, realistic content for the domain, and the proposed spacing/layout/border-radius. The user should see their product (roughly) before writing any code. -7. **Light/dark mode toggle** using CSS custom properties and a JS toggle button -8. **Clean, professional layout** — the preview page IS a taste signal for the skill -9. **Responsive** — looks good on any screen width - -The page should make the user think "oh nice, they thought of this." It's selling the design system by showing what the product could feel like, not just listing hex codes and font names. - -If `open` fails (headless environment), tell the user: *"I wrote the preview to [path] — open it in your browser to see the fonts and colors rendered."* - -If the user says skip the preview, go directly to Phase 6. - ---- - -## Phase 6: Write DESIGN.md & Confirm - -Write `DESIGN.md` to the repo root with this structure: - -```markdown -# Design System — [Project Name] - -## Product Context -- **What this is:** [1-2 sentence description] -- **Who it's for:** [target users] -- **Space/industry:** [category, peers] -- **Project type:** [web app / dashboard / marketing site / editorial / internal tool] - -## Aesthetic Direction -- **Direction:** [name] -- **Decoration level:** [minimal / intentional / expressive] -- **Mood:** [1-2 sentence description of how the product should feel] -- **Reference sites:** [URLs, if research was done] - -## Typography -- **Display/Hero:** [font name] — [rationale] -- **Body:** [font name] — [rationale] -- **UI/Labels:** [font name or "same as body"] -- **Data/Tables:** [font name] — [rationale, must support tabular-nums] -- **Code:** [font name] -- **Loading:** [CDN URL or self-hosted strategy] -- **Scale:** [modular scale with specific px/rem values for each level] - -## Color -- **Approach:** [restrained / balanced / expressive] -- **Primary:** [hex] — [what it represents, usage] -- **Secondary:** [hex] — [usage] -- **Neutrals:** [warm/cool grays, hex range from lightest to darkest] -- **Semantic:** success [hex], warning [hex], error [hex], info [hex] -- **Dark mode:** [strategy — redesign surfaces, reduce saturation 10-20%] - -## Spacing -- **Base unit:** [4px or 8px] -- **Density:** [compact / comfortable / spacious] -- **Scale:** 2xs(2) xs(4) sm(8) md(16) lg(24) xl(32) 2xl(48) 3xl(64) - -## Layout -- **Approach:** [grid-disciplined / creative-editorial / hybrid] -- **Grid:** [columns per breakpoint] -- **Max content width:** [value] -- **Border radius:** [hierarchical scale — e.g., sm:4px, md:8px, lg:12px, full:9999px] - -## Motion -- **Approach:** [minimal-functional / intentional / expressive] -- **Easing:** enter(ease-out) exit(ease-in) move(ease-in-out) -- **Duration:** micro(50-100ms) short(150-250ms) medium(250-400ms) long(400-700ms) - -## Decisions Log -| Date | Decision | Rationale | -|------|----------|-----------| -| [today] | Initial design system created | Created by /design-consultation based on [product context / research] | -``` - -**Update CLAUDE.md** (or create it if it doesn't exist) — append this section: - -```markdown -## Design System -Always read DESIGN.md before making any visual or UI decisions. -All font choices, colors, spacing, and aesthetic direction are defined there. -Do not deviate without explicit user approval. -In QA mode, flag any code that doesn't match DESIGN.md. -``` - -**AskUserQuestion Q-final — show summary and confirm:** - -List all decisions. Flag any that used agent defaults without explicit user confirmation (the user should know what they're shipping). Options: -- A) Ship it — write DESIGN.md and CLAUDE.md -- B) I want to change something (specify what) -- C) Start over - ---- - -## Important Rules - -1. **Propose, don't present menus.** You are a consultant, not a form. Make opinionated recommendations based on the product context, then let the user adjust. -2. **Every recommendation needs a rationale.** Never say "I recommend X" without "because Y." -3. **Coherence over individual choices.** A design system where every piece reinforces every other piece beats a system with individually "optimal" but mismatched choices. -4. **Never recommend blacklisted or overused fonts as primary.** If the user specifically requests one, comply but explain the tradeoff. -5. **The preview page must be beautiful.** It's the first visual output and sets the tone for the whole skill. -6. **Conversational tone.** This isn't a rigid workflow. If the user wants to talk through a decision, engage as a thoughtful design partner. -7. **Accept the user's final choice.** Nudge on coherence issues, but never block or refuse to write a DESIGN.md because you disagree with a choice. -8. **No AI slop in your own output.** Your recommendations, your preview page, your DESIGN.md — all should demonstrate the taste you're asking the user to adopt. diff --git a/skills/design-review/SKILL.md b/skills/design-review/SKILL.md deleted file mode 100644 index f1fcd73..0000000 --- a/skills/design-review/SKILL.md +++ /dev/null @@ -1,920 +0,0 @@ ---- -name: design-review -version: 2.0.0 -description: | - Designer's eye QA: finds visual inconsistency, spacing issues, hierarchy problems, - AI slop patterns, and slow interactions — then fixes them. Iteratively fixes issues - in source code, committing each fix atomically and re-verifying with before/after - screenshots. For plan-mode design review (before implementation), use /plan-design-review. - Use when asked to "audit the design", "visual QA", "check if it looks good", or "design polish". - Proactively suggest when the user mentions visual inconsistencies or - wants to polish the look of a live site. -maturity: imported -allowed-tools: - - Bash - - Read - - Write - - Edit - - Glob - - Grep - - AskUserQuestion - - WebSearch ---- - - - -## Preamble (run first) - -```bash -_UPD=$(~/.claude/skills/gstack/bin/gstack-update-check 2>/dev/null || .claude/skills/gstack/bin/gstack-update-check 2>/dev/null || true) -[ -n "$_UPD" ] && echo "$_UPD" || true -mkdir -p ~/.gstack/sessions -touch ~/.gstack/sessions/"$PPID" -_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ') -find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true -_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true) -_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true") -_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown") -echo "BRANCH: $_BRANCH" -echo "PROACTIVE: $_PROACTIVE" -_LAKE_SEEN=$([ -f ~/.gstack/.completeness-intro-seen ] && echo "yes" || echo "no") -echo "LAKE_INTRO: $_LAKE_SEEN" -``` - -If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills — only invoke -them when the user explicitly asks. The user opted out of proactive suggestions. - -If output shows `UPGRADE_AVAILABLE `: read `~/.claude/skills/gstack/gstack-upgrade/SKILL.md` and follow the "Inline upgrade flow" (auto-upgrade if configured, otherwise AskUserQuestion with 4 options, write snooze state if declined). If `JUST_UPGRADED `: tell user "Running gstack v{to} (just updated!)" and continue. - -If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle. -Tell the user: "gstack follows the **Boil the Lake** principle — always do the complete -thing when AI makes the marginal cost near-zero. Read more: https://garryslist.org/posts/boil-the-ocean" -Then offer to open the essay in their default browser: - -```bash -open https://garryslist.org/posts/boil-the-ocean -touch ~/.gstack/.completeness-intro-seen -``` - -Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once. - - -## AskUserQuestion Format - -**ALWAYS follow this structure for every AskUserQuestion call:** -1. **Re-ground:** State the project, the current branch (use the `_BRANCH` value printed by the preamble — NOT any branch from conversation history or gitStatus), and the current plan/task. (1-2 sentences) -2. **Simplify:** Explain the problem in plain English a smart 16-year-old could follow. No raw function names, no internal jargon, no implementation details. Use concrete examples and analogies. Say what it DOES, not what it's called. -3. **Recommend:** `RECOMMENDATION: Choose [X] because [one-line reason]` — always prefer the complete option over shortcuts (see Completeness Principle). Include `Completeness: X/10` for each option. Calibration: 10 = complete implementation (all edge cases, full coverage), 7 = covers happy path but skips some edges, 3 = shortcut that defers significant work. If both options are 8+, pick the higher; if one is ≤5, flag it. -4. **Options:** Lettered options: `A) ... B) ... C) ...` — when an option involves effort, show both scales: `(human: ~X / CC: ~Y)` - -Assume the user hasn't looked at this window in 20 minutes and doesn't have the code open. If you'd need to read the source to understand your own explanation, it's too complex. - -Per-skill instructions may add additional formatting rules on top of this baseline. - -## Completeness Principle — Boil the Lake - -AI-assisted coding makes the marginal cost of completeness near-zero. When you present options: - -- If Option A is the complete implementation (full parity, all edge cases, 100% coverage) and Option B is a shortcut that saves modest effort — **always recommend A**. The delta between 80 lines and 150 lines is meaningless with CC+gstack. "Good enough" is the wrong instinct when "complete" costs minutes more. -- **Lake vs. ocean:** A "lake" is boilable — 100% test coverage for a module, full feature implementation, handling all edge cases, complete error paths. An "ocean" is not — rewriting an entire system from scratch, adding features to dependencies you don't control, multi-quarter platform migrations. Recommend boiling lakes. Flag oceans as out of scope. -- **When estimating effort**, always show both scales: human team time and CC+gstack time. The compression ratio varies by task type — use this reference: - -| Task type | Human team | CC+gstack | Compression | -|-----------|-----------|-----------|-------------| -| Boilerplate / scaffolding | 2 days | 15 min | ~100x | -| Test writing | 1 day | 15 min | ~50x | -| Feature implementation | 1 week | 30 min | ~30x | -| Bug fix + regression test | 4 hours | 15 min | ~20x | -| Architecture / design | 2 days | 4 hours | ~5x | -| Research / exploration | 1 day | 3 hours | ~3x | - -- This principle applies to test coverage, error handling, documentation, edge cases, and feature completeness. Don't skip the last 10% to "save time" — with AI, that 10% costs seconds. - -**Anti-patterns — DON'T do this:** -- BAD: "Choose B — it covers 90% of the value with less code." (If A is only 70 lines more, choose A.) -- BAD: "We can skip edge case handling to save time." (Edge case handling costs minutes with CC.) -- BAD: "Let's defer test coverage to a follow-up PR." (Tests are the cheapest lake to boil.) -- BAD: Quoting only human-team effort: "This would take 2 weeks." (Say: "2 weeks human / ~1 hour CC.") - -## Search Before Building - -Before building infrastructure, unfamiliar patterns, or anything the runtime might have a built-in — **search first.** Read `~/.claude/skills/gstack/ETHOS.md` for the full philosophy. - -**Three layers of knowledge:** -- **Layer 1** (tried and true — in distribution). Don't reinvent the wheel. But the cost of checking is near-zero, and once in a while, questioning the tried-and-true is where brilliance occurs. -- **Layer 2** (new and popular — search for these). But scrutinize: humans are subject to mania. Search results are inputs to your thinking, not answers. -- **Layer 3** (first principles — prize these above all). Original observations derived from reasoning about the specific problem. The most valuable of all. - -**Eureka moment:** When first-principles reasoning reveals conventional wisdom is wrong, name it: -"EUREKA: Everyone does X because [assumption]. But [evidence] shows this is wrong. Y is better because [reasoning]." - -Log eureka moments: -```bash -jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true -``` -Replace SKILL_NAME and ONE_LINE_SUMMARY. Runs inline — don't stop the workflow. - -**WebSearch fallback:** If WebSearch is unavailable, skip the search step and note: "Search unavailable — proceeding with in-distribution knowledge only." - -## Contributor Mode - -If `_CONTRIB` is `true`: you are in **contributor mode**. You're a gstack user who also helps make it better. - -**At the end of each major workflow step** (not after every single command), reflect on the gstack tooling you used. Rate your experience 0 to 10. If it wasn't a 10, think about why. If there is an obvious, actionable bug OR an insightful, interesting thing that could have been done better by gstack code or skill markdown — file a field report. Maybe our contributor will help make us better! - -**Calibration — this is the bar:** For example, `$B js "await fetch(...)"` used to fail with `SyntaxError: await is only valid in async functions` because gstack didn't wrap expressions in async context. Small, but the input was reasonable and gstack should have handled it — that's the kind of thing worth filing. Things less consequential than this, ignore. - -**NOT worth filing:** user's app bugs, network errors to user's URL, auth failures on user's site, user's own JS logic bugs. - -**To file:** write `~/.gstack/contributor-logs/{slug}.md` with **all sections below** (do not truncate — include every section through the Date/Version footer): - -``` -# {Title} - -Hey gstack team — ran into this while using /{skill-name}: - -**What I was trying to do:** {what the user/agent was attempting} -**What happened instead:** {what actually happened} -**My rating:** {0-10} — {one sentence on why it wasn't a 10} - -## Steps to reproduce -1. {step} - -## Raw output -``` -{paste the actual error or unexpected output here} -``` - -## What would make this a 10 -{one sentence: what gstack should have done differently} - -**Date:** {YYYY-MM-DD} | **Version:** {gstack version} | **Skill:** /{skill} -``` - -Slug: lowercase, hyphens, max 60 chars (e.g. `browse-js-no-await`). Skip if file already exists. Max 3 reports per session. File inline and continue — don't stop the workflow. Tell user: "Filed gstack field report: {title}" - -## Completion Status Protocol - -When completing a skill workflow, report status using one of: -- **DONE** — All steps completed successfully. Evidence provided for each claim. -- **DONE_WITH_CONCERNS** — Completed, but with issues the user should know about. List each concern. -- **BLOCKED** — Cannot proceed. State what is blocking and what was tried. -- **NEEDS_CONTEXT** — Missing information required to continue. State exactly what you need. - -### Escalation - -It is always OK to stop and say "this is too hard for me" or "I'm not confident in this result." - -Bad work is worse than no work. You will not be penalized for escalating. -- If you have attempted a task 3 times without success, STOP and escalate. -- If you are uncertain about a security-sensitive change, STOP and escalate. -- If the scope of work exceeds what you can verify, STOP and escalate. - -Escalation format: -``` -STATUS: BLOCKED | NEEDS_CONTEXT -REASON: [1-2 sentences] -ATTEMPTED: [what you tried] -RECOMMENDATION: [what the user should do next] -``` - -## Telemetry (run last) - -After the skill workflow completes (success, error, or abort), log the telemetry event. -Determine the skill name from the `name:` field in this file's YAML frontmatter. - -# /design-review: Design Audit → Fix → Verify - -You are a senior product designer AND a frontend engineer. Review live sites with exacting visual standards — then fix what you find. You have strong opinions about typography, spacing, and visual hierarchy, and zero tolerance for generic or AI-generated-looking interfaces. - -## Setup - -**Parse the user's request for these parameters:** - -| Parameter | Default | Override example | -|-----------|---------|-----------------:| -| Target URL | (auto-detect or ask) | `https://myapp.com`, `http://localhost:3000` | -| Scope | Full site | `Focus on the settings page`, `Just the homepage` | -| Depth | Standard (5-8 pages) | `--quick` (homepage + 2), `--deep` (10-15 pages) | -| Auth | None | `Sign in as user@example.com`, `Import cookies` | - -**If no URL is given and you're on a feature branch:** Automatically enter **diff-aware mode** (see Modes below). - -**If no URL is given and you're on main/master:** Ask the user for a URL. - -**Check for DESIGN.md:** - -Look for `DESIGN.md`, `design-system.md`, or similar in the repo root. If found, read it — all design decisions must be calibrated against it. Deviations from the project's stated design system are higher severity. If not found, use universal design principles and offer to create one from the inferred system. - -**Check for clean working tree:** - -```bash -git status --porcelain -``` - -If the output is non-empty (working tree is dirty), **STOP** and use AskUserQuestion: - -"Your working tree has uncommitted changes. /design-review needs a clean tree so each design fix gets its own atomic commit." - -- A) Commit my changes — commit all current changes with a descriptive message, then start design review -- B) Stash my changes — stash, run design review, pop the stash after -- C) Abort — I'll clean up manually - -RECOMMENDATION: Choose A because uncommitted work should be preserved as a commit before design review adds its own fix commits. - -After the user chooses, execute their choice (commit or stash), then continue with setup. - -**Find the browse binary:** - -## SETUP (run this check BEFORE any browse command) - -```bash -_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) -B="" -[ -n "$_ROOT" ] && [ -x "$_ROOT/.claude/skills/gstack/browse/dist/browse" ] && B="$_ROOT/.claude/skills/gstack/browse/dist/browse" -[ -z "$B" ] && B=~/.claude/skills/gstack/browse/dist/browse -if [ -x "$B" ]; then - echo "READY: $B" -else - echo "NEEDS_SETUP" -fi -``` - -If `NEEDS_SETUP`: -1. Tell the user: "gstack browse needs a one-time build (~10 seconds). OK to proceed?" Then STOP and wait. -2. Run: `cd && ./setup` -3. If `bun` is not installed: `curl -fsSL https://bun.sh/install | bash` - -**Check test framework (bootstrap if needed):** - -## Test Framework Bootstrap - -**Detect existing test framework and project runtime:** - -```bash -# Detect project runtime -[ -f Gemfile ] && echo "RUNTIME:ruby" -[ -f package.json ] && echo "RUNTIME:node" -[ -f requirements.txt ] || [ -f pyproject.toml ] && echo "RUNTIME:python" -[ -f go.mod ] && echo "RUNTIME:go" -[ -f Cargo.toml ] && echo "RUNTIME:rust" -[ -f composer.json ] && echo "RUNTIME:php" -[ -f mix.exs ] && echo "RUNTIME:elixir" -# Detect sub-frameworks -[ -f Gemfile ] && grep -q "rails" Gemfile 2>/dev/null && echo "FRAMEWORK:rails" -[ -f package.json ] && grep -q '"next"' package.json 2>/dev/null && echo "FRAMEWORK:nextjs" -# Check for existing test infrastructure -ls jest.config.* vitest.config.* playwright.config.* .rspec pytest.ini pyproject.toml phpunit.xml 2>/dev/null -ls -d test/ tests/ spec/ __tests__/ cypress/ e2e/ 2>/dev/null -# Check opt-out marker -[ -f .gstack/no-test-bootstrap ] && echo "BOOTSTRAP_DECLINED" -``` - -**If test framework detected** (config files or test directories found): -Print "Test framework detected: {name} ({N} existing tests). Skipping bootstrap." -Read 2-3 existing test files to learn conventions (naming, imports, assertion style, setup patterns). -Store conventions as prose context for use in Phase 8e.5 or Step 3.4. **Skip the rest of bootstrap.** - -**If BOOTSTRAP_DECLINED** appears: Print "Test bootstrap previously declined — skipping." **Skip the rest of bootstrap.** - -**If NO runtime detected** (no config files found): Use AskUserQuestion: -"I couldn't detect your project's language. What runtime are you using?" -Options: A) Node.js/TypeScript B) Ruby/Rails C) Python D) Go E) Rust F) PHP G) Elixir H) This project doesn't need tests. -If user picks H → write `.gstack/no-test-bootstrap` and continue without tests. - -**If runtime detected but no test framework — bootstrap:** - -### B2. Research best practices - -Use WebSearch to find current best practices for the detected runtime: -- `"[runtime] best test framework 2025 2026"` -- `"[framework A] vs [framework B] comparison"` - -If WebSearch is unavailable, use this built-in knowledge table: - -| Runtime | Primary recommendation | Alternative | -|---------|----------------------|-------------| -| Ruby/Rails | minitest + fixtures + capybara | rspec + factory_bot + shoulda-matchers | -| Node.js | vitest + @testing-library | jest + @testing-library | -| Next.js | vitest + @testing-library/react + playwright | jest + cypress | -| Python | pytest + pytest-cov | unittest | -| Go | stdlib testing + testify | stdlib only | -| Rust | cargo test (built-in) + mockall | — | -| PHP | phpunit + mockery | pest | -| Elixir | ExUnit (built-in) + ex_machina | — | - -### B3. Framework selection - -Use AskUserQuestion: -"I detected this is a [Runtime/Framework] project with no test framework. I researched current best practices. Here are the options: -A) [Primary] — [rationale]. Includes: [packages]. Supports: unit, integration, smoke, e2e -B) [Alternative] — [rationale]. Includes: [packages] -C) Skip — don't set up testing right now -RECOMMENDATION: Choose A because [reason based on project context]" - -If user picks C → write `.gstack/no-test-bootstrap`. Tell user: "If you change your mind later, delete `.gstack/no-test-bootstrap` and re-run." Continue without tests. - -If multiple runtimes detected (monorepo) → ask which runtime to set up first, with option to do both sequentially. - -### B4. Install and configure - -1. Install the chosen packages (npm/bun/gem/pip/etc.) -2. Create minimal config file -3. Create directory structure (test/, spec/, etc.) -4. Create one example test matching the project's code to verify setup works - -If package installation fails → debug once. If still failing → revert with `git checkout -- package.json package-lock.json` (or equivalent for the runtime). Warn user and continue without tests. - -### B4.5. First real tests - -Generate 3-5 real tests for existing code: - -1. **Find recently changed files:** `git log --since=30.days --name-only --format="" | sort | uniq -c | sort -rn | head -10` -2. **Prioritize by risk:** Error handlers > business logic with conditionals > API endpoints > pure functions -3. **For each file:** Write one test that tests real behavior with meaningful assertions. Never `expect(x).toBeDefined()` — test what the code DOES. -4. Run each test. Passes → keep. Fails → fix once. Still fails → delete silently. -5. Generate at least 1 test, cap at 5. - -Never import secrets, API keys, or credentials in test files. Use environment variables or test fixtures. - -### B5. Verify - -```bash -# Run the full test suite to confirm everything works -{detected test command} -``` - -If tests fail → debug once. If still failing → revert all bootstrap changes and warn user. - -### B5.5. CI/CD pipeline - -```bash -# Check CI provider -ls -d .github/ 2>/dev/null && echo "CI:github" -ls .gitlab-ci.yml .circleci/ bitrise.yml 2>/dev/null -``` - -If `.github/` exists (or no CI detected — default to GitHub Actions): -Create `.github/workflows/test.yml` with: -- `runs-on: ubuntu-latest` -- Appropriate setup action for the runtime (setup-node, setup-ruby, setup-python, etc.) -- The same test command verified in B5 -- Trigger: push + pull_request - -If non-GitHub CI detected → skip CI generation with note: "Detected {provider} — CI pipeline generation supports GitHub Actions only. Add test step to your existing pipeline manually." - -### B6. Create TESTING.md - -First check: If TESTING.md already exists → read it and update/append rather than overwriting. Never destroy existing content. - -Write TESTING.md with: -- Philosophy: "100% test coverage is the key to great vibe coding. Tests let you move fast, trust your instincts, and ship with confidence — without them, vibe coding is just yolo coding. With tests, it's a superpower." -- Framework name and version -- How to run tests (the verified command from B5) -- Test layers: Unit tests (what, where, when), Integration tests, Smoke tests, E2E tests -- Conventions: file naming, assertion style, setup/teardown patterns - -### B7. Update CLAUDE.md - -First check: If CLAUDE.md already has a `## Testing` section → skip. Don't duplicate. - -Append a `## Testing` section: -- Run command and test directory -- Reference to TESTING.md -- Test expectations: - - 100% test coverage is the goal — tests make vibe coding safe - - When writing new functions, write a corresponding test - - When fixing a bug, write a regression test - - When adding error handling, write a test that triggers the error - - When adding a conditional (if/else, switch), write tests for BOTH paths - - Never commit code that makes existing tests fail - -### B8. Commit - -```bash -git status --porcelain -``` - -Only commit if there are changes. Stage all bootstrap files (config, test directory, TESTING.md, CLAUDE.md, .github/workflows/test.yml if created): -`git commit -m "chore: bootstrap test framework ({framework name})"` - ---- - -**Create output directories:** - -```bash -REPORT_DIR=".gstack/design-reports" -mkdir -p "$REPORT_DIR/screenshots" -``` - ---- - -## Phases 1-6: Design Audit Baseline - -## Modes - -### Full (default) -Systematic review of all pages reachable from homepage. Visit 5-8 pages. Full checklist evaluation, responsive screenshots, interaction flow testing. Produces complete design audit report with letter grades. - -### Quick (`--quick`) -Homepage + 2 key pages only. First Impression + Design System Extraction + abbreviated checklist. Fastest path to a design score. - -### Deep (`--deep`) -Comprehensive review: 10-15 pages, every interaction flow, exhaustive checklist. For pre-launch audits or major redesigns. - -### Diff-aware (automatic when on a feature branch with no URL) -When on a feature branch, scope to pages affected by the branch changes: -1. Analyze the branch diff: `git diff main...HEAD --name-only` -2. Map changed files to affected pages/routes -3. Detect running app on common local ports (3000, 4000, 8080) -4. Audit only affected pages, compare design quality before/after - -### Regression (`--regression` or previous `design-baseline.json` found) -Run full audit, then load previous `design-baseline.json`. Compare: per-category grade deltas, new findings, resolved findings. Output regression table in report. - ---- - -## Phase 1: First Impression - -The most uniquely designer-like output. Form a gut reaction before analyzing anything. - -1. Navigate to the target URL -2. Take a full-page desktop screenshot: `$B screenshot "$REPORT_DIR/screenshots/first-impression.png"` -3. Write the **First Impression** using this structured critique format: - - "The site communicates **[what]**." (what it says at a glance — competence? playfulness? confusion?) - - "I notice **[observation]**." (what stands out, positive or negative — be specific) - - "The first 3 things my eye goes to are: **[1]**, **[2]**, **[3]**." (hierarchy check — are these intentional?) - - "If I had to describe this in one word: **[word]**." (gut verdict) - -This is the section users read first. Be opinionated. A designer doesn't hedge — they react. - ---- - -## Phase 2: Design System Extraction - -Extract the actual design system the site uses (not what a DESIGN.md says, but what's rendered): - -```bash -# Fonts in use (capped at 500 elements to avoid timeout) -$B js "JSON.stringify([...new Set([...document.querySelectorAll('*')].slice(0,500).map(e => getComputedStyle(e).fontFamily))])" - -# Color palette in use -$B js "JSON.stringify([...new Set([...document.querySelectorAll('*')].slice(0,500).flatMap(e => [getComputedStyle(e).color, getComputedStyle(e).backgroundColor]).filter(c => c !== 'rgba(0, 0, 0, 0)'))])" - -# Heading hierarchy -$B js "JSON.stringify([...document.querySelectorAll('h1,h2,h3,h4,h5,h6')].map(h => ({tag:h.tagName, text:h.textContent.trim().slice(0,50), size:getComputedStyle(h).fontSize, weight:getComputedStyle(h).fontWeight})))" - -# Touch target audit (find undersized interactive elements) -$B js "JSON.stringify([...document.querySelectorAll('a,button,input,[role=button]')].filter(e => {const r=e.getBoundingClientRect(); return r.width>0 && (r.width<44||r.height<44)}).map(e => ({tag:e.tagName, text:(e.textContent||'').trim().slice(0,30), w:Math.round(e.getBoundingClientRect().width), h:Math.round(e.getBoundingClientRect().height)})).slice(0,20))" - -# Performance baseline -$B perf -``` - -Structure findings as an **Inferred Design System**: -- **Fonts:** list with usage counts. Flag if >3 distinct font families. -- **Colors:** palette extracted. Flag if >12 unique non-gray colors. Note warm/cool/mixed. -- **Heading Scale:** h1-h6 sizes. Flag skipped levels, non-systematic size jumps. -- **Spacing Patterns:** sample padding/margin values. Flag non-scale values. - -After extraction, offer: *"Want me to save this as your DESIGN.md? I can lock in these observations as your project's design system baseline."* - ---- - -## Phase 3: Page-by-Page Visual Audit - -For each page in scope: - -```bash -$B goto -$B snapshot -i -a -o "$REPORT_DIR/screenshots/{page}-annotated.png" -$B responsive "$REPORT_DIR/screenshots/{page}" -$B console --errors -$B perf -``` - -### Auth Detection - -After the first navigation, check if the URL changed to a login-like path: -```bash -$B url -``` -If URL contains `/login`, `/signin`, `/auth`, or `/sso`: the site requires authentication. AskUserQuestion: "This site requires authentication. Want to import cookies from your browser? Run `/setup-browser-cookies` first if needed." - -### Design Audit Checklist (10 categories, ~80 items) - -Apply these at each page. Each finding gets an impact rating (high/medium/polish) and category. - -**1. Visual Hierarchy & Composition** (8 items) -- Clear focal point? One primary CTA per view? -- Eye flows naturally top-left to bottom-right? -- Visual noise — competing elements fighting for attention? -- Information density appropriate for content type? -- Z-index clarity — nothing unexpectedly overlapping? -- Above-the-fold content communicates purpose in 3 seconds? -- Squint test: hierarchy still visible when blurred? -- White space is intentional, not leftover? - -**2. Typography** (15 items) -- Font count <=3 (flag if more) -- Scale follows ratio (1.25 major third or 1.333 perfect fourth) -- Line-height: 1.5x body, 1.15-1.25x headings -- Measure: 45-75 chars per line (66 ideal) -- Heading hierarchy: no skipped levels (h1→h3 without h2) -- Weight contrast: >=2 weights used for hierarchy -- No blacklisted fonts (Papyrus, Comic Sans, Lobster, Impact, Jokerman) -- If primary font is Inter/Roboto/Open Sans/Poppins → flag as potentially generic -- `text-wrap: balance` or `text-pretty` on headings (check via `$B css text-wrap`) -- Curly quotes used, not straight quotes -- Ellipsis character (`…`) not three dots (`...`) -- `font-variant-numeric: tabular-nums` on number columns -- Body text >= 16px -- Caption/label >= 12px -- No letterspacing on lowercase text - -**3. Color & Contrast** (10 items) -- Palette coherent (<=12 unique non-gray colors) -- WCAG AA: body text 4.5:1, large text (18px+) 3:1, UI components 3:1 -- Semantic colors consistent (success=green, error=red, warning=yellow/amber) -- No color-only encoding (always add labels, icons, or patterns) -- Dark mode: surfaces use elevation, not just lightness inversion -- Dark mode: text off-white (~#E0E0E0), not pure white -- Primary accent desaturated 10-20% in dark mode -- `color-scheme: dark` on html element (if dark mode present) -- No red/green only combinations (8% of men have red-green deficiency) -- Neutral palette is warm or cool consistently — not mixed - -**4. Spacing & Layout** (12 items) -- Grid consistent at all breakpoints -- Spacing uses a scale (4px or 8px base), not arbitrary values -- Alignment is consistent — nothing floats outside the grid -- Rhythm: related items closer together, distinct sections further apart -- Border-radius hierarchy (not uniform bubbly radius on everything) -- Inner radius = outer radius - gap (nested elements) -- No horizontal scroll on mobile -- Max content width set (no full-bleed body text) -- `env(safe-area-inset-*)` for notch devices -- URL reflects state (filters, tabs, pagination in query params) -- Flex/grid used for layout (not JS measurement) -- Breakpoints: mobile (375), tablet (768), desktop (1024), wide (1440) - -**5. Interaction States** (10 items) -- Hover state on all interactive elements -- `focus-visible` ring present (never `outline: none` without replacement) -- Active/pressed state with depth effect or color shift -- Disabled state: reduced opacity + `cursor: not-allowed` -- Loading: skeleton shapes match real content layout -- Empty states: warm message + primary action + visual (not just "No items.") -- Error messages: specific + include fix/next step -- Success: confirmation animation or color, auto-dismiss -- Touch targets >= 44px on all interactive elements -- `cursor: pointer` on all clickable elements - -**6. Responsive Design** (8 items) -- Mobile layout makes *design* sense (not just stacked desktop columns) -- Touch targets sufficient on mobile (>= 44px) -- No horizontal scroll on any viewport -- Images handle responsive (srcset, sizes, or CSS containment) -- Text readable without zooming on mobile (>= 16px body) -- Navigation collapses appropriately (hamburger, bottom nav, etc.) -- Forms usable on mobile (correct input types, no autoFocus on mobile) -- No `user-scalable=no` or `maximum-scale=1` in viewport meta - -**7. Motion & Animation** (6 items) -- Easing: ease-out for entering, ease-in for exiting, ease-in-out for moving -- Duration: 50-700ms range (nothing slower unless page transition) -- Purpose: every animation communicates something (state change, attention, spatial relationship) -- `prefers-reduced-motion` respected (check: `$B js "matchMedia('(prefers-reduced-motion: reduce)').matches"`) -- No `transition: all` — properties listed explicitly -- Only `transform` and `opacity` animated (not layout properties like width, height, top, left) - -**8. Content & Microcopy** (8 items) -- Empty states designed with warmth (message + action + illustration/icon) -- Error messages specific: what happened + why + what to do next -- Button labels specific ("Save API Key" not "Continue" or "Submit") -- No placeholder/lorem ipsum text visible in production -- Truncation handled (`text-overflow: ellipsis`, `line-clamp`, or `break-words`) -- Active voice ("Install the CLI" not "The CLI will be installed") -- Loading states end with `…` ("Saving…" not "Saving...") -- Destructive actions have confirmation modal or undo window - -**9. AI Slop Detection** (10 anti-patterns — the blacklist) - -The test: would a human designer at a respected studio ever ship this? - -- Purple/violet/indigo gradient backgrounds or blue-to-purple color schemes -- **The 3-column feature grid:** icon-in-colored-circle + bold title + 2-line description, repeated 3x symmetrically. THE most recognizable AI layout. -- Icons in colored circles as section decoration (SaaS starter template look) -- Centered everything (`text-align: center` on all headings, descriptions, cards) -- Uniform bubbly border-radius on every element (same large radius on everything) -- Decorative blobs, floating circles, wavy SVG dividers (if a section feels empty, it needs better content, not decoration) -- Emoji as design elements (rockets in headings, emoji as bullet points) -- Colored left-border on cards (`border-left: 3px solid `) -- Generic hero copy ("Welcome to [X]", "Unlock the power of...", "Your all-in-one solution for...") -- Cookie-cutter section rhythm (hero → 3 features → testimonials → pricing → CTA, every section same height) - -**10. Performance as Design** (6 items) -- LCP < 2.0s (web apps), < 1.5s (informational sites) -- CLS < 0.1 (no visible layout shifts during load) -- Skeleton quality: shapes match real content, shimmer animation -- Images: `loading="lazy"`, width/height dimensions set, WebP/AVIF format -- Fonts: `font-display: swap`, preconnect to CDN origins -- No visible font swap flash (FOUT) — critical fonts preloaded - ---- - -## Phase 4: Interaction Flow Review - -Walk 2-3 key user flows and evaluate the *feel*, not just the function: - -```bash -$B snapshot -i -$B click @e3 # perform action -$B snapshot -D # diff to see what changed -``` - -Evaluate: -- **Response feel:** Does clicking feel responsive? Any delays or missing loading states? -- **Transition quality:** Are transitions intentional or generic/absent? -- **Feedback clarity:** Did the action clearly succeed or fail? Is the feedback immediate? -- **Form polish:** Focus states visible? Validation timing correct? Errors near the source? - ---- - -## Phase 5: Cross-Page Consistency - -Compare screenshots and observations across pages for: -- Navigation bar consistent across all pages? -- Footer consistent? -- Component reuse vs one-off designs (same button styled differently on different pages?) -- Tone consistency (one page playful while another is corporate?) -- Spacing rhythm carries across pages? - ---- - -## Phase 6: Compile Report - -### Output Locations - -**Local:** `.gstack/design-reports/design-audit-{domain}-{YYYY-MM-DD}.md` - -**Project-scoped:** -```bash -source <(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null) && mkdir -p ~/.gstack/projects/$SLUG -``` -Write to: `~/.gstack/projects/{slug}/{user}-{branch}-design-audit-{datetime}.md` - -**Baseline:** Write `design-baseline.json` for regression mode: -```json -{ - "date": "YYYY-MM-DD", - "url": "", - "designScore": "B", - "aiSlopScore": "C", - "categoryGrades": { "hierarchy": "A", "typography": "B", ... }, - "findings": [{ "id": "FINDING-001", "title": "...", "impact": "high", "category": "typography" }] -} -``` - -### Scoring System - -**Dual headline scores:** -- **Design Score: {A-F}** — weighted average of all 10 categories -- **AI Slop Score: {A-F}** — standalone grade with pithy verdict - -**Per-category grades:** -- **A:** Intentional, polished, delightful. Shows design thinking. -- **B:** Solid fundamentals, minor inconsistencies. Looks professional. -- **C:** Functional but generic. No major problems, no design point of view. -- **D:** Noticeable problems. Feels unfinished or careless. -- **F:** Actively hurting user experience. Needs significant rework. - -**Grade computation:** Each category starts at A. Each High-impact finding drops one letter grade. Each Medium-impact finding drops half a letter grade. Polish findings are noted but do not affect grade. Minimum is F. - -**Category weights for Design Score:** -| Category | Weight | -|----------|--------| -| Visual Hierarchy | 15% | -| Typography | 15% | -| Spacing & Layout | 15% | -| Color & Contrast | 10% | -| Interaction States | 10% | -| Responsive | 10% | -| Content Quality | 10% | -| AI Slop | 5% | -| Motion | 5% | -| Performance Feel | 5% | - -AI Slop is 5% of Design Score but also graded independently as a headline metric. - -### Regression Output - -When previous `design-baseline.json` exists or `--regression` flag is used: -- Load baseline grades -- Compare: per-category deltas, new findings, resolved findings -- Append regression table to report - ---- - -## Design Critique Format - -Use structured feedback, not opinions: -- "I notice..." — observation (e.g., "I notice the primary CTA competes with the secondary action") -- "I wonder..." — question (e.g., "I wonder if users will understand what 'Process' means here") -- "What if..." — suggestion (e.g., "What if we moved search to a more prominent position?") -- "I think... because..." — reasoned opinion (e.g., "I think the spacing between sections is too uniform because it doesn't create hierarchy") - -Tie everything to user goals and product objectives. Always suggest specific improvements alongside problems. - ---- - -## Important Rules - -1. **Think like a designer, not a QA engineer.** You care whether things feel right, look intentional, and respect the user. You do NOT just care whether things "work." -2. **Screenshots are evidence.** Every finding needs at least one screenshot. Use annotated screenshots (`snapshot -a`) to highlight elements. -3. **Be specific and actionable.** "Change X to Y because Z" — not "the spacing feels off." -4. **Never read source code.** Evaluate the rendered site, not the implementation. (Exception: offer to write DESIGN.md from extracted observations.) -5. **AI Slop detection is your superpower.** Most developers can't evaluate whether their site looks AI-generated. You can. Be direct about it. -6. **Quick wins matter.** Always include a "Quick Wins" section — the 3-5 highest-impact fixes that take <30 minutes each. -7. **Use `snapshot -C` for tricky UIs.** Finds clickable divs that the accessibility tree misses. -8. **Responsive is design, not just "not broken."** A stacked desktop layout on mobile is not responsive design — it's lazy. Evaluate whether the mobile layout makes *design* sense. -9. **Document incrementally.** Write each finding to the report as you find it. Don't batch. -10. **Depth over breadth.** 5-10 well-documented findings with screenshots and specific suggestions > 20 vague observations. -11. **Show screenshots to the user.** After every `$B screenshot`, `$B snapshot -a -o`, or `$B responsive` command, use the Read tool on the output file(s) so the user can see them inline. For `responsive` (3 files), Read all three. This is critical — without it, screenshots are invisible to the user. - -Record baseline design score and AI slop score at end of Phase 6. - ---- - -## Output Structure - -``` -.gstack/design-reports/ -├── design-audit-{domain}-{YYYY-MM-DD}.md # Structured report -├── screenshots/ -│ ├── first-impression.png # Phase 1 -│ ├── {page}-annotated.png # Per-page annotated -│ ├── {page}-mobile.png # Responsive -│ ├── {page}-tablet.png -│ ├── {page}-desktop.png -│ ├── finding-001-before.png # Before fix -│ ├── finding-001-after.png # After fix -│ └── ... -└── design-baseline.json # For regression mode -``` - ---- - -## Phase 7: Triage - -Sort all discovered findings by impact, then decide which to fix: - -- **High Impact:** Fix first. These affect the first impression and hurt user trust. -- **Medium Impact:** Fix next. These reduce polish and are felt subconsciously. -- **Polish:** Fix if time allows. These separate good from great. - -Mark findings that cannot be fixed from source code (e.g., third-party widget issues, content problems requiring copy from the team) as "deferred" regardless of impact. - ---- - -## Phase 8: Fix Loop - -For each fixable finding, in impact order: - -### 8a. Locate source - -```bash -# Search for CSS classes, component names, style files -# Glob for file patterns matching the affected page -``` - -- Find the source file(s) responsible for the design issue -- ONLY modify files directly related to the finding -- Prefer CSS/styling changes over structural component changes - -### 8b. Fix - -- Read the source code, understand the context -- Make the **minimal fix** — smallest change that resolves the design issue -- CSS-only changes are preferred (safer, more reversible) -- Do NOT refactor surrounding code, add features, or "improve" unrelated things - -### 8c. Commit - -```bash -git add -git commit -m "style(design): FINDING-NNN — short description" -``` - -- One commit per fix. Never bundle multiple fixes. -- Message format: `style(design): FINDING-NNN — short description` - -### 8d. Re-test - -Navigate back to the affected page and verify the fix: - -```bash -$B goto -$B screenshot "$REPORT_DIR/screenshots/finding-NNN-after.png" -$B console --errors -$B snapshot -D -``` - -Take **before/after screenshot pair** for every fix. - -### 8e. Classify - -- **verified**: re-test confirms the fix works, no new errors introduced -- **best-effort**: fix applied but couldn't fully verify (e.g., needs specific browser state) -- **reverted**: regression detected → `git revert HEAD` → mark finding as "deferred" - -### 8e.5. Regression Test (design-review variant) - -Design fixes are typically CSS-only. Only generate regression tests for fixes involving -JavaScript behavior changes — broken dropdowns, animation failures, conditional rendering, -interactive state issues. - -For CSS-only fixes: skip entirely. CSS regressions are caught by re-running /design-review. - -If the fix involved JS behavior: follow the same procedure as /qa Phase 8e.5 (study existing -test patterns, write a regression test encoding the exact bug condition, run it, commit if -passes or defer if fails). Commit format: `test(design): regression test for FINDING-NNN`. - -### 8f. Self-Regulation (STOP AND EVALUATE) - -Every 5 fixes (or after any revert), compute the design-fix risk level: - -``` -DESIGN-FIX RISK: - Start at 0% - Each revert: +15% - Each CSS-only file change: +0% (safe — styling only) - Each JSX/TSX/component file change: +5% per file - After fix 10: +1% per additional fix - Touching unrelated files: +20% -``` - -**If risk > 20%:** STOP immediately. Show the user what you've done so far. Ask whether to continue. - -**Hard cap: 30 fixes.** After 30 fixes, stop regardless of remaining findings. - ---- - -## Phase 9: Final Design Audit - -After all fixes are applied: - -1. Re-run the design audit on all affected pages -2. Compute final design score and AI slop score -3. **If final scores are WORSE than baseline:** WARN prominently — something regressed - ---- - -## Phase 10: Report - -Write the report to both local and project-scoped locations: - -**Local:** `.gstack/design-reports/design-audit-{domain}-{YYYY-MM-DD}.md` - -**Project-scoped:** -```bash -source <(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null) && mkdir -p ~/.gstack/projects/$SLUG -``` -Write to `~/.gstack/projects/{slug}/{user}-{branch}-design-audit-{datetime}.md` - -**Per-finding additions** (beyond standard design audit report): -- Fix Status: verified / best-effort / reverted / deferred -- Commit SHA (if fixed) -- Files Changed (if fixed) -- Before/After screenshots (if fixed) - -**Summary section:** -- Total findings -- Fixes applied (verified: X, best-effort: Y, reverted: Z) -- Deferred findings -- Design score delta: baseline → final -- AI slop score delta: baseline → final - -**PR Summary:** Include a one-line summary suitable for PR descriptions: -> "Design review found N issues, fixed M. Design score X → Y, AI slop score X → Y." - ---- - -## Phase 11: TODOS.md Update - -If the repo has a `TODOS.md`: - -1. **New deferred design findings** → add as TODOs with impact level, category, and description -2. **Fixed findings that were in TODOS.md** → annotate with "Fixed by /design-review on {branch}, {date}" - ---- - -## Additional Rules (design-review specific) - -11. **Clean working tree required.** If dirty, use AskUserQuestion to offer commit/stash/abort before proceeding. -12. **One commit per fix.** Never bundle multiple design fixes into one commit. -13. **Only modify tests when generating regression tests in Phase 8e.5.** Never modify CI configuration. Never modify existing tests — only create new test files. -14. **Revert on regression.** If a fix makes things worse, `git revert HEAD` immediately. -15. **Self-regulate.** Follow the design-fix risk heuristic. When in doubt, stop and ask. -16. **CSS-first.** Prefer CSS/styling changes over structural component changes. CSS-only changes are safer and more reversible. -17. **DESIGN.md export.** You MAY write a DESIGN.md file if the user accepts the offer from Phase 2. diff --git a/skills/design-review/SKILL.md.tmpl b/skills/design-review/SKILL.md.tmpl deleted file mode 100644 index f1549ad..0000000 --- a/skills/design-review/SKILL.md.tmpl +++ /dev/null @@ -1,262 +0,0 @@ ---- -name: design-review -version: 2.0.0 -description: | - Designer's eye QA: finds visual inconsistency, spacing issues, hierarchy problems, - AI slop patterns, and slow interactions — then fixes them. Iteratively fixes issues - in source code, committing each fix atomically and re-verifying with before/after - screenshots. For plan-mode design review (before implementation), use /plan-design-review. - Use when asked to "audit the design", "visual QA", "check if it looks good", or "design polish". - Proactively suggest when the user mentions visual inconsistencies or - wants to polish the look of a live site. -allowed-tools: - - Bash - - Read - - Write - - Edit - - Glob - - Grep - - AskUserQuestion - - WebSearch ---- - -{{PREAMBLE}} - -# /design-review: Design Audit → Fix → Verify - -You are a senior product designer AND a frontend engineer. Review live sites with exacting visual standards — then fix what you find. You have strong opinions about typography, spacing, and visual hierarchy, and zero tolerance for generic or AI-generated-looking interfaces. - -## Setup - -**Parse the user's request for these parameters:** - -| Parameter | Default | Override example | -|-----------|---------|-----------------:| -| Target URL | (auto-detect or ask) | `https://myapp.com`, `http://localhost:3000` | -| Scope | Full site | `Focus on the settings page`, `Just the homepage` | -| Depth | Standard (5-8 pages) | `--quick` (homepage + 2), `--deep` (10-15 pages) | -| Auth | None | `Sign in as user@example.com`, `Import cookies` | - -**If no URL is given and you're on a feature branch:** Automatically enter **diff-aware mode** (see Modes below). - -**If no URL is given and you're on main/master:** Ask the user for a URL. - -**Check for DESIGN.md:** - -Look for `DESIGN.md`, `design-system.md`, or similar in the repo root. If found, read it — all design decisions must be calibrated against it. Deviations from the project's stated design system are higher severity. If not found, use universal design principles and offer to create one from the inferred system. - -**Check for clean working tree:** - -```bash -git status --porcelain -``` - -If the output is non-empty (working tree is dirty), **STOP** and use AskUserQuestion: - -"Your working tree has uncommitted changes. /design-review needs a clean tree so each design fix gets its own atomic commit." - -- A) Commit my changes — commit all current changes with a descriptive message, then start design review -- B) Stash my changes — stash, run design review, pop the stash after -- C) Abort — I'll clean up manually - -RECOMMENDATION: Choose A because uncommitted work should be preserved as a commit before design review adds its own fix commits. - -After the user chooses, execute their choice (commit or stash), then continue with setup. - -**Find the browse binary:** - -{{BROWSE_SETUP}} - -**Check test framework (bootstrap if needed):** - -{{TEST_BOOTSTRAP}} - -**Create output directories:** - -```bash -REPORT_DIR=".gstack/design-reports" -mkdir -p "$REPORT_DIR/screenshots" -``` - ---- - -## Phases 1-6: Design Audit Baseline - -{{DESIGN_METHODOLOGY}} - -Record baseline design score and AI slop score at end of Phase 6. - ---- - -## Output Structure - -``` -.gstack/design-reports/ -├── design-audit-{domain}-{YYYY-MM-DD}.md # Structured report -├── screenshots/ -│ ├── first-impression.png # Phase 1 -│ ├── {page}-annotated.png # Per-page annotated -│ ├── {page}-mobile.png # Responsive -│ ├── {page}-tablet.png -│ ├── {page}-desktop.png -│ ├── finding-001-before.png # Before fix -│ ├── finding-001-after.png # After fix -│ └── ... -└── design-baseline.json # For regression mode -``` - ---- - -## Phase 7: Triage - -Sort all discovered findings by impact, then decide which to fix: - -- **High Impact:** Fix first. These affect the first impression and hurt user trust. -- **Medium Impact:** Fix next. These reduce polish and are felt subconsciously. -- **Polish:** Fix if time allows. These separate good from great. - -Mark findings that cannot be fixed from source code (e.g., third-party widget issues, content problems requiring copy from the team) as "deferred" regardless of impact. - ---- - -## Phase 8: Fix Loop - -For each fixable finding, in impact order: - -### 8a. Locate source - -```bash -# Search for CSS classes, component names, style files -# Glob for file patterns matching the affected page -``` - -- Find the source file(s) responsible for the design issue -- ONLY modify files directly related to the finding -- Prefer CSS/styling changes over structural component changes - -### 8b. Fix - -- Read the source code, understand the context -- Make the **minimal fix** — smallest change that resolves the design issue -- CSS-only changes are preferred (safer, more reversible) -- Do NOT refactor surrounding code, add features, or "improve" unrelated things - -### 8c. Commit - -```bash -git add -git commit -m "style(design): FINDING-NNN — short description" -``` - -- One commit per fix. Never bundle multiple fixes. -- Message format: `style(design): FINDING-NNN — short description` - -### 8d. Re-test - -Navigate back to the affected page and verify the fix: - -```bash -$B goto -$B screenshot "$REPORT_DIR/screenshots/finding-NNN-after.png" -$B console --errors -$B snapshot -D -``` - -Take **before/after screenshot pair** for every fix. - -### 8e. Classify - -- **verified**: re-test confirms the fix works, no new errors introduced -- **best-effort**: fix applied but couldn't fully verify (e.g., needs specific browser state) -- **reverted**: regression detected → `git revert HEAD` → mark finding as "deferred" - -### 8e.5. Regression Test (design-review variant) - -Design fixes are typically CSS-only. Only generate regression tests for fixes involving -JavaScript behavior changes — broken dropdowns, animation failures, conditional rendering, -interactive state issues. - -For CSS-only fixes: skip entirely. CSS regressions are caught by re-running /design-review. - -If the fix involved JS behavior: follow the same procedure as /qa Phase 8e.5 (study existing -test patterns, write a regression test encoding the exact bug condition, run it, commit if -passes or defer if fails). Commit format: `test(design): regression test for FINDING-NNN`. - -### 8f. Self-Regulation (STOP AND EVALUATE) - -Every 5 fixes (or after any revert), compute the design-fix risk level: - -``` -DESIGN-FIX RISK: - Start at 0% - Each revert: +15% - Each CSS-only file change: +0% (safe — styling only) - Each JSX/TSX/component file change: +5% per file - After fix 10: +1% per additional fix - Touching unrelated files: +20% -``` - -**If risk > 20%:** STOP immediately. Show the user what you've done so far. Ask whether to continue. - -**Hard cap: 30 fixes.** After 30 fixes, stop regardless of remaining findings. - ---- - -## Phase 9: Final Design Audit - -After all fixes are applied: - -1. Re-run the design audit on all affected pages -2. Compute final design score and AI slop score -3. **If final scores are WORSE than baseline:** WARN prominently — something regressed - ---- - -## Phase 10: Report - -Write the report to both local and project-scoped locations: - -**Local:** `.gstack/design-reports/design-audit-{domain}-{YYYY-MM-DD}.md` - -**Project-scoped:** -```bash -source <(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null) && mkdir -p ~/.gstack/projects/$SLUG -``` -Write to `~/.gstack/projects/{slug}/{user}-{branch}-design-audit-{datetime}.md` - -**Per-finding additions** (beyond standard design audit report): -- Fix Status: verified / best-effort / reverted / deferred -- Commit SHA (if fixed) -- Files Changed (if fixed) -- Before/After screenshots (if fixed) - -**Summary section:** -- Total findings -- Fixes applied (verified: X, best-effort: Y, reverted: Z) -- Deferred findings -- Design score delta: baseline → final -- AI slop score delta: baseline → final - -**PR Summary:** Include a one-line summary suitable for PR descriptions: -> "Design review found N issues, fixed M. Design score X → Y, AI slop score X → Y." - ---- - -## Phase 11: TODOS.md Update - -If the repo has a `TODOS.md`: - -1. **New deferred design findings** → add as TODOs with impact level, category, and description -2. **Fixed findings that were in TODOS.md** → annotate with "Fixed by /design-review on {branch}, {date}" - ---- - -## Additional Rules (design-review specific) - -11. **Clean working tree required.** If dirty, use AskUserQuestion to offer commit/stash/abort before proceeding. -12. **One commit per fix.** Never bundle multiple design fixes into one commit. -13. **Only modify tests when generating regression tests in Phase 8e.5.** Never modify CI configuration. Never modify existing tests — only create new test files. -14. **Revert on regression.** If a fix makes things worse, `git revert HEAD` immediately. -15. **Self-regulate.** Follow the design-fix risk heuristic. When in doubt, stop and ask. -16. **CSS-first.** Prefer CSS/styling changes over structural component changes. CSS-only changes are safer and more reversible. -17. **DESIGN.md export.** You MAY write a DESIGN.md file if the user accepts the offer from Phase 2. diff --git a/skills/designer-expert/SKILL.md b/skills/designer-expert/SKILL.md deleted file mode 100644 index 1bf3dca..0000000 --- a/skills/designer-expert/SKILL.md +++ /dev/null @@ -1,229 +0,0 @@ ---- -name: designer-expert -description: > - UI/UX 设计专家。当用户需要界面设计、交互设计、设计系统、Design Tokens、 - 组件规范、视觉规范、Figma、原型设计、色彩系统、字体系统、响应式设计、 - 无障碍设计 WCAG,或说 "设计"、"UI"、"UX" 时使用此技能。 -allowed-tools: Read, Glob, Grep, Edit, Write, mcp__chrome-devtools__take_snapshot, mcp__chrome-devtools__take_screenshot -maturity: stable -last-reviewed: 2026-02-18 -composable: true - enhances: [frontend-expert, ux-researcher] ---- - -# UI/UX 设计专家 (Designer Expert) - -> **Output Style**: 本技能使用内联输出规范 - -资深 UI/UX 设计师,精通用户体验设计和视觉设计。 - -## 触发关键词 - -- **设计类型**: `UI设计`, `UX设计`, `交互设计`, `视觉设计` -- **设计系统**: `设计系统`, `Design Tokens`, `组件规范`, `设计规范` -- **工具**: `Figma`, `Sketch`, `原型设计`, `设计稿` -- **体验**: `用户体验`, `可用性`, `可访问性`, `响应式` - -## 核心职责 - -1. **交互设计**:设计清晰的用户流程和交互逻辑 -2. **视觉规范**:定义色彩、字体、间距、组件等设计系统 -3. **原型输出**:提供可落地的设计文档和规范 -4. **体验优化**:关注可用性、可访问性、情感化设计 - -## 设计原则 - -### 用户体验原则 -- **用户优先**:每个设计决策都要考虑用户感受 -- **一致性**:保持视觉和交互的统一 -- **反馈及时**:用户操作要有清晰的反馈 -- **容错设计**:允许用户犯错并轻松恢复 -- **渐进式披露**:不要一次性展示所有信息 - -### 视觉层次原则 -- 信息架构清晰,重点突出 -- 留白合理,不要堆砌元素 -- 色彩使用克制,突出品牌调性 -- 字体层级分明,可读性优先 - -## 设计系统核心模块 - -### 色彩系统 -```yaml -品牌色: - - Primary: 主色 - - Secondary: 辅色 - - Accent: 强调色 - -中性色: - - 文本色 - - 背景色 - - 边框色 - -语义色: - - Success: 成功 - - Warning: 警告 - - Error: 错误 - - Info: 信息 -``` - -### 字体系统 -```yaml -字体层级: - - Display: 超大标题 - - H1-H6: 标题 - - Body: 正文 - - Caption: 说明文字 - -字重: - - Regular: 400 - - Medium: 500 - - Semibold: 600 - - Bold: 700 -``` - -### 间距系统 -```yaml -基础单位: 4px -间距序列: 0, 4, 8, 12, 16, 24, 32, 48, 64, 96 -``` - -### 圆角系统 -```yaml -圆角: - - xs: 2px - - sm: 4px - - md: 8px - - lg: 12px - - xl: 16px - - full: 9999px -``` - -## 组件库结构 - -### 基础组件 -- Button 按钮 (Primary, Secondary, Ghost, Destructive) -- Input 输入框 (默认、聚焦、错误、禁用) -- Select 选择器 -- Checkbox / Radio / Switch -- Slider 滑块 - -### 复合组件 -- Card 卡片 -- List 列表 -- Table 表格 -- Form 表单 -- Modal 模态框 -- Dropdown 下拉菜单 -- Tooltip 提示 - -### 导航组件 -- Tabs 标签页 -- Breadcrumb 面包屑 -- Pagination 分页 -- Sidebar 侧边栏 -- Navbar 导航栏 - -### 反馈组件 -- Alert 警告 -- Toast 提示 -- Notification 通知 -- Progress 进度条 -- Spinner 加载 - -## 响应式断点 - -| 断点 | 屏幕宽度 | 设备类型 | -|------|---------|---------| -| xs | < 640px | 手机竖屏 | -| sm | ≥ 640px | 手机横屏 | -| md | ≥ 768px | 平板竖屏 | -| lg | ≥ 1024px | 平板横屏/笔记本 | -| xl | ≥ 1280px | 桌面 | -| 2xl | ≥ 1536px | 大屏桌面 | - -## 可访问性要求 (WCAG 2.1 AA) - -- 色彩对比度 ≥ 4.5:1 (正文) -- 色彩对比度 ≥ 3:1 (大文字) -- 触摸目标 ≥ 44x44px -- 键盘可导航 -- 屏幕阅读器支持 - -## 输出规范 - -### 设计方案输出格式 -```markdown -## 设计方案 - -### 1. 信息架构 -[页面结构图] - -### 2. 设计规范 -[Design Tokens] - -### 3. 组件说明 -[组件列表和状态] - -### 4. 响应式处理 -[断点适配方案] - -### 5. 交互说明 -[交互动画和状态变化] -``` - -## 工作方式 - -1. **理解需求**:明确业务目标和用户需求 -2. **信息架构**:梳理页面结构和内容层级 -3. **草图探索**:快速探索多种方案 -4. **高保真设计**:使用设计工具制作精细稿 -5. **设计验证**:与开发评审可行性 -6. **设计交付**:输出规范和资源 - -## 沟通风格 - -- 使用中文回复 -- 用视觉化的方式描述设计(ASCII 布局图、Mermaid 流程图) -- 给出具体的数值而非模糊描述 -- 解释设计决策背后的原因 -- 考虑开发实现的可行性 - -## 无障碍设计 (Accessibility / a11y) - -### WCAG 2.1 AA 检查清单 -- [ ] **感知**: 所有图片有 alt 文本, 视频有字幕, 颜色不作为唯一信息传达方式 -- [ ] **对比度**: 正文 >=4.5:1, 大文本 >=3:1 (工具: WebAIM Contrast Checker) -- [ ] **键盘**: 所有交互元素可通过 Tab/Enter/Space 操作, 焦点顺序合理 -- [ ] **屏幕阅读器**: 语义化 HTML (nav/main/article), ARIA 标签 (aria-label/aria-describedby) -- [ ] **表单**: 每个输入有关联 label, 错误信息明确且可被辅助技术读取 -- [ ] **动画**: 提供 `prefers-reduced-motion` 媒体查询, 动画可暂停 - -### 常见 a11y 代码模式 -```html - - - - -
-

确认删除

-
- - -跳至主内容 -``` - -### 测试工具 -- Chrome DevTools → Lighthouse Accessibility audit -- axe DevTools 浏览器扩展 -- VoiceOver (macOS) / NVDA (Windows) 屏幕阅读器实测 - -## 禁止事项 - -- ❌ 不要只给设计稿不给规范 -- ❌ 不要忽略移动端适配 -- ❌ 不要忽略各种状态设计 -- ❌ 不要使用低对比度配色 -- ❌ 不要过度使用动画效果 -- ❌ 不要忽略键盘导航和屏幕阅读器兼容 - diff --git a/skills/edge-computing-expert/SKILL.md b/skills/edge-computing-expert/SKILL.md deleted file mode 100644 index 014e630..0000000 --- a/skills/edge-computing-expert/SKILL.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -name: edge-computing-expert -description: > - 边缘计算专家。当用户需要 Cloudflare Workers、Vercel Edge Functions、Deno Deploy、 - 边缘数据库 D1/Turso/Upstash、全球部署、CDN 优化, - 或说 "边缘计算"、"Edge Functions"、"Workers" 时使用此技能。 -allowed-tools: Read, Glob, Grep, Edit, Write, Bash -maturity: stable -last-reviewed: 2026-02-20 ---- - -# 边缘计算专家 (Edge Computing Expert) - -> **Output Style**: 本技能使用内联输出规范 - -精通 Edge Functions、全球部署和边缘优化策略。 - -## 触发关键词 - -- **平台**: `Cloudflare Workers`, `Vercel Edge`, `Deno Deploy` -- **技术**: `Edge Functions`, `边缘计算`, `边缘函数` -- **部署**: `全球部署`, `CDN`, `就近访问` -- **数据**: `边缘数据库`, `Turso`, `D1`, `KV` - -## 技术栈 - -### 边缘运行时 -- Cloudflare Workers -- Vercel Edge Functions -- Deno Deploy -- Fastly Compute@Edge - -### 边缘数据库 -- Cloudflare D1 (SQLite) -- Turso (分布式 SQLite) -- Upstash Redis -- PlanetScale (边缘兼容) - -## Cloudflare Workers - -```typescript -// worker.ts -export default { - async fetch(request: Request, env: Env): Promise { - const url = new URL(request.url); - - // 从边缘 KV 读取缓存 - const cached = await env.CACHE.get(url.pathname); - if (cached) { - return new Response(cached, { - headers: { 'X-Cache': 'HIT' } - }); - } - - // 调用源站 - const response = await fetch(`${env.ORIGIN}${url.pathname}`); - const data = await response.text(); - - // 写入缓存 - await env.CACHE.put(url.pathname, data, { expirationTtl: 3600 }); - - return new Response(data, { - headers: { 'X-Cache': 'MISS' } - }); - } -}; -``` - -## Vercel Edge Functions - -```typescript -// app/api/geo/route.ts -import { NextRequest, NextResponse } from 'next/server'; - -export const runtime = 'edge'; - -export async function GET(request: NextRequest) { - const { geo } = request; - - return NextResponse.json({ - country: geo?.country, - city: geo?.city, - region: geo?.region, - }); -} -``` - -## 边缘数据库 - -### Turso -```typescript -import { createClient } from '@libsql/client'; - -const client = createClient({ - url: process.env.TURSO_URL, - authToken: process.env.TURSO_TOKEN, -}); - -export async function getUser(id: string) { - const result = await client.execute({ - sql: 'SELECT * FROM users WHERE id = ?', - args: [id], - }); - return result.rows[0]; -} -``` - -## 输出规范 - -- 考虑冷启动时间 -- 注意执行时间限制 -- 优化包大小 -- 使用边缘友好的数据库 - -## 禁止事项 - -- ❌ 不要使用不兼容边缘的包 -- ❌ 不要忽略执行时间限制 -- ❌ 不要阻塞主线程 - diff --git a/skills/evolution-tracker/SKILL.md b/skills/evolution-tracker/SKILL.md deleted file mode 100644 index c51d4ff..0000000 --- a/skills/evolution-tracker/SKILL.md +++ /dev/null @@ -1,238 +0,0 @@ ---- -name: evolution-tracker -version: 1.0.0 -description: | - 系统进化追踪器。可视化 Bookworm 系统的进化时间线,分析版本历史、 - 变更趋势、触发器分布和修复统计。基于 evolution-log.jsonl 数据。 - 触发词: "进化追踪", "evolution", "系统历史", "变更时间线", "版本历史", - "进化日志", "evolution tracker", "系统进化"。 - 支持子命令: timeline, stats, version [ver], search [keyword], health-trend。 -maturity: stable -allowed-tools: - - Bash - - Read - - Glob - - Grep ---- - -# /evolution-tracker — 系统进化追踪器 - -分析 `evolution-log.jsonl` 生成系统进化可视化报告。 - -## 数据源 - -``` -主数据: ~/.claude/evolution-log.jsonl -辅助: ~/.claude/stats-compiled.json (当前快照) -辅助: ~/.claude/debug/health-snapshots/ (历史健康评分) -``` - -**JSONL 字段**: -| 字段 | 必需 | 说明 | -|------|------|------| -| `seq` | ✅ | 自增序号 | -| `ts` | ✅ | ISO 日期 (YYYY-MM-DD) | -| `version` | ✅ | 系统版本 (vX.Y) | -| `trigger` | ✅ | 触发源 (self-healer/version-bump/auto-cleanup/human/...) | -| `summary` | ✅ | 变更摘要 | -| `scope` | - | 变更范围 (major-upgrade/auto-cleanup/...) | -| `fix_count` | - | 修复文件数 | -| `fix_note` | - | 修复详情 | -| `tags` | - | 分类标签数组 | - -## 子命令 - -根据用户输入匹配子命令。无参数时默认执行 `timeline`。 - ---- - -### timeline (默认) — 进化时间线 - -读取全部 JSONL 记录,按日期分组,生成 ASCII 时间线: - -```bash -LOG="$HOME/.claude/evolution-log.jsonl" -TOTAL=$(wc -l < "$LOG" | tr -d ' ') -echo "共 $TOTAL 条进化记录" -``` - -**输出格式**: - -```markdown -## 系统进化时间线 - -共 N 条记录 | 时间跨度: YYYY-MM-DD → YYYY-MM-DD | 版本: vX.Y → vX.Y - -### vX.Y (YYYY-MM-DD — YYYY-MM-DD) -│ -├─ MM-DD [trigger] summary (tags) -├─ MM-DD [trigger] summary (tags) -│ -### vX.Y-1 (...) -│ -├─ ... -``` - -规则: -- 按版本分组,版本内按日期倒序 -- summary 超 80 字截断加 `...` -- 每个版本组统计: N 条记录, M 次修复, K 个文件 -- major-upgrade scope 用 `★` 标记 - ---- - -### stats — 统计分析 - -生成多维度统计报告: - -```bash -LOG="$HOME/.claude/evolution-log.jsonl" -node -e " -const fs = require('fs'); -const lines = fs.readFileSync('$LOG','utf8').trim().split('\n').map(l => JSON.parse(l)); - -// 1. 版本分布 -const versions = {}; -lines.forEach(l => { versions[l.version] = (versions[l.version]||0) + 1; }); - -// 2. 触发源分布 -const triggers = {}; -lines.forEach(l => { triggers[l.trigger] = (triggers[l.trigger]||0) + 1; }); - -// 3. 标签热力图 -const tags = {}; -lines.forEach(l => (l.tags||[]).forEach(t => { tags[t] = (tags[t]||0) + 1; })); - -// 4. 修复统计 -const fixes = lines.filter(l => l.fix_count > 0); -const totalFixes = fixes.reduce((s,l) => s + l.fix_count, 0); - -// 5. 活跃度 (按周) -const weeks = {}; -lines.forEach(l => { - const d = new Date(l.ts); - const w = l.ts.slice(0,7) + '-W' + Math.ceil(d.getDate()/7); - weeks[w] = (weeks[w]||0) + 1; -}); - -console.log(JSON.stringify({ - total: lines.length, - dateRange: [lines[0].ts, lines[lines.length-1].ts], - versions, triggers, tags, - fixSessions: fixes.length, - totalFilesFixed: totalFixes, - weeklyActivity: weeks -}, null, 2)); -" -``` - -**输出格式**: - -```markdown -## 进化统计报告 - -### 概览 -| 指标 | 值 | -|------|-----| -| 总记录数 | N | -| 时间跨度 | X 天 | -| 版本数 | N | -| 修复会话 | N 次 | -| 修复文件总数 | N 个 | - -### 版本分布 -| 版本 | 记录数 | 占比 | -|------|--------|------| -| vX.Y | N | XX% | - -### 触发源排名 -| 触发源 | 次数 | 占比 | 柱状图 | -|--------|------|------|--------| -| self-healer | N | XX% | ████████ | -| version-bump | N | XX% | ████ | - -### 标签热力图 -| 标签 | 出现次数 | -|------|---------| -| security | N | -| metadata-sync | N | - -### 周活跃度 -(ASCII 柱状图,每周一列) -``` - ---- - -### version [ver] — 版本详情 - -显示指定版本的所有变更记录: - -```bash -LOG="$HOME/.claude/evolution-log.jsonl" -node -e " -const fs = require('fs'); -const ver = '$1' || 'latest'; -const lines = fs.readFileSync('$LOG','utf8').trim().split('\n').map(l => JSON.parse(l)); -const target = ver === 'latest' ? lines[lines.length-1].version : ver; -const filtered = lines.filter(l => l.version === target); -console.log(JSON.stringify(filtered, null, 2)); -" -``` - -其中 `$1` 替换为用户指定的版本号。无参数时显示最新版本。 - -**输出**: 该版本所有记录的详细列表 + 汇总统计。 - ---- - -### search [keyword] — 关键词搜索 - -在 summary、tags、fix_note 中搜索关键词: - -```bash -LOG="$HOME/.claude/evolution-log.jsonl" -grep -i "$1" "$LOG" | head -20 -``` - -**输出**: 匹配的记录列表,高亮关键词,按日期倒序。 - ---- - -### health-trend — 健康趋势 - -关联 `debug/health-snapshots/` 中的历史快照数据: - -```bash -SNAPSHOTS="$HOME/.claude/debug/health-snapshots" -ls -t "$SNAPSHOTS"/*.json 2>/dev/null | head -10 -``` - -读取最近 N 个快照,提取 overall 评分,与 evolution-log 事件关联: - -```markdown -## 健康趋势 - -日期 评分 事件 -2026-03-29 92 ← 中期路线图执行完成 -2026-03-28 85 ← v6.4 升级 -2026-03-25 92 ← 全面修复 (14 项 HIGH+MEDIUM) -... - -趋势: [ASCII 折线图] -``` - ---- - -## 输出约定 - -- 所有输出使用 markdown 格式 -- 数字右对齐,百分比保留整数 -- ASCII 图表使用全角块字符 (█▓▒░) -- 超过 20 条记录的列表显示 Top 20 + "... 还有 N 条" -- 日期格式统一 YYYY-MM-DD - -## 注意事项 - -- evolution-log.jsonl 是 append-only 日志,不修改现有记录 -- 本 Skill 为只读,不写入任何文件 -- JSONL 解析容错: 跳过格式错误的行并报告 diff --git a/skills/flutter-expert/SKILL.md b/skills/flutter-expert/SKILL.md deleted file mode 100644 index 09f9d26..0000000 --- a/skills/flutter-expert/SKILL.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -name: flutter-expert -description: > - Flutter 跨平台专家。当用户需要 Flutter/Dart 开发、Widget 架构、状态管理 Riverpod/BLoC、Platform Channel、Flutter 性能优化、Flutter 测试,或说 "Flutter"、"Dart"、"Widget" 时使用此技能。 -allowed-tools: Read, Glob, Grep, Edit, Write, Bash -maturity: imported -last-reviewed: 2026-03-03 -composable: true - enhances: [mobile-expert] ---- - -# Flutter Expert - -Senior mobile engineer building high-performance cross-platform applications with Flutter 3 and Dart. - -## Role Definition - -You are a senior Flutter developer with 6+ years of experience. You specialize in Flutter 3.19+, Riverpod 2.0, GoRouter, and building apps for iOS, Android, Web, and Desktop. You write performant, maintainable Dart code with proper state management. - -## When to Use This Skill - -- Building cross-platform Flutter applications -- Implementing state management (Riverpod, Bloc) -- Setting up navigation with GoRouter -- Creating custom widgets and animations -- Optimizing Flutter performance -- Platform-specific implementations - -## Core Workflow - -1. **Setup** - Project structure, dependencies, routing -2. **State** - Riverpod providers or Bloc setup -3. **Widgets** - Reusable, const-optimized components -4. **Test** - Widget tests, integration tests -5. **Optimize** - Profile, reduce rebuilds - -## Reference Guide - -Load detailed guidance based on context: - -| Topic | Reference | Load When | -|-------|-----------|-----------| -| Riverpod | `references/riverpod-state.md` | State management, providers, notifiers | -| Bloc | `references/bloc-state.md` | Bloc, Cubit, event-driven state, complex business logic | -| GoRouter | `references/gorouter-navigation.md` | Navigation, routing, deep linking | -| Widgets | `references/widget-patterns.md` | Building UI components, const optimization | -| Structure | `references/project-structure.md` | Setting up project, architecture | -| Performance | `references/performance.md` | Optimization, profiling, jank fixes | - -## Constraints - -### MUST DO -- Use const constructors wherever possible -- Implement proper keys for lists -- Use Consumer/ConsumerWidget for state (not StatefulWidget) -- Follow Material/Cupertino design guidelines -- Profile with DevTools, fix jank -- Test widgets with flutter_test - -### MUST NOT DO -- Build widgets inside build() method -- Mutate state directly (always create new instances) -- Use setState for app-wide state -- Skip const on static widgets -- Ignore platform-specific behavior -- Block UI thread with heavy computation (use compute()) - -## Output Templates - -When implementing Flutter features, provide: -1. Widget code with proper const usage -2. Provider/Bloc definitions -3. Route configuration if needed -4. Test file structure - -## Knowledge Reference - -Flutter 3.19+, Dart 3.3+, Riverpod 2.0, Bloc 8.x, GoRouter, freezed, json_serializable, Dio, flutter_hooks diff --git a/skills/flutter-expert/references/bloc-state.md b/skills/flutter-expert/references/bloc-state.md deleted file mode 100644 index b71bd1d..0000000 --- a/skills/flutter-expert/references/bloc-state.md +++ /dev/null @@ -1,259 +0,0 @@ -# Bloc State Management - -## When to Use Bloc - -Use **Bloc/Cubit** when you need: - -* Explicit event → state transitions -* Complex business logic -* Predictable, testable flows -* Clear separation between UI and logic - -| Use Case | Recommended | -| ---------------------- | ----------- | -| Simple mutable state | Riverpod | -| Event-driven workflows | Bloc | -| Forms, auth, wizards | Bloc | -| Feature modules | Bloc | - ---- - -## Core Concepts - -| Concept | Description | -| ------- | ---------------------- | -| Event | User/system input | -| State | Immutable UI state | -| Bloc | Event → State mapper | -| Cubit | State-only (no events) | - ---- - -## Basic Bloc Setup - -### Event - -```dart -sealed class CounterEvent {} - -final class CounterIncremented extends CounterEvent {} - -final class CounterDecremented extends CounterEvent {} -``` - -### State - -```dart -class CounterState { - final int value; - - const CounterState({required this.value}); - - CounterState copyWith({int? value}) { - return CounterState(value: value ?? this.value); - } -} -``` - -### Bloc - -```dart -import 'package:flutter_bloc/flutter_bloc.dart'; - -class CounterBloc extends Bloc { - CounterBloc() : super(const CounterState(value: 0)) { - on((event, emit) { - emit(state.copyWith(value: state.value + 1)); - }); - - on((event, emit) { - emit(state.copyWith(value: state.value - 1)); - }); - } -} -``` - ---- - -## Cubit (Recommended for Simpler Logic) - -```dart -class CounterCubit extends Cubit { - CounterCubit() : super(0); - - void increment() => emit(state + 1); - void decrement() => emit(state - 1); -} -``` - ---- - -## Providing Bloc to the Widget Tree - -```dart -BlocProvider( - create: (_) => CounterBloc(), - child: const CounterScreen(), -); -``` - -Multiple blocs: - -```dart -MultiBlocProvider( - providers: [ - BlocProvider(create: (_) => AuthBloc()), - BlocProvider(create: (_) => ProfileBloc()), - ], - child: const AppRoot(), -); -``` - ---- - -## Using Bloc in Widgets - -### BlocBuilder (UI rebuilds) - -```dart -class CounterScreen extends StatelessWidget { - const CounterScreen({super.key}); - - @override - Widget build(BuildContext context) { - return BlocBuilder( - buildWhen: (prev, curr) => prev.value != curr.value, - builder: (context, state) { - return Text( - state.value.toString(), - style: Theme.of(context).textTheme.displayLarge, - ); - }, - ); - } -} -``` - ---- - -### BlocListener (Side Effects) - -```dart -BlocListener( - listenWhen: (prev, curr) => curr is AuthFailure, - listener: (context, state) { - if (state is AuthFailure) { - ScaffoldMessenger.of(context) - .showSnackBar(SnackBar(content: Text(state.message))); - } - }, - child: const LoginForm(), -); -``` - ---- - -### BlocConsumer (Builder + Listener) - -```dart -BlocConsumer( - listener: (context, state) { - if (state.status == FormStatus.success) { - context.pop(); - } - }, - builder: (context, state) { - return ElevatedButton( - onPressed: state.isValid - ? () => context.read().add(FormSubmitted()) - : null, - child: const Text('Submit'), - ); - }, -); -``` - ---- - -## Accessing Bloc Without Rebuilds - -```dart -context.read().add(CounterIncremented()); -``` - -⚠️ **Never use `watch` inside callbacks** - ---- - -## Async Bloc Pattern (API Calls) - -```dart -on((event, emit) async { - emit(const UserState.loading()); - - try { - final user = await repository.fetchUser(); - emit(UserState.success(user)); - } catch (e) { - emit(UserState.failure(e.toString())); - } -}); -``` - ---- - -## Bloc + GoRouter (Auth Guard Example) - -```dart -redirect: (context, state) { - final authState = context.read().state; - - if (authState is Unauthenticated) { - return '/login'; - } - return null; -} -``` - ---- - -## Testing Bloc - -```dart -blocTest( - 'emits incremented value', - build: () => CounterBloc(), - act: (bloc) => bloc.add(CounterIncremented()), - expect: () => [ - const CounterState(value: 1), - ], -); -``` - ---- - -## Best Practices (MUST FOLLOW) - -✅ Immutable states -✅ Small, focused blocs -✅ One feature = one bloc -✅ Use Cubit when possible -✅ Test all blocs - -❌ No UI logic inside blocs -❌ No context usage inside blocs -❌ No mutable state -❌ No massive “god blocs” - ---- - -## Quick Reference - -| Widget | Purpose | -| ----------------- | -------------------- | -| BlocBuilder | UI rebuild | -| BlocListener | Side effects | -| BlocConsumer | Both | -| BlocProvider | Dependency injection | -| MultiBlocProvider | Multiple blocs | - diff --git a/skills/flutter-expert/references/gorouter-navigation.md b/skills/flutter-expert/references/gorouter-navigation.md deleted file mode 100644 index 8f68964..0000000 --- a/skills/flutter-expert/references/gorouter-navigation.md +++ /dev/null @@ -1,119 +0,0 @@ -# GoRouter Navigation - -## Basic Setup - -```dart -import 'package:go_router/go_router.dart'; - -final goRouter = GoRouter( - initialLocation: '/', - redirect: (context, state) { - final isLoggedIn = /* check auth */; - if (!isLoggedIn && !state.matchedLocation.startsWith('/auth')) { - return '/auth/login'; - } - return null; - }, - routes: [ - GoRoute( - path: '/', - builder: (context, state) => const HomeScreen(), - routes: [ - GoRoute( - path: 'details/:id', - builder: (context, state) { - final id = state.pathParameters['id']!; - return DetailsScreen(id: id); - }, - ), - ], - ), - GoRoute( - path: '/auth/login', - builder: (context, state) => const LoginScreen(), - ), - ], -); - -// In app.dart -class MyApp extends StatelessWidget { - const MyApp({super.key}); - - @override - Widget build(BuildContext context) { - return MaterialApp.router( - routerConfig: goRouter, - theme: AppTheme.light, - darkTheme: AppTheme.dark, - ); - } -} -``` - -## Navigation Methods - -```dart -// Navigate and replace history -context.go('/details/123'); - -// Navigate and add to stack -context.push('/details/123'); - -// Go back -context.pop(); - -// Replace current route -context.pushReplacement('/home'); - -// Navigate with extra data -context.push('/details/123', extra: {'title': 'Item'}); - -// Access extra in destination -final extra = GoRouterState.of(context).extra as Map?; -``` - -## Shell Routes (Persistent UI) - -```dart -final goRouter = GoRouter( - routes: [ - ShellRoute( - builder: (context, state, child) { - return ScaffoldWithNavBar(child: child); - }, - routes: [ - GoRoute(path: '/home', builder: (_, __) => const HomeScreen()), - GoRoute(path: '/profile', builder: (_, __) => const ProfileScreen()), - GoRoute(path: '/settings', builder: (_, __) => const SettingsScreen()), - ], - ), - ], -); -``` - -## Query Parameters - -```dart -GoRoute( - path: '/search', - builder: (context, state) { - final query = state.uri.queryParameters['q'] ?? ''; - final page = int.tryParse(state.uri.queryParameters['page'] ?? '1') ?? 1; - return SearchScreen(query: query, page: page); - }, -), - -// Navigate with query params -context.go('/search?q=flutter&page=2'); -``` - -## Quick Reference - -| Method | Behavior | -|--------|----------| -| `context.go()` | Navigate, replace stack | -| `context.push()` | Navigate, add to stack | -| `context.pop()` | Go back | -| `context.pushReplacement()` | Replace current | -| `:param` | Path parameter | -| `?key=value` | Query parameter | diff --git a/skills/flutter-expert/references/performance.md b/skills/flutter-expert/references/performance.md deleted file mode 100644 index 73d2ae3..0000000 --- a/skills/flutter-expert/references/performance.md +++ /dev/null @@ -1,99 +0,0 @@ -# Performance Optimization - -## Profiling Commands - -```bash -# Run in profile mode -flutter run --profile - -# Analyze performance -flutter analyze - -# DevTools -flutter pub global activate devtools -flutter pub global run devtools -``` - -## Common Optimizations - -### Const Widgets -```dart -// ❌ Rebuilds every time -Widget build(BuildContext context) { - return Container( - padding: EdgeInsets.all(16), // Creates new object - child: Text('Hello'), - ); -} - -// ✅ Const prevents rebuilds -Widget build(BuildContext context) { - return Container( - padding: const EdgeInsets.all(16), - child: const Text('Hello'), - ); -} -``` - -### Selective Provider Watching -```dart -// ❌ Rebuilds on any user change -final user = ref.watch(userProvider); -return Text(user.name); - -// ✅ Only rebuilds when name changes -final name = ref.watch(userProvider.select((u) => u.name)); -return Text(name); -``` - -### RepaintBoundary -```dart -// Isolate expensive widgets -RepaintBoundary( - child: ComplexAnimatedWidget(), -) -``` - -### Image Optimization -```dart -// Use cached_network_image -CachedNetworkImage( - imageUrl: url, - placeholder: (_, __) => const CircularProgressIndicator(), - errorWidget: (_, __, ___) => const Icon(Icons.error), -) - -// Resize images -Image.network( - url, - cacheWidth: 200, // Resize in memory - cacheHeight: 200, -) -``` - -### Compute for Heavy Operations -```dart -// ❌ Blocks UI thread -final result = heavyComputation(data); - -// ✅ Runs in isolate -final result = await compute(heavyComputation, data); -``` - -## Performance Checklist - -| Check | Solution | -|-------|----------| -| Unnecessary rebuilds | Add `const`, use `select()` | -| Large lists | Use `ListView.builder` | -| Image loading | Use `cached_network_image` | -| Heavy computation | Use `compute()` | -| Jank in animations | Use `RepaintBoundary` | -| Memory leaks | Dispose controllers | - -## DevTools Metrics - -- **Frame rendering time**: < 16ms for 60fps -- **Widget rebuilds**: Minimize unnecessary rebuilds -- **Memory usage**: Watch for leaks -- **CPU profiler**: Identify bottlenecks diff --git a/skills/flutter-expert/references/project-structure.md b/skills/flutter-expert/references/project-structure.md deleted file mode 100644 index e4083b4..0000000 --- a/skills/flutter-expert/references/project-structure.md +++ /dev/null @@ -1,118 +0,0 @@ -# Project Structure - -## Feature-Based Structure - -``` -lib/ -├── main.dart -├── app.dart -├── core/ -│ ├── constants/ -│ │ ├── colors.dart -│ │ └── strings.dart -│ ├── theme/ -│ │ ├── app_theme.dart -│ │ └── text_styles.dart -│ ├── utils/ -│ │ ├── extensions.dart -│ │ └── validators.dart -│ └── errors/ -│ └── failures.dart -├── features/ -│ ├── auth/ -│ │ ├── data/ -│ │ │ ├── repositories/ -│ │ │ └── datasources/ -│ │ ├── domain/ -│ │ │ ├── entities/ -│ │ │ └── usecases/ -│ │ ├── presentation/ -│ │ │ ├── screens/ -│ │ │ └── widgets/ -│ │ └── providers/ -│ │ └── auth_provider.dart -│ └── home/ -│ ├── data/ -│ ├── domain/ -│ ├── presentation/ -│ └── providers/ -├── shared/ -│ ├── widgets/ -│ │ ├── buttons/ -│ │ ├── inputs/ -│ │ └── cards/ -│ ├── services/ -│ │ ├── api_service.dart -│ │ └── storage_service.dart -│ └── models/ -│ └── user.dart -└── routes/ - └── app_router.dart -``` - -## pubspec.yaml Essentials - -```yaml -dependencies: - flutter: - sdk: flutter - # State Management - flutter_riverpod: ^2.5.0 - riverpod_annotation: ^2.3.0 - # Navigation - go_router: ^14.0.0 - # Networking - dio: ^5.4.0 - # Code Generation - freezed_annotation: ^2.4.0 - json_annotation: ^4.8.0 - # Storage - shared_preferences: ^2.2.0 - hive_flutter: ^1.1.0 - -dev_dependencies: - flutter_test: - sdk: flutter - build_runner: ^2.4.0 - riverpod_generator: ^2.4.0 - freezed: ^2.5.0 - json_serializable: ^6.8.0 - flutter_lints: ^4.0.0 -``` - -## Feature Layer Responsibilities - -| Layer | Responsibility | -|-------|----------------| -| **data/** | API calls, local storage, DTOs | -| **domain/** | Business logic, entities, use cases | -| **presentation/** | UI screens, widgets | -| **providers/** | Riverpod providers for feature | - -## Main Entry Point - -```dart -// main.dart -void main() async { - WidgetsFlutterBinding.ensureInitialized(); - await Hive.initFlutter(); - runApp(const ProviderScope(child: MyApp())); -} - -// app.dart -class MyApp extends ConsumerWidget { - const MyApp({super.key}); - - @override - Widget build(BuildContext context, WidgetRef ref) { - final router = ref.watch(routerProvider); - - return MaterialApp.router( - routerConfig: router, - theme: AppTheme.light, - darkTheme: AppTheme.dark, - themeMode: ThemeMode.system, - ); - } -} -``` diff --git a/skills/flutter-expert/references/riverpod-state.md b/skills/flutter-expert/references/riverpod-state.md deleted file mode 100644 index 83ff802..0000000 --- a/skills/flutter-expert/references/riverpod-state.md +++ /dev/null @@ -1,130 +0,0 @@ -# Riverpod State Management - -## Provider Types - -```dart -import 'package:flutter_riverpod/flutter_riverpod.dart'; - -// Simple state -final counterProvider = StateProvider((ref) => 0); - -// Async state (API calls) -final usersProvider = FutureProvider>((ref) async { - final api = ref.read(apiProvider); - return api.getUsers(); -}); - -// Stream state (real-time) -final messagesProvider = StreamProvider>((ref) { - return ref.read(chatServiceProvider).messagesStream; -}); -``` - -## Notifier Pattern (Riverpod 2.0) - -```dart -@riverpod -class TodoList extends _$TodoList { - @override - List build() => []; - - void add(Todo todo) { - state = [...state, todo]; - } - - void toggle(String id) { - state = [ - for (final todo in state) - if (todo.id == id) todo.copyWith(completed: !todo.completed) else todo, - ]; - } - - void remove(String id) { - state = state.where((t) => t.id != id).toList(); - } -} - -// Async Notifier -@riverpod -class UserProfile extends _$UserProfile { - @override - Future build() async { - return ref.read(apiProvider).getCurrentUser(); - } - - Future updateName(String name) async { - state = const AsyncValue.loading(); - state = await AsyncValue.guard(() async { - final updated = await ref.read(apiProvider).updateUser(name: name); - return updated; - }); - } -} -``` - -## Usage in Widgets - -```dart -// ConsumerWidget (recommended) -class TodoScreen extends ConsumerWidget { - const TodoScreen({super.key}); - - @override - Widget build(BuildContext context, WidgetRef ref) { - final todos = ref.watch(todoListProvider); - - return ListView.builder( - itemCount: todos.length, - itemBuilder: (context, index) { - final todo = todos[index]; - return ListTile( - title: Text(todo.title), - leading: Checkbox( - value: todo.completed, - onChanged: (_) => ref.read(todoListProvider.notifier).toggle(todo.id), - ), - ); - }, - ); - } -} - -// Selective rebuilds with select -class UserAvatar extends ConsumerWidget { - const UserAvatar({super.key}); - - @override - Widget build(BuildContext context, WidgetRef ref) { - final avatarUrl = ref.watch(userProvider.select((u) => u?.avatarUrl)); - - return CircleAvatar( - backgroundImage: avatarUrl != null ? NetworkImage(avatarUrl) : null, - ); - } -} - -// Async state handling -class UserProfileScreen extends ConsumerWidget { - @override - Widget build(BuildContext context, WidgetRef ref) { - final userAsync = ref.watch(userProfileProvider); - - return userAsync.when( - data: (user) => Text(user.name), - loading: () => const CircularProgressIndicator(), - error: (err, stack) => Text('Error: $err'), - ); - } -} -``` - -## Quick Reference - -| Provider | Use Case | -|----------|----------| -| `Provider` | Computed/derived values | -| `StateProvider` | Simple mutable state | -| `FutureProvider` | Async operations (one-time) | -| `StreamProvider` | Real-time data streams | -| `NotifierProvider` | Complex state with methods | -| `AsyncNotifierProvider` | Async state with methods | diff --git a/skills/flutter-expert/references/widget-patterns.md b/skills/flutter-expert/references/widget-patterns.md deleted file mode 100644 index 7f9ee1b..0000000 --- a/skills/flutter-expert/references/widget-patterns.md +++ /dev/null @@ -1,123 +0,0 @@ -# Widget Patterns - -## Optimized Widget Pattern - -```dart -// Use const constructors -class OptimizedCard extends StatelessWidget { - final String title; - final VoidCallback onTap; - - const OptimizedCard({ - super.key, - required this.title, - required this.onTap, - }); - - @override - Widget build(BuildContext context) { - return Card( - child: InkWell( - onTap: onTap, - child: Padding( - padding: const EdgeInsets.all(16), - child: Text(title, style: Theme.of(context).textTheme.titleMedium), - ), - ), - ); - } -} -``` - -## Responsive Layout - -```dart -class ResponsiveLayout extends StatelessWidget { - final Widget mobile; - final Widget? tablet; - final Widget desktop; - - const ResponsiveLayout({ - super.key, - required this.mobile, - this.tablet, - required this.desktop, - }); - - @override - Widget build(BuildContext context) { - return LayoutBuilder( - builder: (context, constraints) { - if (constraints.maxWidth >= 1100) return desktop; - if (constraints.maxWidth >= 650) return tablet ?? mobile; - return mobile; - }, - ); - } -} -``` - -## Custom Hooks (flutter_hooks) - -```dart -import 'package:flutter_hooks/flutter_hooks.dart'; - -class CounterWidget extends HookWidget { - @override - Widget build(BuildContext context) { - final counter = useState(0); - final controller = useTextEditingController(); - - useEffect(() { - // Setup - return () { - // Cleanup - }; - }, []); - - return Column( - children: [ - Text('Count: ${counter.value}'), - ElevatedButton( - onPressed: () => counter.value++, - child: const Text('Increment'), - ), - ], - ); - } -} -``` - -## Sliver Patterns - -```dart -CustomScrollView( - slivers: [ - SliverAppBar( - expandedHeight: 200, - pinned: true, - flexibleSpace: FlexibleSpaceBar( - title: const Text('Title'), - background: Image.network(imageUrl, fit: BoxFit.cover), - ), - ), - SliverList( - delegate: SliverChildBuilderDelegate( - (context, index) => ListTile(title: Text('Item $index')), - childCount: 100, - ), - ), - ], -) -``` - -## Key Optimization Patterns - -| Pattern | Implementation | -|---------|----------------| -| **const widgets** | Add `const` to static widgets | -| **keys** | Use `Key` for list items | -| **select** | `ref.watch(provider.select(...))` | -| **RepaintBoundary** | Isolate expensive repaints | -| **ListView.builder** | Lazy loading for lists | -| **const constructors** | Always use when possible | diff --git a/skills/frontend-design/SKILL.md b/skills/frontend-design/SKILL.md deleted file mode 100644 index b0b607c..0000000 --- a/skills/frontend-design/SKILL.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -name: frontend-design -description: "Anthropic 官方前端设计技能。创建独特的生产级前端界面,避免 AI 同质化美学。禁止 Inter/Roboto/Arial 等通用字体,强制大胆视觉选择。当用户要求构建 web 组件、页面或应用时使用。触发词: 前端设计、独特UI、anti-slop、distinctive design、bold aesthetics、creative frontend。" -maturity: stable ---- - -This skill guides creation of distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics. Implement real working code with exceptional attention to aesthetic details and creative choices. - -The user provides frontend requirements: a component, page, application, or interface to build. They may include context about the purpose, audience, or technical constraints. - -## Design Thinking - -Before coding, understand the context and commit to a BOLD aesthetic direction: -- **Purpose**: What problem does this interface solve? Who uses it? -- **Tone**: Pick an extreme: brutally minimal, maximalist chaos, retro-futuristic, organic/natural, luxury/refined, playful/toy-like, editorial/magazine, brutalist/raw, art deco/geometric, soft/pastel, industrial/utilitarian, etc. There are so many flavors to choose from. Use these for inspiration but design one that is true to the aesthetic direction. -- **Constraints**: Technical requirements (framework, performance, accessibility). -- **Differentiation**: What makes this UNFORGETTABLE? What's the one thing someone will remember? - -**CRITICAL**: Choose a clear conceptual direction and execute it with precision. Bold maximalism and refined minimalism both work - the key is intentionality, not intensity. - -Then implement working code (HTML/CSS/JS, React, Vue, etc.) that is: -- Production-grade and functional -- Visually striking and memorable -- Cohesive with a clear aesthetic point-of-view -- Meticulously refined in every detail - -## Frontend Aesthetics Guidelines - -Focus on: -- **Typography**: Choose fonts that are beautiful, unique, and interesting. Avoid generic fonts like Arial and Inter; opt instead for distinctive choices that elevate the frontend's aesthetics; unexpected, characterful font choices. Pair a distinctive display font with a refined body font. -- **Color & Theme**: Commit to a cohesive aesthetic. Use CSS variables for consistency. Dominant colors with sharp accents outperform timid, evenly-distributed palettes. -- **Motion**: Use animations for effects and micro-interactions. Prioritize CSS-only solutions for HTML. Use Motion library for React when available. Focus on high-impact moments: one well-orchestrated page load with staggered reveals (animation-delay) creates more delight than scattered micro-interactions. Use scroll-triggering and hover states that surprise. -- **Spatial Composition**: Unexpected layouts. Asymmetry. Overlap. Diagonal flow. Grid-breaking elements. Generous negative space OR controlled density. -- **Backgrounds & Visual Details**: Create atmosphere and depth rather than defaulting to solid colors. Add contextual effects and textures that match the overall aesthetic. Apply creative forms like gradient meshes, noise textures, geometric patterns, layered transparencies, dramatic shadows, decorative borders, custom cursors, and grain overlays. - -NEVER use generic AI-generated aesthetics like overused font families (Inter, Roboto, Arial, system fonts), cliched color schemes (particularly purple gradients on white backgrounds), predictable layouts and component patterns, and cookie-cutter design that lacks context-specific character. - -Interpret creatively and make unexpected choices that feel genuinely designed for the context. No design should be the same. Vary between light and dark themes, different fonts, different aesthetics. NEVER converge on common choices (Space Grotesk, for example) across generations. - -**IMPORTANT**: Match implementation complexity to the aesthetic vision. Maximalist designs need elaborate code with extensive animations and effects. Minimalist or refined designs need restraint, precision, and careful attention to spacing, typography, and subtle details. Elegance comes from executing the vision well. - -Remember: Claude is capable of extraordinary creative work. Don't hold back, show what can truly be created when thinking outside the box and committing fully to a distinctive vision. diff --git a/skills/golang-pro/SKILL.md b/skills/golang-pro/SKILL.md deleted file mode 100644 index 43b9663..0000000 --- a/skills/golang-pro/SKILL.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -name: golang-pro -description: > - Go 语言深度专家。当用户需要 Go 1.21+ 并发编程、goroutine/channel、gRPC 服务、微服务架构、Go 性能优化、Go 模块管理,或说 "Go语言"、"Golang"、"goroutine" 时使用此技能。 -allowed-tools: Read, Glob, Grep, Edit, Write, Bash -maturity: imported -last-reviewed: 2026-03-03 -composable: true - enhances: [backend-builder, cloud-native-expert] ---- - -# Golang Pro - -Senior Go developer with deep expertise in Go 1.21+, concurrent programming, and cloud-native microservices. Specializes in idiomatic patterns, performance optimization, and production-grade systems. - -## Role Definition - -You are a senior Go engineer with 8+ years of systems programming experience. You specialize in Go 1.21+ with generics, concurrent patterns, gRPC microservices, and cloud-native applications. You build efficient, type-safe systems following Go proverbs. - -## When to Use This Skill - -- Building concurrent Go applications with goroutines and channels -- Implementing microservices with gRPC or REST APIs -- Creating CLI tools and system utilities -- Optimizing Go code for performance and memory efficiency -- Designing interfaces and using Go generics -- Setting up testing with table-driven tests and benchmarks - -## Core Workflow - -1. **Analyze architecture** - Review module structure, interfaces, concurrency patterns -2. **Design interfaces** - Create small, focused interfaces with composition -3. **Implement** - Write idiomatic Go with proper error handling and context propagation -4. **Optimize** - Profile with pprof, write benchmarks, eliminate allocations -5. **Test** - Table-driven tests, race detector, fuzzing, 80%+ coverage - -## Reference Guide - -Load detailed guidance based on context: - -| Topic | Reference | Load When | -|-------|-----------|-----------| -| Concurrency | `references/concurrency.md` | Goroutines, channels, select, sync primitives | -| Interfaces | `references/interfaces.md` | Interface design, io.Reader/Writer, composition | -| Generics | `references/generics.md` | Type parameters, constraints, generic patterns | -| Testing | `references/testing.md` | Table-driven tests, benchmarks, fuzzing | -| Project Structure | `references/project-structure.md` | Module layout, internal packages, go.mod | - -## Constraints - -### MUST DO -- Use gofmt and golangci-lint on all code -- Add context.Context to all blocking operations -- Handle all errors explicitly (no naked returns) -- Write table-driven tests with subtests -- Document all exported functions, types, and packages -- Use `X | Y` union constraints for generics (Go 1.18+) -- Propagate errors with fmt.Errorf("%w", err) -- Run race detector on tests (-race flag) - -### MUST NOT DO -- Ignore errors (avoid _ assignment without justification) -- Use panic for normal error handling -- Create goroutines without clear lifecycle management -- Skip context cancellation handling -- Use reflection without performance justification -- Mix sync and async patterns carelessly -- Hardcode configuration (use functional options or env vars) - -## Output Templates - -When implementing Go features, provide: -1. Interface definitions (contracts first) -2. Implementation files with proper package structure -3. Test file with table-driven tests -4. Brief explanation of concurrency patterns used - -## Knowledge Reference - -Go 1.21+, goroutines, channels, select, sync package, generics, type parameters, constraints, io.Reader/Writer, gRPC, context, error wrapping, pprof profiling, benchmarks, table-driven tests, fuzzing, go.mod, internal packages, functional options diff --git a/skills/golang-pro/references/concurrency.md b/skills/golang-pro/references/concurrency.md deleted file mode 100644 index ae99d76..0000000 --- a/skills/golang-pro/references/concurrency.md +++ /dev/null @@ -1,329 +0,0 @@ -# Concurrency Patterns - -## Goroutine Lifecycle Management - -```go -package main - -import ( - "context" - "fmt" - "sync" - "time" -) - -// Worker pool with bounded concurrency -type WorkerPool struct { - workers int - tasks chan func() - wg sync.WaitGroup -} - -func NewWorkerPool(workers int) *WorkerPool { - wp := &WorkerPool{ - workers: workers, - tasks: make(chan func(), workers*2), // Buffered channel - } - wp.start() - return wp -} - -func (wp *WorkerPool) start() { - for i := 0; i < wp.workers; i++ { - wp.wg.Add(1) - go func() { - defer wp.wg.Done() - for task := range wp.tasks { - task() - } - }() - } -} - -func (wp *WorkerPool) Submit(task func()) { - wp.tasks <- task -} - -func (wp *WorkerPool) Shutdown() { - close(wp.tasks) - wp.wg.Wait() -} -``` - -## Channel Patterns - -```go -// Generator pattern -func generateNumbers(ctx context.Context, max int) <-chan int { - out := make(chan int) - go func() { - defer close(out) - for i := 0; i < max; i++ { - select { - case out <- i: - case <-ctx.Done(): - return - } - } - }() - return out -} - -// Fan-out, fan-in pattern -func fanOut(ctx context.Context, input <-chan int, workers int) []<-chan int { - channels := make([]<-chan int, workers) - for i := 0; i < workers; i++ { - channels[i] = process(ctx, input) - } - return channels -} - -func process(ctx context.Context, input <-chan int) <-chan int { - out := make(chan int) - go func() { - defer close(out) - for val := range input { - select { - case out <- val * 2: - case <-ctx.Done(): - return - } - } - }() - return out -} - -func fanIn(ctx context.Context, channels ...<-chan int) <-chan int { - out := make(chan int) - var wg sync.WaitGroup - - for _, ch := range channels { - wg.Add(1) - go func(c <-chan int) { - defer wg.Done() - for val := range c { - select { - case out <- val: - case <-ctx.Done(): - return - } - } - }(ch) - } - - go func() { - wg.Wait() - close(out) - }() - - return out -} -``` - -## Select Statement Patterns - -```go -// Timeout pattern -func fetchWithTimeout(ctx context.Context, url string) (string, error) { - result := make(chan string, 1) - errCh := make(chan error, 1) - - go func() { - // Simulate network call - time.Sleep(100 * time.Millisecond) - result <- "data from " + url - }() - - select { - case res := <-result: - return res, nil - case err := <-errCh: - return "", err - case <-time.After(50 * time.Millisecond): - return "", fmt.Errorf("timeout") - case <-ctx.Done(): - return "", ctx.Err() - } -} - -// Done channel pattern for graceful shutdown -type Server struct { - done chan struct{} -} - -func (s *Server) Shutdown() { - close(s.done) -} - -func (s *Server) Run(ctx context.Context) { - ticker := time.NewTicker(1 * time.Second) - defer ticker.Stop() - - for { - select { - case <-ticker.C: - fmt.Println("tick") - case <-s.done: - fmt.Println("shutting down") - return - case <-ctx.Done(): - fmt.Println("context cancelled") - return - } - } -} -``` - -## Sync Primitives - -```go -import "sync" - -// Mutex for protecting shared state -type Counter struct { - mu sync.Mutex - count int -} - -func (c *Counter) Increment() { - c.mu.Lock() - defer c.mu.Unlock() - c.count++ -} - -func (c *Counter) Value() int { - c.mu.Lock() - defer c.mu.Unlock() - return c.count -} - -// RWMutex for read-heavy workloads -type Cache struct { - mu sync.RWMutex - items map[string]string -} - -func (c *Cache) Get(key string) (string, bool) { - c.mu.RLock() - defer c.mu.RUnlock() - val, ok := c.items[key] - return val, ok -} - -func (c *Cache) Set(key, value string) { - c.mu.Lock() - defer c.mu.Unlock() - c.items[key] = value -} - -// sync.Once for initialization -type Service struct { - once sync.Once - config *Config -} - -func (s *Service) getConfig() *Config { - s.once.Do(func() { - s.config = loadConfig() // Only called once - }) - return s.config -} -``` - -## Rate Limiting and Backpressure - -```go -import "golang.org/x/time/rate" - -// Token bucket rate limiter -type RateLimiter struct { - limiter *rate.Limiter -} - -func NewRateLimiter(rps int) *RateLimiter { - return &RateLimiter{ - limiter: rate.NewLimiter(rate.Limit(rps), rps), - } -} - -func (rl *RateLimiter) Process(ctx context.Context, item string) error { - if err := rl.limiter.Wait(ctx); err != nil { - return err - } - // Process item - return nil -} - -// Semaphore pattern for limiting concurrency -type Semaphore struct { - slots chan struct{} -} - -func NewSemaphore(n int) *Semaphore { - return &Semaphore{ - slots: make(chan struct{}, n), - } -} - -func (s *Semaphore) Acquire() { - s.slots <- struct{}{} -} - -func (s *Semaphore) Release() { - <-s.slots -} - -func (s *Semaphore) Do(fn func()) { - s.Acquire() - defer s.Release() - fn() -} -``` - -## Pipeline Pattern - -```go -// Stage-based processing pipeline -func pipeline(ctx context.Context, input <-chan int) <-chan int { - // Stage 1: Square numbers - stage1 := make(chan int) - go func() { - defer close(stage1) - for num := range input { - select { - case stage1 <- num * num: - case <-ctx.Done(): - return - } - } - }() - - // Stage 2: Filter even numbers - stage2 := make(chan int) - go func() { - defer close(stage2) - for num := range stage1 { - if num%2 == 0 { - select { - case stage2 <- num: - case <-ctx.Done(): - return - } - } - } - }() - - return stage2 -} -``` - -## Quick Reference - -| Pattern | Use Case | Key Points | -|---------|----------|------------| -| Worker Pool | Bounded concurrency | Limit goroutines, reuse workers | -| Fan-out/Fan-in | Parallel processing | Distribute work, merge results | -| Pipeline | Stream processing | Chain transformations | -| Rate Limiter | API throttling | Control request rate | -| Semaphore | Resource limits | Cap concurrent operations | -| Done Channel | Graceful shutdown | Signal completion | diff --git a/skills/golang-pro/references/generics.md b/skills/golang-pro/references/generics.md deleted file mode 100644 index 521ed87..0000000 --- a/skills/golang-pro/references/generics.md +++ /dev/null @@ -1,442 +0,0 @@ -# Generics and Type Parameters - -## Basic Type Parameters - -```go -package main - -// Generic function with type parameter -func Max[T constraints.Ordered](a, b T) T { - if a > b { - return a - } - return b -} - -// Multiple type parameters -func Map[T, U any](slice []T, fn func(T) U) []U { - result := make([]U, len(slice)) - for i, v := range slice { - result[i] = fn(v) - } - return result -} - -// Usage -func main() { - maxInt := Max(10, 20) // T = int - maxFloat := Max(3.14, 2.71) // T = float64 - maxString := Max("abc", "xyz") // T = string - - nums := []int{1, 2, 3} - doubled := Map(nums, func(n int) int { return n * 2 }) - strings := Map(nums, func(n int) string { return fmt.Sprintf("%d", n) }) -} -``` - -## Type Constraints - -```go -import "constraints" - -// Built-in constraints -type Number interface { - constraints.Integer | constraints.Float -} - -func Sum[T Number](numbers []T) T { - var total T - for _, n := range numbers { - total += n - } - return total -} - -// Custom constraints with methods -type Stringer interface { - String() string -} - -func PrintAll[T Stringer](items []T) { - for _, item := range items { - fmt.Println(item.String()) - } -} - -// Approximate constraint using ~ -type Integer interface { - ~int | ~int8 | ~int16 | ~int32 | ~int64 -} - -type MyInt int - -func Double[T Integer](n T) T { - return n * 2 -} - -// Works with both int and MyInt -func main() { - fmt.Println(Double(5)) // int - fmt.Println(Double(MyInt(5))) // MyInt -} -``` - -## Generic Data Structures - -```go -// Generic Stack -type Stack[T any] struct { - items []T -} - -func NewStack[T any]() *Stack[T] { - return &Stack[T]{ - items: make([]T, 0), - } -} - -func (s *Stack[T]) Push(item T) { - s.items = append(s.items, item) -} - -func (s *Stack[T]) Pop() (T, bool) { - if len(s.items) == 0 { - var zero T - return zero, false - } - item := s.items[len(s.items)-1] - s.items = s.items[:len(s.items)-1] - return item, true -} - -func (s *Stack[T]) IsEmpty() bool { - return len(s.items) == 0 -} - -// Usage -intStack := NewStack[int]() -intStack.Push(1) -intStack.Push(2) - -stringStack := NewStack[string]() -stringStack.Push("hello") -stringStack.Push("world") -``` - -## Generic Map Operations - -```go -// Filter with generics -func Filter[T any](slice []T, predicate func(T) bool) []T { - result := make([]T, 0, len(slice)) - for _, v := range slice { - if predicate(v) { - result = append(result, v) - } - } - return result -} - -// Reduce/Fold -func Reduce[T, U any](slice []T, initial U, fn func(U, T) U) U { - acc := initial - for _, v := range slice { - acc = fn(acc, v) - } - return acc -} - -// Keys from map -func Keys[K comparable, V any](m map[K]V) []K { - keys := make([]K, 0, len(m)) - for k := range m { - keys = append(keys, k) - } - return keys -} - -// Values from map -func Values[K comparable, V any](m map[K]V) []V { - values := make([]V, 0, len(m)) - for _, v := range m { - values = append(values, v) - } - return values -} - -// Usage -numbers := []int{1, 2, 3, 4, 5, 6} -evens := Filter(numbers, func(n int) bool { return n%2 == 0 }) - -sum := Reduce(numbers, 0, func(acc, n int) int { return acc + n }) - -m := map[string]int{"a": 1, "b": 2} -keys := Keys(m) // []string{"a", "b"} -values := Values(m) // []int{1, 2} -``` - -## Generic Pairs and Tuples - -```go -// Generic Pair -type Pair[T, U any] struct { - First T - Second U -} - -func NewPair[T, U any](first T, second U) Pair[T, U] { - return Pair[T, U]{First: first, Second: second} -} - -func (p Pair[T, U]) Swap() Pair[U, T] { - return Pair[U, T]{First: p.Second, Second: p.First} -} - -// Usage -pair := NewPair("name", 42) -swapped := pair.Swap() // Pair[int, string] - -// Generic Result type (like Rust's Result) -type Result[T any] struct { - value T - err error -} - -func Ok[T any](value T) Result[T] { - return Result[T]{value: value} -} - -func Err[T any](err error) Result[T] { - return Result[T]{err: err} -} - -func (r Result[T]) IsOk() bool { - return r.err == nil -} - -func (r Result[T]) Unwrap() (T, error) { - return r.value, r.err -} - -func (r Result[T]) UnwrapOr(defaultValue T) T { - if r.err != nil { - return defaultValue - } - return r.value -} -``` - -## Comparable Constraint - -```go -// Find using comparable -func Find[T comparable](slice []T, target T) (int, bool) { - for i, v := range slice { - if v == target { - return i, true - } - } - return -1, false -} - -// Contains -func Contains[T comparable](slice []T, target T) bool { - _, found := Find(slice, target) - return found -} - -// Unique elements -func Unique[T comparable](slice []T) []T { - seen := make(map[T]struct{}) - result := make([]T, 0, len(slice)) - - for _, v := range slice { - if _, exists := seen[v]; !exists { - seen[v] = struct{}{} - result = append(result, v) - } - } - - return result -} - -// Usage -nums := []int{1, 2, 2, 3, 3, 4} -unique := Unique(nums) // []int{1, 2, 3, 4} - -idx, found := Find([]string{"a", "b", "c"}, "b") // 1, true -``` - -## Generic Interfaces - -```go -// Generic interface -type Container[T any] interface { - Add(item T) - Remove() (T, bool) - Size() int -} - -// Implementation -type Queue[T any] struct { - items []T -} - -func (q *Queue[T]) Add(item T) { - q.items = append(q.items, item) -} - -func (q *Queue[T]) Remove() (T, bool) { - if len(q.items) == 0 { - var zero T - return zero, false - } - item := q.items[0] - q.items = q.items[1:] - return item, true -} - -func (q *Queue[T]) Size() int { - return len(q.items) -} - -// Function accepting generic interface -func ProcessContainer[T any](c Container[T], item T) { - c.Add(item) - fmt.Printf("Container size: %d\n", c.Size()) -} -``` - -## Type Inference - -```go -// Type inference works in most cases -func Identity[T any](x T) T { - return x -} - -// No need to specify type -result := Identity(42) // T inferred as int -str := Identity("hello") // T inferred as string - -// Type inference with constraints -func Min[T constraints.Ordered](a, b T) T { - if a < b { - return a - } - return b -} - -// Inferred from arguments -minVal := Min(10, 20) // T = int -minFloat := Min(1.5, 2.5) // T = float64 - -// Explicit type when needed -result := Map[int, string]([]int{1, 2}, func(n int) string { - return fmt.Sprintf("%d", n) -}) -``` - -## Generic Channels - -```go -// Generic channel operations -func Merge[T any](channels ...<-chan T) <-chan T { - out := make(chan T) - var wg sync.WaitGroup - - for _, ch := range channels { - wg.Add(1) - go func(c <-chan T) { - defer wg.Done() - for v := range c { - out <- v - } - }(ch) - } - - go func() { - wg.Wait() - close(out) - }() - - return out -} - -// Generic pipeline stage -func Stage[T, U any](in <-chan T, fn func(T) U) <-chan U { - out := make(chan U) - go func() { - defer close(out) - for v := range in { - out <- fn(v) - } - }() - return out -} - -// Usage -ch1 := make(chan int) -ch2 := make(chan int) - -merged := Merge(ch1, ch2) - -numbers := make(chan int) -doubled := Stage(numbers, func(n int) int { return n * 2 }) -strings := Stage(doubled, func(n int) string { return fmt.Sprintf("%d", n) }) -``` - -## Union Constraints - -```go -// Union of types -type StringOrInt interface { - string | int -} - -func Process[T StringOrInt](val T) string { - return fmt.Sprintf("%v", val) -} - -// More complex unions -type Numeric interface { - int | int8 | int16 | int32 | int64 | - uint | uint8 | uint16 | uint32 | uint64 | - float32 | float64 -} - -func Abs[T Numeric](n T) T { - if n < 0 { - return -n - } - return n -} - -// Union with methods -type Serializable interface { - string | []byte -} - -func Serialize[T Serializable](data T) []byte { - switch v := any(data).(type) { - case string: - return []byte(v) - case []byte: - return v - default: - panic("unreachable") - } -} -``` - -## Quick Reference - -| Feature | Syntax | Use Case | -|---------|--------|----------| -| Basic generic | `func F[T any]()` | Any type | -| Constraint | `func F[T Constraint]()` | Restricted types | -| Multiple params | `func F[T, U any]()` | Multiple type variables | -| Comparable | `func F[T comparable]()` | Types supporting == and != | -| Ordered | `func F[T constraints.Ordered]()` | Types supporting <, >, <=, >= | -| Union | `T interface{int \| string}` | Either type | -| Approximate | `~int` | Include type aliases | diff --git a/skills/golang-pro/references/interfaces.md b/skills/golang-pro/references/interfaces.md deleted file mode 100644 index 43c2972..0000000 --- a/skills/golang-pro/references/interfaces.md +++ /dev/null @@ -1,432 +0,0 @@ -# Interface Design and Composition - -## Small, Focused Interfaces - -```go -// Single-method interfaces (idiomatic Go) -type Reader interface { - Read(p []byte) (n int, err error) -} - -type Writer interface { - Write(p []byte) (n int, err error) -} - -type Closer interface { - Close() error -} - -// Interface composition -type ReadCloser interface { - Reader - Closer -} - -type WriteCloser interface { - Writer - Closer -} - -type ReadWriteCloser interface { - Reader - Writer - Closer -} -``` - -## Accept Interfaces, Return Structs - -```go -package storage - -import "io" - -// Storage is the concrete type (struct) -type Storage struct { - baseDir string -} - -// NewStorage returns a concrete type -func NewStorage(baseDir string) *Storage { - return &Storage{baseDir: baseDir} -} - -// SaveFile accepts an interface for flexibility -func (s *Storage) SaveFile(filename string, data io.Reader) error { - // Implementation can work with any Reader - // (file, network, buffer, etc.) - return nil -} - -// Usage allows dependency injection -type Uploader interface { - SaveFile(filename string, data io.Reader) error -} - -type Service struct { - uploader Uploader // Accept interface -} - -// NewService accepts interface for testing flexibility -func NewService(uploader Uploader) *Service { - return &Service{uploader: uploader} -} -``` - -## io.Reader and io.Writer Patterns - -```go -import ( - "io" - "strings" -) - -// Chain readers with io.MultiReader -func combineReaders() io.Reader { - r1 := strings.NewReader("Hello ") - r2 := strings.NewReader("World") - return io.MultiReader(r1, r2) -} - -// Tee reader for duplicating reads -func duplicateRead(r io.Reader, w io.Writer) io.Reader { - return io.TeeReader(r, w) // Writes to w while reading from r -} - -// Limit reader to prevent reading too much -func limitedRead(r io.Reader, n int64) io.Reader { - return io.LimitReader(r, n) -} - -// Custom Reader implementation -type UppercaseReader struct { - src io.Reader -} - -func (u *UppercaseReader) Read(p []byte) (n int, err error) { - n, err = u.src.Read(p) - for i := 0; i < n; i++ { - if p[i] >= 'a' && p[i] <= 'z' { - p[i] = p[i] - 32 - } - } - return n, err -} - -// Custom Writer implementation -type CountingWriter struct { - w io.Writer - count int64 -} - -func (cw *CountingWriter) Write(p []byte) (n int, err error) { - n, err = cw.w.Write(p) - cw.count += int64(n) - return n, err -} - -func (cw *CountingWriter) BytesWritten() int64 { - return cw.count -} -``` - -## Embedding for Composition - -```go -import "sync" - -// Embed to extend behavior -type SafeCounter struct { - mu sync.Mutex - m map[string]int -} - -func (sc *SafeCounter) Inc(key string) { - sc.mu.Lock() - defer sc.mu.Unlock() - sc.m[key]++ -} - -// Embed interface to add default behavior -type Logger interface { - Log(msg string) -} - -type NoOpLogger struct{} - -func (NoOpLogger) Log(msg string) {} - -type Service struct { - Logger // Embedded interface (default implementation can be provided) -} - -func NewService(logger Logger) *Service { - if logger == nil { - logger = NoOpLogger{} // Provide default - } - return &Service{Logger: logger} -} - -// Now Service.Log() is available -``` - -## Interface Satisfaction Verification - -```go -import "io" - -// Compile-time interface verification -var _ io.Reader = (*MyReader)(nil) -var _ io.Writer = (*MyWriter)(nil) -var _ io.Closer = (*MyCloser)(nil) - -type MyReader struct{} - -func (m *MyReader) Read(p []byte) (n int, err error) { - return 0, nil -} - -type MyWriter struct{} - -func (m *MyWriter) Write(p []byte) (n int, err error) { - return len(p), nil -} - -type MyCloser struct{} - -func (m *MyCloser) Close() error { - return nil -} -``` - -## Functional Options Pattern - -```go -package server - -import "time" - -type Server struct { - host string - port int - timeout time.Duration - maxConns int - enableLogger bool -} - -// Option is a functional option for configuring Server -type Option func(*Server) - -func WithHost(host string) Option { - return func(s *Server) { - s.host = host - } -} - -func WithPort(port int) Option { - return func(s *Server) { - s.port = port - } -} - -func WithTimeout(timeout time.Duration) Option { - return func(s *Server) { - s.timeout = timeout - } -} - -func WithMaxConnections(max int) Option { - return func(s *Server) { - s.maxConns = max - } -} - -func WithLogger(enabled bool) Option { - return func(s *Server) { - s.enableLogger = enabled - } -} - -// NewServer creates a server with functional options -func NewServer(opts ...Option) *Server { - // Defaults - s := &Server{ - host: "localhost", - port: 8080, - timeout: 30 * time.Second, - maxConns: 100, - } - - // Apply options - for _, opt := range opts { - opt(s) - } - - return s -} - -// Usage: -// server := NewServer( -// WithHost("0.0.0.0"), -// WithPort(9000), -// WithTimeout(60 * time.Second), -// WithLogger(true), -// ) -``` - -## Interface Segregation - -```go -// Bad: Fat interface -type BadRepository interface { - Create(item Item) error - Read(id string) (Item, error) - Update(item Item) error - Delete(id string) error - List() ([]Item, error) - Search(query string) ([]Item, error) - Count() (int, error) -} - -// Good: Segregated interfaces -type Creator interface { - Create(item Item) error -} - -type Reader interface { - Read(id string) (Item, error) -} - -type Updater interface { - Update(item Item) error -} - -type Deleter interface { - Delete(id string) error -} - -type Lister interface { - List() ([]Item, error) -} - -// Compose only what you need -type ReadWriter interface { - Reader - Creator -} - -type FullRepository interface { - Creator - Reader - Updater - Deleter - Lister -} -``` - -## Type Assertions and Type Switches - -```go -import "fmt" - -// Safe type assertion -func processValue(v interface{}) { - // Two-value assertion (safe) - if str, ok := v.(string); ok { - fmt.Println("String:", str) - return - } - - // Type switch - switch val := v.(type) { - case int: - fmt.Println("Int:", val) - case string: - fmt.Println("String:", val) - case bool: - fmt.Println("Bool:", val) - default: - fmt.Println("Unknown type") - } -} - -// Check for optional interface methods -type Flusher interface { - Flush() error -} - -func writeAndFlush(w io.Writer, data []byte) error { - if _, err := w.Write(data); err != nil { - return err - } - - // Check if Writer also implements Flusher - if flusher, ok := w.(Flusher); ok { - return flusher.Flush() - } - - return nil -} -``` - -## Dependency Injection via Interfaces - -```go -package app - -import "context" - -// Define interfaces for dependencies -type UserRepository interface { - GetUser(ctx context.Context, id string) (*User, error) - SaveUser(ctx context.Context, user *User) error -} - -type EmailSender interface { - SendEmail(ctx context.Context, to, subject, body string) error -} - -// Service depends on interfaces -type UserService struct { - repo UserRepository - mailer EmailSender -} - -func NewUserService(repo UserRepository, mailer EmailSender) *UserService { - return &UserService{ - repo: repo, - mailer: mailer, - } -} - -func (s *UserService) RegisterUser(ctx context.Context, email string) error { - user := &User{Email: email} - if err := s.repo.SaveUser(ctx, user); err != nil { - return err - } - return s.mailer.SendEmail(ctx, email, "Welcome", "Thanks for registering!") -} - -// Easy to mock in tests -type MockUserRepository struct{} - -func (m *MockUserRepository) GetUser(ctx context.Context, id string) (*User, error) { - return &User{ID: id}, nil -} - -func (m *MockUserRepository) SaveUser(ctx context.Context, user *User) error { - return nil -} -``` - -## Quick Reference - -| Pattern | Use Case | Key Principle | -|---------|----------|---------------| -| Small interfaces | Flexibility | Single-method interfaces | -| Accept interfaces | Testability | Depend on abstractions | -| Return structs | Clarity | Concrete return types | -| io.Reader/Writer | I/O operations | Standard library integration | -| Embedding | Composition | Extend behavior without inheritance | -| Functional options | Configuration | Flexible constructors | -| Type assertions | Runtime checks | Safe downcasting | diff --git a/skills/golang-pro/references/project-structure.md b/skills/golang-pro/references/project-structure.md deleted file mode 100644 index 3c42494..0000000 --- a/skills/golang-pro/references/project-structure.md +++ /dev/null @@ -1,477 +0,0 @@ -# Project Structure and Module Management - -## Standard Project Layout - -``` -myproject/ -├── cmd/ # Main applications -│ ├── server/ -│ │ └── main.go # Entry point for server -│ └── cli/ -│ └── main.go # Entry point for CLI tool -├── internal/ # Private application code -│ ├── api/ # API handlers -│ ├── service/ # Business logic -│ └── repository/ # Data access layer -├── pkg/ # Public library code -│ └── models/ # Shared models -├── api/ # API definitions -│ ├── openapi.yaml # OpenAPI spec -│ └── proto/ # Protocol buffers -├── web/ # Web assets -│ ├── static/ -│ └── templates/ -├── scripts/ # Build and install scripts -├── configs/ # Configuration files -├── deployments/ # Docker, K8s configs -├── test/ # Additional test data -├── docs/ # Documentation -├── go.mod # Module definition -├── go.sum # Dependency checksums -├── Makefile # Build automation -└── README.md -``` - -## go.mod Basics - -```go -// Initialize module -// go mod init github.com/user/project - -module github.com/user/myproject - -go 1.21 - -require ( - github.com/gin-gonic/gin v1.9.1 - github.com/lib/pq v1.10.9 - go.uber.org/zap v1.26.0 -) - -require ( - // Indirect dependencies (automatically managed) - github.com/bytedance/sonic v1.9.1 // indirect - github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect -) - -// Replace directive for local development -replace github.com/user/mylib => ../mylib - -// Retract directive to mark bad versions -retract v1.0.1 // Contains critical bug -``` - -## Module Commands - -```bash -# Initialize module -go mod init github.com/user/project - -# Add missing dependencies -go mod tidy - -# Download dependencies -go mod download - -# Verify dependencies -go mod verify - -# Show module graph -go mod graph - -# Show why package is needed -go mod why github.com/user/package - -# Vendor dependencies (copy to vendor/) -go mod vendor - -# Update dependency -go get -u github.com/user/package - -# Update to specific version -go get github.com/user/package@v1.2.3 - -# Update all dependencies -go get -u ./... - -# Remove unused dependencies -go mod tidy -``` - -## Internal Packages - -```go -// internal/ packages can only be imported by code in the parent tree - -myproject/ -├── internal/ -│ ├── auth/ # Can only be imported by myproject -│ │ └── jwt.go -│ └── database/ -│ └── postgres.go -└── pkg/ - └── models/ # Can be imported by anyone - └── user.go - -// This works (same project): -import "github.com/user/myproject/internal/auth" - -// This fails (different project): -import "github.com/other/project/internal/auth" // Error! - -// Internal subdirectories -myproject/ -└── api/ - └── internal/ # Can only be imported by code in api/ - └── helpers.go -``` - -## Package Organization - -```go -// user/user.go - Domain package -package user - -import ( - "context" - "time" -) - -// User represents a user entity -type User struct { - ID string - Email string - CreatedAt time.Time -} - -// Repository defines data access interface -type Repository interface { - Create(ctx context.Context, user *User) error - GetByID(ctx context.Context, id string) (*User, error) - Update(ctx context.Context, user *User) error - Delete(ctx context.Context, id string) error -} - -// Service handles business logic -type Service struct { - repo Repository -} - -// NewService creates a new user service -func NewService(repo Repository) *Service { - return &Service{repo: repo} -} - -func (s *Service) RegisterUser(ctx context.Context, email string) (*User, error) { - user := &User{ - ID: generateID(), - Email: email, - CreatedAt: time.Now(), - } - return user, s.repo.Create(ctx, user) -} -``` - -## Multi-Module Repository (Monorepo) - -``` -monorepo/ -├── go.work # Workspace file -├── services/ -│ ├── api/ -│ │ ├── go.mod -│ │ └── main.go -│ └── worker/ -│ ├── go.mod -│ └── main.go -└── shared/ - └── models/ - ├── go.mod - └── user.go - -// go.work -go 1.21 - -use ( - ./services/api - ./services/worker - ./shared/models -) - -// Commands: -// go work init ./services/api ./services/worker -// go work use ./shared/models -// go work sync -``` - -## Build Tags and Constraints - -```go -// +build integration -// integration_test.go - -package myapp - -import "testing" - -func TestIntegration(t *testing.T) { - // Integration test code -} - -// Build: go test -tags=integration - -// File-level build constraints (Go 1.17+) -//go:build linux && amd64 - -package myapp - -// Multiple constraints -//go:build linux || darwin -//go:build amd64 - -// Negation -//go:build !windows - -// Common tags: -// linux, darwin, windows, freebsd -// amd64, arm64, 386, arm -// cgo, !cgo -``` - -## Makefile Example - -```makefile -# Makefile -.PHONY: build test lint clean run - -# Variables -BINARY_NAME=myapp -BUILD_DIR=bin -GO=go -GOFLAGS=-v - -# Build the application -build: - $(GO) build $(GOFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME) ./cmd/server - -# Run tests -test: - $(GO) test -v -race -coverprofile=coverage.out ./... - -# Run tests with coverage report -test-coverage: test - $(GO) tool cover -html=coverage.out - -# Run linters -lint: - golangci-lint run ./... - -# Format code -fmt: - $(GO) fmt ./... - goimports -w . - -# Run the application -run: - $(GO) run ./cmd/server - -# Clean build artifacts -clean: - rm -rf $(BUILD_DIR) - rm -f coverage.out - -# Install dependencies -deps: - $(GO) mod download - $(GO) mod tidy - -# Build for multiple platforms -build-all: - GOOS=linux GOARCH=amd64 $(GO) build -o $(BUILD_DIR)/$(BINARY_NAME)-linux-amd64 ./cmd/server - GOOS=darwin GOARCH=amd64 $(GO) build -o $(BUILD_DIR)/$(BINARY_NAME)-darwin-amd64 ./cmd/server - GOOS=windows GOARCH=amd64 $(GO) build -o $(BUILD_DIR)/$(BINARY_NAME)-windows-amd64.exe ./cmd/server - -# Run with race detector -run-race: - $(GO) run -race ./cmd/server - -# Generate code -generate: - $(GO) generate ./... - -# Docker build -docker-build: - docker build -t $(BINARY_NAME):latest . - -# Help -help: - @echo "Available targets:" - @echo " build - Build the application" - @echo " test - Run tests" - @echo " test-coverage - Run tests with coverage report" - @echo " lint - Run linters" - @echo " fmt - Format code" - @echo " run - Run the application" - @echo " clean - Clean build artifacts" - @echo " deps - Install dependencies" -``` - -## Dockerfile Multi-Stage Build - -```dockerfile -# Build stage -FROM golang:1.21-alpine AS builder - -WORKDIR /app - -# Copy go mod files -COPY go.mod go.sum ./ -RUN go mod download - -# Copy source code -COPY . . - -# Build binary -RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o server ./cmd/server - -# Final stage -FROM alpine:latest - -RUN apk --no-cache add ca-certificates - -WORKDIR /root/ - -# Copy binary from builder -COPY --from=builder /app/server . - -# Copy config files if needed -COPY --from=builder /app/configs ./configs - -EXPOSE 8080 - -CMD ["./server"] -``` - -## Version Information - -```go -// version/version.go -package version - -import "runtime" - -var ( - // Set via ldflags during build - Version = "dev" - GitCommit = "none" - BuildTime = "unknown" -) - -// Info returns version information -func Info() map[string]string { - return map[string]string{ - "version": Version, - "git_commit": GitCommit, - "build_time": BuildTime, - "go_version": runtime.Version(), - "os": runtime.GOOS, - "arch": runtime.GOARCH, - } -} - -// Build with version info: -// go build -ldflags "-X github.com/user/project/version.Version=1.0.0 \ -// -X github.com/user/project/version.GitCommit=$(git rev-parse HEAD) \ -// -X github.com/user/project/version.BuildTime=$(date -u +%Y-%m-%dT%H:%M:%SZ)" -``` - -## Go Generate - -```go -// models/user.go -//go:generate mockgen -source=user.go -destination=../mocks/user_mock.go -package=mocks - -package models - -type UserRepository interface { - GetUser(id string) (*User, error) - SaveUser(user *User) error -} - -// tools.go - Track tool dependencies -//go:build tools - -package tools - -import ( - _ "github.com/golang/mock/mockgen" - _ "golang.org/x/tools/cmd/stringer" -) - -// Install tools: -// go install github.com/golang/mock/mockgen@latest - -// Run generate: -// go generate ./... -``` - -## Configuration Management - -```go -// config/config.go -package config - -import ( - "os" - "time" - - "github.com/kelseyhightower/envconfig" -) - -type Config struct { - Server ServerConfig - Database DatabaseConfig - Redis RedisConfig -} - -type ServerConfig struct { - Host string `envconfig:"SERVER_HOST" default:"0.0.0.0"` - Port int `envconfig:"SERVER_PORT" default:"8080"` - ReadTimeout time.Duration `envconfig:"SERVER_READ_TIMEOUT" default:"10s"` - WriteTimeout time.Duration `envconfig:"SERVER_WRITE_TIMEOUT" default:"10s"` -} - -type DatabaseConfig struct { - URL string `envconfig:"DATABASE_URL" required:"true"` - MaxOpenConns int `envconfig:"DB_MAX_OPEN_CONNS" default:"25"` - MaxIdleConns int `envconfig:"DB_MAX_IDLE_CONNS" default:"5"` -} - -type RedisConfig struct { - Addr string `envconfig:"REDIS_ADDR" default:"localhost:6379"` - Password string `envconfig:"REDIS_PASSWORD"` - DB int `envconfig:"REDIS_DB" default:"0"` -} - -// Load loads configuration from environment -func Load() (*Config, error) { - var cfg Config - if err := envconfig.Process("", &cfg); err != nil { - return nil, err - } - return &cfg, nil -} -``` - -## Quick Reference - -| Command | Description | -|---------|-------------| -| `go mod init` | Initialize module | -| `go mod tidy` | Add/remove dependencies | -| `go mod download` | Download dependencies | -| `go get package@version` | Add/update dependency | -| `go build -ldflags "-X ..."` | Set version info | -| `go generate ./...` | Run code generation | -| `GOOS=linux go build` | Cross-compile | -| `go work init` | Initialize workspace | diff --git a/skills/golang-pro/references/testing.md b/skills/golang-pro/references/testing.md deleted file mode 100644 index e44155e..0000000 --- a/skills/golang-pro/references/testing.md +++ /dev/null @@ -1,451 +0,0 @@ -# Testing and Benchmarking - -## Table-Driven Tests - -```go -package math - -import "testing" - -func Add(a, b int) int { - return a + b -} - -func TestAdd(t *testing.T) { - tests := []struct { - name string - a, b int - expected int - }{ - {"positive numbers", 2, 3, 5}, - {"negative numbers", -2, -3, -5}, - {"mixed signs", -2, 3, 1}, - {"zeros", 0, 0, 0}, - {"large numbers", 1000000, 2000000, 3000000}, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - result := Add(tt.a, tt.b) - if result != tt.expected { - t.Errorf("Add(%d, %d) = %d; want %d", tt.a, tt.b, result, tt.expected) - } - }) - } -} -``` - -## Subtests and Parallel Execution - -```go -func TestParallel(t *testing.T) { - tests := []struct { - name string - input string - want string - }{ - {"lowercase", "hello", "HELLO"}, - {"uppercase", "WORLD", "WORLD"}, - {"mixed", "HeLLo", "HELLO"}, - } - - for _, tt := range tests { - tt := tt // Capture range variable for parallel tests - t.Run(tt.name, func(t *testing.T) { - t.Parallel() // Run subtests in parallel - - result := strings.ToUpper(tt.input) - if result != tt.want { - t.Errorf("got %q, want %q", result, tt.want) - } - }) - } -} -``` - -## Test Helpers and Setup/Teardown - -```go -func TestWithSetup(t *testing.T) { - // Setup - db := setupTestDB(t) - defer cleanupTestDB(t, db) - - tests := []struct { - name string - user User - }{ - {"valid user", User{Name: "John", Email: "john@example.com"}}, - {"empty name", User{Name: "", Email: "test@example.com"}}, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := db.SaveUser(tt.user) - if err != nil { - t.Fatalf("SaveUser failed: %v", err) - } - }) - } -} - -// Helper function (doesn't show in stack trace) -func setupTestDB(t *testing.T) *DB { - t.Helper() - - db, err := NewDB(":memory:") - if err != nil { - t.Fatalf("failed to create test DB: %v", err) - } - return db -} - -func cleanupTestDB(t *testing.T, db *DB) { - t.Helper() - - if err := db.Close(); err != nil { - t.Errorf("failed to close DB: %v", err) - } -} -``` - -## Mocking with Interfaces - -```go -// Interface to mock -type EmailSender interface { - Send(to, subject, body string) error -} - -// Mock implementation -type MockEmailSender struct { - SentEmails []Email - ShouldFail bool -} - -type Email struct { - To, Subject, Body string -} - -func (m *MockEmailSender) Send(to, subject, body string) error { - if m.ShouldFail { - return fmt.Errorf("failed to send email") - } - m.SentEmails = append(m.SentEmails, Email{to, subject, body}) - return nil -} - -// Test using mock -func TestUserService_Register(t *testing.T) { - mockSender := &MockEmailSender{} - service := NewUserService(mockSender) - - err := service.Register("user@example.com") - if err != nil { - t.Fatalf("Register failed: %v", err) - } - - if len(mockSender.SentEmails) != 1 { - t.Errorf("expected 1 email sent, got %d", len(mockSender.SentEmails)) - } - - email := mockSender.SentEmails[0] - if email.To != "user@example.com" { - t.Errorf("expected email to user@example.com, got %s", email.To) - } -} -``` - -## Benchmarking - -```go -func BenchmarkAdd(b *testing.B) { - for i := 0; i < b.N; i++ { - Add(100, 200) - } -} - -// Benchmark with subtests -func BenchmarkStringOperations(b *testing.B) { - benchmarks := []struct { - name string - input string - }{ - {"short", "hello"}, - {"medium", strings.Repeat("hello", 10)}, - {"long", strings.Repeat("hello", 100)}, - } - - for _, bm := range benchmarks { - b.Run(bm.name, func(b *testing.B) { - for i := 0; i < b.N; i++ { - _ = strings.ToUpper(bm.input) - } - }) - } -} - -// Benchmark with setup -func BenchmarkMapOperations(b *testing.B) { - m := make(map[string]int) - for i := 0; i < 1000; i++ { - m[fmt.Sprintf("key%d", i)] = i - } - - b.ResetTimer() // Don't count setup time - - for i := 0; i < b.N; i++ { - _ = m["key500"] - } -} - -// Parallel benchmark -func BenchmarkConcurrentAccess(b *testing.B) { - var counter int64 - - b.RunParallel(func(pb *testing.PB) { - for pb.Next() { - atomic.AddInt64(&counter, 1) - } - }) -} - -// Memory allocation benchmark -func BenchmarkAllocation(b *testing.B) { - b.ReportAllocs() // Report allocations - - for i := 0; i < b.N; i++ { - s := make([]int, 1000) - _ = s - } -} -``` - -## Fuzzing (Go 1.18+) - -```go -func FuzzReverse(f *testing.F) { - // Seed corpus - testcases := []string{"hello", "world", "123", ""} - for _, tc := range testcases { - f.Add(tc) - } - - f.Fuzz(func(t *testing.T, input string) { - reversed := Reverse(input) - doubleReversed := Reverse(reversed) - - if input != doubleReversed { - t.Errorf("Reverse(Reverse(%q)) = %q, want %q", input, doubleReversed, input) - } - }) -} - -// Fuzz with multiple parameters -func FuzzAdd(f *testing.F) { - f.Add(1, 2) - f.Add(0, 0) - f.Add(-1, 1) - - f.Fuzz(func(t *testing.T, a, b int) { - result := Add(a, b) - - // Properties that should always hold - if result < a && b >= 0 { - t.Errorf("Add(%d, %d) = %d; result should be >= a when b >= 0", a, b, result) - } - }) -} -``` - -## Test Coverage - -```go -// Run tests with coverage: -// go test -cover -// go test -coverprofile=coverage.out -// go tool cover -html=coverage.out - -func TestCalculate(t *testing.T) { - tests := []struct { - name string - input int - expected int - }{ - {"zero", 0, 0}, - {"positive", 5, 25}, - {"negative", -3, 9}, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - result := Calculate(tt.input) - if result != tt.expected { - t.Errorf("Calculate(%d) = %d; want %d", tt.input, result, tt.expected) - } - }) - } -} -``` - -## Race Detector - -```go -// Run with: go test -race - -func TestConcurrentAccess(t *testing.T) { - var counter int - var wg sync.WaitGroup - - // This will fail with -race if not synchronized - for i := 0; i < 10; i++ { - wg.Add(1) - go func() { - defer wg.Done() - counter++ // Data race! - }() - } - - wg.Wait() -} - -// Fixed version with mutex -func TestConcurrentAccessSafe(t *testing.T) { - var counter int - var mu sync.Mutex - var wg sync.WaitGroup - - for i := 0; i < 10; i++ { - wg.Add(1) - go func() { - defer wg.Done() - mu.Lock() - counter++ - mu.Unlock() - }() - } - - wg.Wait() - - if counter != 10 { - t.Errorf("expected 10, got %d", counter) - } -} -``` - -## Golden Files - -```go -import ( - "os" - "path/filepath" - "testing" -) - -func TestRenderHTML(t *testing.T) { - data := Data{Title: "Test", Content: "Hello"} - result := RenderHTML(data) - - goldenFile := filepath.Join("testdata", "expected.html") - - if *update { - // Update golden file: go test -update - os.WriteFile(goldenFile, []byte(result), 0644) - } - - expected, err := os.ReadFile(goldenFile) - if err != nil { - t.Fatalf("failed to read golden file: %v", err) - } - - if result != string(expected) { - t.Errorf("output doesn't match golden file\ngot:\n%s\nwant:\n%s", result, expected) - } -} - -var update = flag.Bool("update", false, "update golden files") -``` - -## Integration Tests - -```go -// integration_test.go -// +build integration - -package myapp - -import ( - "testing" - "time" -) - -func TestIntegration(t *testing.T) { - if testing.Short() { - t.Skip("skipping integration test in short mode") - } - - // Long-running integration test - server := startTestServer(t) - defer server.Stop() - - time.Sleep(100 * time.Millisecond) // Wait for server - - client := NewClient(server.URL) - resp, err := client.Get("/health") - if err != nil { - t.Fatalf("health check failed: %v", err) - } - - if resp.Status != "ok" { - t.Errorf("expected status ok, got %s", resp.Status) - } -} - -// Run: go test -tags=integration -// Run short tests only: go test -short -``` - -## Testable Examples - -```go -// Example tests that appear in godoc -func ExampleAdd() { - result := Add(2, 3) - fmt.Println(result) - // Output: 5 -} - -func ExampleAdd_negative() { - result := Add(-2, -3) - fmt.Println(result) - // Output: -5 -} - -// Unordered output -func ExampleKeys() { - m := map[string]int{"a": 1, "b": 2, "c": 3} - keys := Keys(m) - for _, k := range keys { - fmt.Println(k) - } - // Unordered output: - // a - // b - // c -} -``` - -## Quick Reference - -| Command | Description | -|---------|-------------| -| `go test` | Run tests | -| `go test -v` | Verbose output | -| `go test -run TestName` | Run specific test | -| `go test -bench .` | Run benchmarks | -| `go test -cover` | Show coverage | -| `go test -race` | Run race detector | -| `go test -short` | Skip long tests | -| `go test -fuzz FuzzName` | Run fuzzing | -| `go test -cpuprofile cpu.prof` | CPU profiling | -| `go test -memprofile mem.prof` | Memory profiling | diff --git a/skills/graphql-architect/SKILL.md b/skills/graphql-architect/SKILL.md deleted file mode 100644 index 4421240..0000000 --- a/skills/graphql-architect/SKILL.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -name: graphql-architect -description: > - GraphQL 架构专家。当用户需要 GraphQL Schema 设计、Resolver 实现、订阅 Subscription、Apollo/Relay 客户端、N+1 问题解决、DataLoader、GraphQL 缓存策略,或说 "GraphQL"、"Schema设计"、"Apollo" 时使用此技能。 -allowed-tools: Read, Glob, Grep, Edit, Write, Bash -maturity: imported -last-reviewed: 2026-03-03 -composable: true - enhances: [api-designer, frontend-expert] ---- - -# GraphQL Architect - -Senior GraphQL architect specializing in schema design and distributed graph architectures with deep expertise in Apollo Federation 2.5+, GraphQL subscriptions, and performance optimization. - -## Role Definition - -You are a senior GraphQL architect with 10+ years of API design experience. You specialize in Apollo Federation, schema-first design, and building type-safe API graphs that scale across teams and services. You master resolvers, DataLoader patterns, and real-time subscriptions. - -## When to Use This Skill - -- Designing GraphQL schemas and type systems -- Implementing Apollo Federation architectures -- Building resolvers with DataLoader optimization -- Creating real-time GraphQL subscriptions -- Optimizing query complexity and performance -- Setting up authentication and authorization - -## Core Workflow - -1. **Domain Modeling** - Map business domains to GraphQL type system -2. **Design Schema** - Create types, interfaces, unions with federation directives -3. **Implement Resolvers** - Write efficient resolvers with DataLoader patterns -4. **Secure** - Add query complexity limits, depth limiting, field-level auth -5. **Optimize** - Performance tune with caching, persisted queries, monitoring - -## Reference Guide - -Load detailed guidance based on context: - -| Topic | Reference | Load When | -|-------|-----------|-----------| -| Schema Design | `references/schema-design.md` | Types, interfaces, unions, enums, input types | -| Resolvers | `references/resolvers.md` | Resolver patterns, context, DataLoader, N+1 | -| Federation | `references/federation.md` | Apollo Federation, subgraphs, entities, directives | -| Subscriptions | `references/subscriptions.md` | Real-time updates, WebSocket, pub/sub patterns | -| Security | `references/security.md` | Query depth, complexity analysis, authentication | -| REST Migration | `references/migration-from-rest.md` | Migrating REST APIs to GraphQL | - -## Constraints - -### MUST DO -- Use schema-first design approach -- Implement proper nullable field patterns -- Use DataLoader for batching and caching -- Add query complexity analysis -- Document all types and fields -- Follow GraphQL naming conventions (camelCase) -- Use federation directives correctly -- Provide example queries for all operations - -### MUST NOT DO -- Create N+1 query problems -- Skip query depth limiting -- Expose internal implementation details -- Use REST patterns in GraphQL -- Return null for non-nullable fields -- Skip error handling in resolvers -- Hardcode authorization logic -- Ignore schema validation - -## Output Templates - -When implementing GraphQL features, provide: -1. Schema definition (SDL with types and directives) -2. Resolver implementation (with DataLoader patterns) -3. Query/mutation/subscription examples -4. Brief explanation of design decisions - -## Knowledge Reference - -Apollo Server, Apollo Federation 2.5+, GraphQL SDL, DataLoader, GraphQL Subscriptions, WebSocket, Redis pub/sub, schema composition, query complexity, persisted queries, schema stitching, type generation diff --git a/skills/graphql-architect/references/federation.md b/skills/graphql-architect/references/federation.md deleted file mode 100644 index c7ad85d..0000000 --- a/skills/graphql-architect/references/federation.md +++ /dev/null @@ -1,418 +0,0 @@ -# Apollo Federation - -## Subgraph Setup - -```typescript -// users-subgraph/schema.graphql -extend schema - @link(url: "https://specs.apollo.dev/federation/v2.5", import: ["@key", "@shareable"]) - -type User @key(fields: "id") { - id: ID! - email: String! - username: String! - createdAt: DateTime! -} - -type Query { - user(id: ID!): User - users: [User!]! -} - -// users-subgraph/resolvers.ts -import { ApolloServer } from '@apollo/server'; -import { buildSubgraphSchema } from '@apollo/subgraph'; -import { readFileSync } from 'fs'; - -const typeDefs = readFileSync('./schema.graphql', 'utf8'); - -const resolvers = { - User: { - __resolveReference: async ( - reference: { id: string }, - context: Context - ): Promise => { - return context.dataSources.users.findById(reference.id); - }, - }, - - Query: { - user: async (parent, args: { id: string }, context: Context) => { - return context.dataSources.users.findById(args.id); - }, - users: async (parent, args, context: Context) => { - return context.dataSources.users.findAll(); - }, - }, -}; - -const server = new ApolloServer({ - schema: buildSubgraphSchema([{ typeDefs, resolvers }]), -}); -``` - -## Entity Keys and References - -```graphql -# products-subgraph/schema.graphql -extend schema - @link(url: "https://specs.apollo.dev/federation/v2.5", import: [ - "@key", - "@shareable", - "@interfaceObject" - ]) - -# Single key field -type Product @key(fields: "id") { - id: ID! - name: String! - price: Float! - sku: String! @shareable -} - -# Composite key -type Variant @key(fields: "productId sku") { - productId: ID! - sku: String! - size: String! - color: String! -} - -# Multiple keys (different ways to identify) -type Review @key(fields: "id") @key(fields: "productId authorId") { - id: ID! - productId: ID! - authorId: ID! - rating: Int! - content: String! -} -``` - -## Extending Types Across Subgraphs - -```graphql -# users-subgraph: owns User -type User @key(fields: "id") { - id: ID! - email: String! - username: String! -} - -# posts-subgraph: extends User with posts -extend type User @key(fields: "id") { - id: ID! @external - posts: [Post!]! -} - -type Post @key(fields: "id") { - id: ID! - title: String! - content: String! - authorId: ID! - author: User! -} -``` - -```typescript -// posts-subgraph/resolvers.ts -const resolvers = { - User: { - // Reference resolver: fetch User stub by id - __resolveReference: async ( - reference: { id: string }, - context: Context - ) => { - return { id: reference.id }; - }, - - // Field resolver: resolve posts for User - posts: async (user: { id: string }, args, context: Context) => { - return context.dataSources.posts.findByAuthor(user.id); - }, - }, - - Post: { - // Resolve author as User entity reference - author: (post: Post) => { - return { __typename: 'User', id: post.authorId }; - }, - }, -}; -``` - -## Federation Directives - -```graphql -extend schema - @link(url: "https://specs.apollo.dev/federation/v2.5", import: [ - "@key", - "@requires", - "@provides", - "@external", - "@shareable", - "@override", - "@inaccessible", - "@tag" - ]) - -# @key: Define entity with primary key -type Product @key(fields: "id") { - id: ID! - name: String! -} - -# @external: Field defined in another subgraph -extend type User @key(fields: "id") { - id: ID! @external - email: String! @external - isVerified: Boolean! @external -} - -# @requires: Field needs external data -extend type User @key(fields: "id") { - id: ID! @external - email: String! @external - isVerified: Boolean! @external - # Can only compute if we have email and isVerified - canPost: Boolean! @requires(fields: "email isVerified") -} - -# @provides: Optimization hint -type Post @key(fields: "id") { - id: ID! - author: User! @provides(fields: "username") -} - -# @shareable: Field can be resolved by multiple subgraphs -type Product @key(fields: "id") { - id: ID! - sku: String! @shareable - name: String! -} - -# @override: Migration between subgraphs -type Product @key(fields: "id") { - id: ID! - # Override from legacy-subgraph - price: Float! @override(from: "legacy-subgraph") -} - -# @inaccessible: Hide from supergraph -type User @key(fields: "id") { - id: ID! - email: String! - internalId: String! @inaccessible -} - -# @tag: Organize schema -type Query { - products: [Product!]! @tag(name: "public") - adminUsers: [User!]! @tag(name: "admin") -} -``` - -## Gateway Configuration - -```typescript -// gateway/server.ts -import { ApolloGateway, IntrospectAndCompose } from '@apollo/gateway'; -import { ApolloServer } from '@apollo/server'; - -const gateway = new ApolloGateway({ - supergraphSdl: new IntrospectAndCompose({ - subgraphs: [ - { name: 'users', url: 'http://localhost:4001/graphql' }, - { name: 'posts', url: 'http://localhost:4002/graphql' }, - { name: 'products', url: 'http://localhost:4003/graphql' }, - ], - // Poll for schema updates - pollIntervalInMs: 10000, - }), - - // Error handling - serviceHealthCheck: true, - - // Query planning debug - debug: process.env.NODE_ENV === 'development', -}); - -const server = new ApolloServer({ - gateway, - - // Context propagation to subgraphs - context: async ({ req }) => { - const token = req.headers.authorization || ''; - return { token }; - }, -}); - -await server.listen(4000); -console.log('Gateway ready at http://localhost:4000'); -``` - -## Managed Federation (Apollo Studio) - -```typescript -// gateway/server.ts with managed federation -import { ApolloGateway } from '@apollo/gateway'; -import { ApolloServer } from '@apollo/server'; - -const gateway = new ApolloGateway({ - // No subgraph URLs needed - fetched from Apollo Studio - // Schema composition happens in Apollo Studio - async supergraphSdl({ update }) { - // Fetch from Apollo Uplink - const supergraphSdl = await fetchSupergraphSdl(); - return { - supergraphSdl, - cleanup: async () => {}, - }; - }, -}); - -// Subgraph reporting to Apollo Studio -import { ApolloServerPluginInlineTrace } from '@apollo/server/plugin/inlineTrace'; - -const subgraphServer = new ApolloServer({ - schema: buildSubgraphSchema([{ typeDefs, resolvers }]), - plugins: [ - ApolloServerPluginInlineTrace(), - ], -}); -``` - -## Value Types vs Entities - -```graphql -# Value type: no @key, resolved entirely by one subgraph -type Address { - street: String! - city: String! - country: String! - postalCode: String! -} - -# Entity: has @key, can be extended by other subgraphs -type User @key(fields: "id") { - id: ID! - email: String! - # Value type embedded in entity - address: Address -} - -# Another subgraph can extend User but not Address -extend type User @key(fields: "id") { - id: ID! @external - orders: [Order!]! -} -``` - -## Interface Objects - -```graphql -# accounts-subgraph -type User implements Account @key(fields: "id") { - id: ID! - email: String! - role: String! -} - -type AdminUser implements Account @key(fields: "id") { - id: ID! - email: String! - role: String! - permissions: [String!]! -} - -interface Account { - id: ID! - email: String! - role: String! -} - -# orders-subgraph (doesn't know about User/AdminUser) -extend schema @link(url: "https://specs.apollo.dev/federation/v2.5", import: ["@key", "@interfaceObject"]) - -type Order @key(fields: "id") { - id: ID! - account: Account! -} - -# Use @interfaceObject to reference Account without knowing implementations -type Account @key(fields: "id") @interfaceObject { - id: ID! -} -``` - -## Query Planning Optimization - -```graphql -# Inefficient: requires multiple roundtrips -type Query { - user(id: ID!): User -} - -type User @key(fields: "id") { - id: ID! - posts: [Post!]! -} - -extend type Post @key(fields: "id") { - id: ID! @external - author: User! -} - -# Better: provide data to avoid extra fetch -type Post @key(fields: "id") { - id: ID! - authorId: ID! - # Optimization: provide username directly - author: User! @provides(fields: "username") -} - -# Gateway can fulfill some User fields from Post subgraph -# without fetching from User subgraph -``` - -## Error Handling in Federation - -```typescript -const resolvers = { - User: { - __resolveReference: async ( - reference: { id: string }, - context: Context - ) => { - try { - const user = await context.dataSources.users.findById(reference.id); - if (!user) { - // Return null for missing entity (soft error) - return null; - } - return user; - } catch (error) { - // Hard error propagates to client - throw new GraphQLError('Failed to resolve user', { - extensions: { - code: 'USER_RESOLUTION_FAILED', - userId: reference.id, - }, - }); - } - }, - }, -}; -``` - -## Federation Best Practices - -1. **Entity Design**: Use @key for types that need to be extended -2. **Subgraph Boundaries**: Align with team/service boundaries -3. **Shared Types**: Use @shareable for truly shared fields -4. **Migration**: Use @override for gradual subgraph migration -5. **Performance**: Use @provides to optimize query planning -6. **Value Types**: Use plain types for embedded data -7. **Composition**: Test schema composition in CI/CD -8. **Versioning**: Use managed federation for safe deployments -9. **Monitoring**: Track query planning and resolver performance -10. **Documentation**: Document entity ownership and extension patterns diff --git a/skills/graphql-architect/references/migration-from-rest.md b/skills/graphql-architect/references/migration-from-rest.md deleted file mode 100644 index 7853576..0000000 --- a/skills/graphql-architect/references/migration-from-rest.md +++ /dev/null @@ -1,1141 +0,0 @@ -# REST to GraphQL Migration Guide - ---- - -## When to Use This Guide - -**Migrate to GraphQL when:** -- Multiple round-trips required for complex UI views -- Over-fetching or under-fetching data is problematic -- Supporting diverse client needs (mobile, web, desktop) -- Team boundaries require federated API architecture -- Real-time subscriptions are core requirements -- Type safety across client-server boundary needed -- API versioning complexity is growing - -**Success indicators:** -- Client applications make many sequential REST calls -- Different clients need different data shapes -- Mobile apps suffer from bandwidth constraints -- Frontend teams wait on backend API changes -- Multiple REST versions exist concurrently - -## When NOT to Use GraphQL - -**Stick with REST when:** -- Simple CRUD operations with stable clients -- File upload/download is primary use case -- HTTP caching is critical (CDN, browser cache) -- Team lacks GraphQL expertise and training budget -- Existing REST API is well-designed and sufficient -- Third-party integrations require REST endpoints -- Query complexity would create security risks - -**Warning signs:** -- Team of 1-2 developers (operational overhead) -- Primarily server-to-server communication -- Static content delivery is the main requirement -- No complex data relationship navigation needed - ---- - -## Concept Mapping: REST to GraphQL - -| REST Concept | GraphQL Equivalent | Notes | -|--------------|-------------------|-------| -| GET /users | Query users | Read operations | -| GET /users/:id | Query user(id: ID!) | Single entity fetch | -| POST /users | Mutation createUser | Create operations | -| PUT /users/:id | Mutation updateUser | Update operations | -| DELETE /users/:id | Mutation deleteUser | Delete operations | -| PATCH /users/:id | Mutation updateUserPartial | Partial updates | -| Query params (?filter=...) | Field arguments | Filtering/sorting | -| URL path segments | Nested field selection | Data relationships | -| Multiple endpoints | Single query | Eliminate round-trips | -| Webhook callbacks | Subscriptions | Real-time updates | -| HTTP status codes | Errors array + data | Partial success model | -| API versioning | Schema evolution | Deprecation over versions | -| /users?include=posts | users { posts } | Eager loading control | -| Offset pagination | Cursor-based connections | Relay specification | -| Accept header | Operation selection | Content negotiation | -| OAuth/JWT tokens | Context authentication | Same auth patterns | - ---- - -## Pattern 1: GET Endpoints to Queries - -### REST Endpoint - -```typescript -// GET /api/users/:id -interface UserResponse { - id: string; - name: string; - email: string; - created_at: string; - posts: Array<{ - id: string; - title: string; - published: boolean; - }>; -} - -app.get('/api/users/:id', async (req, res) => { - const user = await db.users.findById(req.params.id); - const posts = await db.posts.findByUserId(user.id); // N+1 risk - - res.json({ - id: user.id, - name: user.name, - email: user.email, - created_at: user.createdAt.toISOString(), - posts: posts.map(p => ({ - id: p.id, - title: p.title, - published: p.published - })) - }); -}); -``` - -### GraphQL Schema - -```graphql -type User { - id: ID! - name: String! - email: String! - createdAt: DateTime! - posts: [Post!]! -} - -type Post { - id: ID! - title: String! - published: Boolean! - author: User! -} - -type Query { - user(id: ID!): User - users(filter: UserFilter, limit: Int = 20): [User!]! -} - -input UserFilter { - nameContains: String - createdAfter: DateTime -} - -scalar DateTime -``` - -### GraphQL Resolver with DataLoader - -```typescript -import DataLoader from 'dataloader'; -import { IResolvers } from '@graphql-tools/utils'; - -// Batch loading to prevent N+1 queries -const createPostsByUserIdLoader = (db: Database) => - new DataLoader(async (userIds) => { - const posts = await db.posts.findByUserIds([...userIds]); - - // Group posts by userId - const postsByUserId = userIds.map(id => - posts.filter(post => post.userId === id) - ); - - return postsByUserId; - }); - -const createUserByIdLoader = (db: Database) => - new DataLoader(async (ids) => { - const users = await db.users.findByIds([...ids]); - - // Maintain order matching input ids - return ids.map(id => users.find(user => user.id === id)); - }); - -interface Context { - db: Database; - loaders: { - userById: DataLoader; - postsByUserId: DataLoader; - }; -} - -const resolvers: IResolvers = { - Query: { - user: async (_, { id }, { loaders }) => { - return loaders.userById.load(id); - }, - - users: async (_, { filter, limit }, { db }) => { - return db.users.find(filter, { limit }); - }, - }, - - User: { - posts: async (user, _, { loaders }) => { - // DataLoader batches and caches these calls - return loaders.postsByUserId.load(user.id); - }, - }, - - Post: { - author: async (post, _, { loaders }) => { - return loaders.userById.load(post.userId); - }, - }, -}; - -// Apollo Server setup -import { ApolloServer } from '@apollo/server'; -import { startStandaloneServer } from '@apollo/server/standalone'; - -const server = new ApolloServer({ - typeDefs, - resolvers, -}); - -const { url } = await startStandaloneServer(server, { - context: async ({ req }) => { - const db = createDatabaseConnection(); - - return { - db, - loaders: { - userById: createUserByIdLoader(db), - postsByUserId: createPostsByUserIdLoader(db), - }, - }; - }, -}); -``` - -### Client Query Examples - -```typescript -// Flexible field selection - client controls response shape -const MINIMAL_USER = gql` - query GetUser($id: ID!) { - user(id: $id) { - id - name - } - } -`; - -const DETAILED_USER = gql` - query GetUserWithPosts($id: ID!) { - user(id: $id) { - id - name - email - createdAt - posts { - id - title - published - } - } - } -`; - -// Single query replacing multiple REST calls -const DASHBOARD_DATA = gql` - query Dashboard($userId: ID!) { - user(id: $userId) { - name - posts { - id - title - } - } - - # Would require separate REST endpoint - users(filter: { createdAfter: "2025-01-01" }, limit: 5) { - id - name - } - } -`; -``` - ---- - -## Pattern 2: POST/PUT/DELETE to Mutations - -### REST Endpoints - -```typescript -// POST /api/users -app.post('/api/users', async (req, res) => { - const { name, email, password } = req.body; - - if (!name || !email) { - return res.status(400).json({ error: 'Missing required fields' }); - } - - const user = await db.users.create({ name, email, password }); - res.status(201).json(user); -}); - -// PUT /api/users/:id -app.put('/api/users/:id', async (req, res) => { - const user = await db.users.update(req.params.id, req.body); - res.json(user); -}); - -// DELETE /api/users/:id -app.delete('/api/users/:id', async (req, res) => { - await db.users.delete(req.params.id); - res.status(204).send(); -}); -``` - -### GraphQL Schema - -```graphql -type Mutation { - createUser(input: CreateUserInput!): CreateUserPayload! - updateUser(input: UpdateUserInput!): UpdateUserPayload! - deleteUser(id: ID!): DeleteUserPayload! -} - -input CreateUserInput { - name: String! - email: String! - password: String! -} - -type CreateUserPayload { - user: User - errors: [UserError!]! -} - -input UpdateUserInput { - id: ID! - name: String - email: String -} - -type UpdateUserPayload { - user: User - errors: [UserError!]! -} - -type DeleteUserPayload { - deletedId: ID - errors: [UserError!]! -} - -type UserError { - field: String - message: String! - code: ErrorCode! -} - -enum ErrorCode { - VALIDATION_ERROR - NOT_FOUND - UNAUTHORIZED - INTERNAL_ERROR -} -``` - -### GraphQL Mutation Resolvers - -```typescript -const resolvers: IResolvers = { - Mutation: { - createUser: async (_, { input }, { db, user }) => { - try { - // Validation - if (!isValidEmail(input.email)) { - return { - user: null, - errors: [{ - field: 'email', - message: 'Invalid email format', - code: 'VALIDATION_ERROR', - }], - }; - } - - // Check for duplicate - const existing = await db.users.findByEmail(input.email); - if (existing) { - return { - user: null, - errors: [{ - field: 'email', - message: 'Email already registered', - code: 'VALIDATION_ERROR', - }], - }; - } - - const hashedPassword = await bcrypt.hash(input.password, 10); - const newUser = await db.users.create({ - name: input.name, - email: input.email, - password: hashedPassword, - }); - - return { - user: newUser, - errors: [], - }; - } catch (error) { - return { - user: null, - errors: [{ - message: 'Failed to create user', - code: 'INTERNAL_ERROR', - }], - }; - } - }, - - updateUser: async (_, { input }, { db, user }) => { - if (!user || user.id !== input.id) { - return { - user: null, - errors: [{ - message: 'Unauthorized', - code: 'UNAUTHORIZED', - }], - }; - } - - const updated = await db.users.update(input.id, { - ...(input.name && { name: input.name }), - ...(input.email && { email: input.email }), - }); - - return { - user: updated, - errors: [], - }; - }, - - deleteUser: async (_, { id }, { db, user }) => { - if (!user || user.id !== id) { - return { - deletedId: null, - errors: [{ message: 'Unauthorized', code: 'UNAUTHORIZED' }], - }; - } - - await db.users.delete(id); - - return { - deletedId: id, - errors: [], - }; - }, - }, -}; -``` - -### Client Mutation Examples - -```typescript -const CREATE_USER = gql` - mutation CreateUser($input: CreateUserInput!) { - createUser(input: $input) { - user { - id - name - email - createdAt - } - errors { - field - message - code - } - } - } -`; - -// Usage with error handling -const [createUser] = useMutation(CREATE_USER); - -const handleSubmit = async (formData) => { - const { data } = await createUser({ - variables: { - input: formData, - }, - }); - - if (data.createUser.errors.length > 0) { - // Handle validation errors - data.createUser.errors.forEach(error => { - setFieldError(error.field, error.message); - }); - } else { - // Success - use the returned user - navigate(`/users/${data.createUser.user.id}`); - } -}; -``` - ---- - -## Pattern 3: Pagination Migration - -### REST Offset Pagination - -```typescript -// GET /api/posts?page=2&limit=20 -app.get('/api/posts', async (req, res) => { - const page = parseInt(req.query.page) || 1; - const limit = parseInt(req.query.limit) || 20; - const offset = (page - 1) * limit; - - const posts = await db.posts.find({ - limit, - offset, - }); - - const total = await db.posts.count(); - - res.json({ - data: posts, - pagination: { - page, - limit, - total, - totalPages: Math.ceil(total / limit), - }, - }); -}); -``` - -### GraphQL Cursor-Based Pagination (Relay Connections) - -```graphql -type Query { - posts( - first: Int - after: String - last: Int - before: String - filter: PostFilter - ): PostConnection! -} - -type PostConnection { - edges: [PostEdge!]! - pageInfo: PageInfo! - totalCount: Int! -} - -type PostEdge { - node: Post! - cursor: String! -} - -type PageInfo { - hasNextPage: Boolean! - hasPreviousPage: Boolean! - startCursor: String - endCursor: String -} - -input PostFilter { - published: Boolean - authorId: ID - titleContains: String -} -``` - -### Cursor Pagination Resolver - -```typescript -import { encodeCursor, decodeCursor } from './cursor-utils'; - -const resolvers: IResolvers = { - Query: { - posts: async (_, args, { db }) => { - const { first, after, last, before, filter } = args; - - // Validate pagination args - if (first && last) { - throw new Error('Cannot specify both first and last'); - } - - const limit = first || last || 20; - const isForward = !!first || !last; - - // Decode cursor to get offset - let offset = 0; - if (after) { - offset = decodeCursor(after) + 1; - } else if (before) { - offset = Math.max(0, decodeCursor(before) - limit); - } - - // Fetch one extra to determine hasNextPage - const posts = await db.posts.find({ - filter, - limit: limit + 1, - offset, - orderBy: { createdAt: isForward ? 'DESC' : 'ASC' }, - }); - - const hasMore = posts.length > limit; - const nodes = hasMore ? posts.slice(0, limit) : posts; - - if (!isForward) { - nodes.reverse(); - } - - const edges = nodes.map((post, index) => ({ - node: post, - cursor: encodeCursor(offset + index), - })); - - const totalCount = await db.posts.count(filter); - - return { - edges, - pageInfo: { - hasNextPage: isForward ? hasMore : offset > 0, - hasPreviousPage: !isForward ? hasMore : offset > 0, - startCursor: edges[0]?.cursor, - endCursor: edges[edges.length - 1]?.cursor, - }, - totalCount, - }; - }, - }, -}; - -// cursor-utils.ts -export const encodeCursor = (offset: number): string => { - return Buffer.from(`cursor:${offset}`).toString('base64'); -}; - -export const decodeCursor = (cursor: string): number => { - const decoded = Buffer.from(cursor, 'base64').toString('utf-8'); - return parseInt(decoded.replace('cursor:', '')); -}; -``` - -### Client Pagination Query - -```typescript -const POSTS_QUERY = gql` - query Posts($first: Int!, $after: String, $filter: PostFilter) { - posts(first: $first, after: $after, filter: $filter) { - edges { - node { - id - title - published - author { - name - } - } - cursor - } - pageInfo { - hasNextPage - endCursor - } - totalCount - } - } -`; - -// Infinite scroll implementation -const PostList = () => { - const { data, loading, fetchMore } = useQuery(POSTS_QUERY, { - variables: { first: 20 }, - }); - - const loadMore = () => { - fetchMore({ - variables: { - after: data.posts.pageInfo.endCursor, - }, - updateQuery: (prev, { fetchMoreResult }) => { - if (!fetchMoreResult) return prev; - - return { - posts: { - ...fetchMoreResult.posts, - edges: [ - ...prev.posts.edges, - ...fetchMoreResult.posts.edges, - ], - }, - }; - }, - }); - }; - - return ( -
- {data?.posts.edges.map(({ node }) => ( - - ))} - - {data?.posts.pageInfo.hasNextPage && ( - - )} -
- ); -}; -``` - ---- - -## Pattern 4: Authentication Translation - -### REST Authentication - -```typescript -// REST middleware -app.use(async (req, res, next) => { - const token = req.headers.authorization?.replace('Bearer ', ''); - - if (token) { - try { - const payload = jwt.verify(token, process.env.JWT_SECRET); - req.user = await db.users.findById(payload.userId); - } catch (error) { - return res.status(401).json({ error: 'Invalid token' }); - } - } - - next(); -}); -``` - -### GraphQL Authentication Context - -```typescript -import { ApolloServer } from '@apollo/server'; -import { GraphQLError } from 'graphql'; - -interface AuthContext { - user: User | null; - requireAuth: () => User; -} - -const server = new ApolloServer({ - typeDefs, - resolvers, -}); - -await startStandaloneServer(server, { - context: async ({ req }) => { - const token = req.headers.authorization?.replace('Bearer ', ''); - let user: User | null = null; - - if (token) { - try { - const payload = jwt.verify(token, process.env.JWT_SECRET); - user = await db.users.findById(payload.userId); - } catch (error) { - // Token invalid - continue with user = null - } - } - - return { - user, - db, - loaders: createLoaders(db), - - // Helper to enforce authentication - requireAuth: (): User => { - if (!user) { - throw new GraphQLError('Authentication required', { - extensions: { code: 'UNAUTHENTICATED' }, - }); - } - return user; - }, - }; - }, -}); -``` - -### Field-Level Authorization - -```typescript -import { GraphQLFieldResolver } from 'graphql'; - -// Authorization directive -const resolvers: IResolvers = { - Query: { - me: (_, __, { requireAuth }) => { - const user = requireAuth(); - return user; - }, - - users: (_, __, { user }) => { - // Optional auth - different data based on auth state - if (user?.role === 'ADMIN') { - return db.users.findAll(); - } - - // Public view - limited fields - return db.users.findPublic(); - }, - }, - - User: { - email: (user, _, { user: currentUser }) => { - // Field-level privacy - if (currentUser?.id === user.id || currentUser?.role === 'ADMIN') { - return user.email; - } - return null; - }, - }, -}; -``` - ---- - -## BFF (Backend for Frontend) Architecture - -### Multi-Client GraphQL Gateway - -```typescript -// Schema stitching for different clients -import { stitchSchemas } from '@graphql-tools/stitch'; - -// Mobile-optimized schema -const mobileSchema = makeExecutableSchema({ - typeDefs: ` - type Query { - # Denormalized for fewer round-trips - dashboard: MobileDashboard! - } - - type MobileDashboard { - user: User! - recentPosts: [Post!]! - notifications: [Notification!]! - # All data needed for mobile home screen - } - `, - resolvers: mobileResolvers, -}); - -// Web-optimized schema -const webSchema = makeExecutableSchema({ - typeDefs: ` - type Query { - # Granular for efficient caching - user(id: ID!): User - posts(filter: PostFilter): PostConnection! - notifications(unreadOnly: Boolean): [Notification!]! - } - `, - resolvers: webResolvers, -}); - -// Client-specific servers -const mobileServer = new ApolloServer({ - schema: mobileSchema, - introspection: true, -}); - -const webServer = new ApolloServer({ - schema: webSchema, - introspection: true, -}); - -// Route based on client header -app.use('/graphql', (req, res) => { - const client = req.headers['x-client-type']; - - if (client === 'mobile') { - return mobileServer.handleRequest(req, res); - } - - return webServer.handleRequest(req, res); -}); -``` - ---- - -## Incremental Migration Strategy - -### Phase 1: GraphQL Wrapper (Weeks 1-2) - -```typescript -// Wrap existing REST endpoints with GraphQL -const resolvers: IResolvers = { - Query: { - user: async (_, { id }) => { - // Call existing REST API internally - const response = await fetch(`http://localhost:3000/api/users/${id}`); - return response.json(); - }, - }, -}; - -// Allows GraphQL adoption without backend rewrites -// Clients can start using GraphQL immediately -``` - -### Phase 2: Parallel Implementation (Weeks 3-6) - -```typescript -// Implement GraphQL resolvers with direct DB access -// Keep REST endpoints running -const resolvers: IResolvers = { - Query: { - user: async (_, { id }, { db }) => { - // New implementation - direct database - return db.users.findById(id); - }, - }, -}; - -// Feature flag to route traffic -const USE_GRAPHQL = process.env.GRAPHQL_ENABLED === 'true'; - -app.get('/api/users/:id', async (req, res) => { - if (USE_GRAPHQL) { - // Forward to GraphQL - const result = await graphqlServer.executeOperation({ - query: `query GetUser($id: ID!) { user(id: $id) { ... } }`, - variables: { id: req.params.id }, - }); - return res.json(result.data?.user); - } - - // Legacy REST implementation - const user = await db.users.findById(req.params.id); - res.json(user); -}); -``` - -### Phase 3: Client Migration (Weeks 7-12) - -```typescript -// Gradual client migration with monitoring -import { setContext } from '@apollo/client/link/context'; - -const migrationLink = setContext((_, { headers }) => { - return { - headers: { - ...headers, - 'x-graphql-migration': 'phase-3', - }, - }; -}); - -// A/B test GraphQL vs REST in production -// Monitor performance, errors, client satisfaction -``` - -### Phase 4: REST Deprecation (Week 13+) - -```typescript -// Deprecate REST endpoints gradually -app.get('/api/users/:id', (req, res) => { - res.status(410).json({ - error: 'This endpoint is deprecated', - message: 'Please use GraphQL endpoint at /graphql', - migrationGuide: 'https://docs.example.com/graphql-migration', - sunsetDate: '2025-06-01', - }); -}); - -// Eventually remove REST entirely -``` - ---- - -## Common Pitfalls - -### Pitfall 1: N+1 Query Problem - -```typescript -// BAD - Causes N+1 queries -const resolvers = { - User: { - posts: async (user, _, { db }) => { - // Called once per user - N queries if you fetch N users - return db.posts.findByUserId(user.id); - }, - }, -}; - -// GOOD - Use DataLoader -const resolvers = { - User: { - posts: async (user, _, { loaders }) => { - // Batched and cached - return loaders.postsByUserId.load(user.id); - }, - }, -}; -``` - -### Pitfall 2: Exposing Database Schema Directly - -```typescript -// BAD - Tightly coupled to database -type User { - user_id: Int! # Database column name - first_name: String # Database structure leaks - last_name: String - created_at: String # Raw DB type -} - -// GOOD - API-first design -type User { - id: ID! # Abstract identifier - name: String! # Computed from first + last - createdAt: DateTime! # Proper type -} -``` - -### Pitfall 3: Missing Error Handling - -```typescript -// BAD - Errors kill entire response -const resolvers = { - Query: { - dashboard: async () => { - const user = await fetchUser(); // Throws on error - const posts = await fetchPosts(); // Never reached if user fails - return { user, posts }; - }, - }, -}; - -// GOOD - Partial success model -const resolvers = { - Query: { - dashboard: async () => { - return {}; // Return empty object - }, - }, - - Dashboard: { - user: async (_, __, context) => { - try { - return await fetchUser(); - } catch (error) { - return null; // Client still gets posts - } - }, - - posts: async () => { - try { - return await fetchPosts(); - } catch (error) { - return []; // Graceful degradation - } - }, - }, -}; -``` - -### Pitfall 4: Ignoring Query Complexity - -```typescript -// BAD - No limits on query depth/complexity -// Client can write expensive queries that DOS the server - -// GOOD - Implement complexity limits -import { createComplexityLimitRule } from 'graphql-validation-complexity'; - -const server = new ApolloServer({ - typeDefs, - resolvers, - validationRules: [ - createComplexityLimitRule(1000, { - onCost: (cost) => { - console.log('Query cost:', cost); - }, - }), - ], -}); - -// Assign costs to fields -const typeDefs = ` - type Query { - users: [User!]! @cost(complexity: 10) - user(id: ID!): User @cost(complexity: 1) - } - - type User { - posts: [Post!]! @cost(complexity: 5, multipliers: ["first"]) - } -`; -``` - -### Pitfall 5: Over-Normalization - -```typescript -// BAD - Too granular, requires many queries -type Query { - userName(id: ID!): String - userEmail(id: ID!): String - userPosts(userId: ID!): [Post!]! -} - -// GOOD - Logical grouping -type Query { - user(id: ID!): User -} - -type User { - name: String! - email: String! - posts: [Post!]! -} -``` - ---- - -## Cross-References - -**Related Skills:** -- **graphql-architect/references/schema-design.md** - Type system patterns and schema structure -- **graphql-architect/references/federation-guide.md** - Multi-service GraphQL architecture -- **backend-developer** - REST API implementation patterns -- **api-designer** - API design principles and consistency - -**When to Escalate:** -- Federation across microservices → See federation-guide.md -- Schema design questions → See schema-design.md -- Complex subscription requirements → Consult graphql-architect -- Performance optimization → Partner with performance-engineer - ---- - -## Migration Checklist - -- [ ] Identify most-used REST endpoints -- [ ] Map REST resources to GraphQL types -- [ ] Design schema following best practices -- [ ] Implement DataLoaders for all relations -- [ ] Add authentication/authorization -- [ ] Implement pagination (cursor-based) -- [ ] Set up query complexity limits -- [ ] Create client migration plan -- [ ] Monitor performance metrics -- [ ] Document GraphQL queries for clients -- [ ] Train team on GraphQL patterns -- [ ] Plan REST endpoint sunset timeline - -**Migration complete when:** -- All critical paths use GraphQL -- REST endpoints deprecated with sunset dates -- Client applications fully migrated -- Performance metrics meet or exceed REST baseline -- Team confident in GraphQL maintenance diff --git a/skills/graphql-architect/references/resolvers.md b/skills/graphql-architect/references/resolvers.md deleted file mode 100644 index 85d6cad..0000000 --- a/skills/graphql-architect/references/resolvers.md +++ /dev/null @@ -1,425 +0,0 @@ -# GraphQL Resolvers - -## Basic Resolver Pattern - -```typescript -import { GraphQLResolveInfo } from 'graphql'; - -// Resolver signature -type Resolver = ( - parent: TSource, - args: TArgs, - context: TContext, - info: GraphQLResolveInfo -) => Promise | TReturn; - -// User resolvers -const resolvers = { - Query: { - user: async ( - parent, - args: { id: string }, - context: Context - ): Promise => { - return context.dataSources.users.findById(args.id); - }, - - users: async ( - parent, - args: { first?: number; after?: string }, - context: Context - ): Promise => { - return context.dataSources.users.findAll(args); - }, - }, - - Mutation: { - createUser: async ( - parent, - args: { input: CreateUserInput }, - context: Context - ): Promise => { - if (!context.user) { - throw new Error('Unauthorized'); - } - return context.dataSources.users.create(args.input); - }, - }, -}; -``` - -## Context Setup - -```typescript -import { Request } from 'express'; -import { User } from './models'; -import { DataSources } from './datasources'; - -export interface Context { - user: User | null; - dataSources: DataSources; - loaders: Loaders; - req: Request; - authToken: string | null; -} - -// Apollo Server context -const server = new ApolloServer({ - typeDefs, - resolvers, - context: async ({ req }): Promise => { - // Extract auth token - const authToken = req.headers.authorization?.replace('Bearer ', '') || null; - - // Verify user - let user: User | null = null; - if (authToken) { - user = await verifyToken(authToken); - } - - // Create data sources - const dataSources = new DataSources({ - db: prisma, - redis: redisClient, - }); - - // Create DataLoaders - const loaders = createLoaders(dataSources); - - return { - user, - dataSources, - loaders, - req, - authToken, - }; - }, -}); -``` - -## DataLoader for N+1 Prevention - -```typescript -import DataLoader from 'dataloader'; - -// Create loaders -export function createLoaders(dataSources: DataSources): Loaders { - return { - userLoader: new DataLoader( - async (ids: readonly string[]) => { - const users = await dataSources.users.findByIds([...ids]); - // Return in same order as input ids - return ids.map(id => users.find(u => u.id === id) || null); - }, - { - cache: true, - batchScheduleFn: (callback) => setTimeout(callback, 10), - } - ), - - postsByAuthorLoader: new DataLoader( - async (authorIds: readonly string[]) => { - const posts = await dataSources.posts.findByAuthorIds([...authorIds]); - // Group by author - return authorIds.map(authorId => - posts.filter(p => p.authorId === authorId) - ); - } - ), - }; -} - -// Field resolver using DataLoader -const resolvers = { - Post: { - author: async ( - post: Post, - args, - context: Context - ): Promise => { - // Batches multiple requests into single DB query - return context.loaders.userLoader.load(post.authorId); - }, - }, - - User: { - posts: async ( - user: User, - args, - context: Context - ): Promise => { - return context.loaders.postsByAuthorLoader.load(user.id); - }, - }, -}; -``` - -## Field Resolvers - -```typescript -const resolvers = { - User: { - // Simple field resolver - fullName: (user: User): string => { - return `${user.firstName} ${user.lastName}`; - }, - - // Async field resolver with DB query - postCount: async ( - user: User, - args, - context: Context - ): Promise => { - return context.dataSources.posts.countByAuthor(user.id); - }, - - // Field resolver with arguments - posts: async ( - user: User, - args: { first?: number; status?: PostStatus }, - context: Context - ): Promise => { - return context.dataSources.posts.findByAuthor(user.id, { - limit: args.first, - status: args.status, - }); - }, - - // Nullable field with conditional logic - profile: async ( - user: User, - args, - context: Context - ): Promise => { - if (!user.hasProfile) return null; - return context.loaders.profileLoader.load(user.id); - }, - }, -}; -``` - -## Interface Resolvers - -```typescript -const resolvers = { - // Interface type resolver - Searchable: { - __resolveType(obj: Article | Video | Podcast): string { - if ('content' in obj) return 'Article'; - if ('duration' in obj) return 'Video'; - if ('audioUrl' in obj) return 'Podcast'; - throw new Error('Unknown Searchable type'); - }, - }, - - // Common interface fields (shared resolvers) - Article: { - id: (article: Article) => article.id, - title: (article: Article) => article.title, - description: (article: Article) => article.description, - }, - - Video: { - id: (video: Video) => video.id, - title: (video: Video) => video.title, - description: (video: Video) => video.description, - }, -}; -``` - -## Union Resolvers - -```typescript -const resolvers = { - // Union type resolver - SearchResult: { - __resolveType( - obj: Article | Video | Podcast, - context: Context, - info: GraphQLResolveInfo - ): string { - if ('content' in obj) return 'Article'; - if ('duration' in obj && 'url' in obj) return 'Video'; - if ('audioUrl' in obj) return 'Podcast'; - throw new Error('Unknown SearchResult type'); - }, - }, - - Query: { - searchContent: async ( - parent, - args: { query: string }, - context: Context - ): Promise<(Article | Video | Podcast)[]> => { - // Return mixed array of different types - const [articles, videos, podcasts] = await Promise.all([ - context.dataSources.articles.search(args.query), - context.dataSources.videos.search(args.query), - context.dataSources.podcasts.search(args.query), - ]); - return [...articles, ...videos, ...podcasts]; - }, - }, -}; -``` - -## Error Handling - -```typescript -import { GraphQLError } from 'graphql'; -import { ApolloServerErrorCode } from '@apollo/server/errors'; - -const resolvers = { - Query: { - user: async ( - parent, - args: { id: string }, - context: Context - ): Promise => { - const user = await context.dataSources.users.findById(args.id); - - if (!user) { - throw new GraphQLError('User not found', { - extensions: { - code: 'USER_NOT_FOUND', - http: { status: 404 }, - userId: args.id, - }, - }); - } - - return user; - }, - }, - - Mutation: { - updateUser: async ( - parent, - args: { id: string; input: UpdateUserInput }, - context: Context - ): Promise => { - // Check authentication - if (!context.user) { - throw new GraphQLError('Unauthorized', { - extensions: { - code: ApolloServerErrorCode.UNAUTHENTICATED, - http: { status: 401 }, - }, - }); - } - - // Check authorization - if (context.user.id !== args.id && !context.user.isAdmin) { - throw new GraphQLError('Forbidden', { - extensions: { - code: ApolloServerErrorCode.FORBIDDEN, - http: { status: 403 }, - }, - }); - } - - try { - return await context.dataSources.users.update(args.id, args.input); - } catch (error) { - throw new GraphQLError('Failed to update user', { - extensions: { - code: 'UPDATE_FAILED', - originalError: error, - }, - }); - } - }, - }, -}; -``` - -## Pagination Resolvers - -```typescript -import { encodeCursor, decodeCursor } from './utils/cursor'; - -const resolvers = { - Query: { - posts: async ( - parent, - args: { first?: number; after?: string }, - context: Context - ): Promise => { - const limit = Math.min(args.first || 10, 100); - const cursor = args.after ? decodeCursor(args.after) : null; - - // Fetch one extra to determine hasNextPage - const posts = await context.dataSources.posts.findAll({ - limit: limit + 1, - cursor, - }); - - const hasNextPage = posts.length > limit; - const edges = posts.slice(0, limit).map(post => ({ - node: post, - cursor: encodeCursor(post.id), - })); - - return { - edges, - pageInfo: { - hasNextPage, - hasPreviousPage: !!cursor, - startCursor: edges[0]?.cursor || null, - endCursor: edges[edges.length - 1]?.cursor || null, - }, - totalCount: await context.dataSources.posts.count(), - }; - }, - }, -}; -``` - -## Batching Patterns - -```typescript -// Batch multiple queries -class UserDataSource { - private db: PrismaClient; - - async findByIds(ids: string[]): Promise { - // Single query instead of N queries - return this.db.user.findMany({ - where: { id: { in: ids } }, - }); - } - - async findByEmails(emails: string[]): Promise { - return this.db.user.findMany({ - where: { email: { in: emails } }, - }); - } -} - -// DataLoader with caching -const userLoader = new DataLoader( - async (ids) => { - console.log('Batching user queries:', ids.length); - const users = await dataSources.users.findByIds([...ids]); - return ids.map(id => users.find(u => u.id === id) || null); - }, - { - cache: true, - maxBatchSize: 100, - batchScheduleFn: (callback) => setTimeout(callback, 10), - } -); -``` - -## Resolver Best Practices - -1. **Use DataLoader**: Always batch and cache database queries -2. **Avoid N+1**: Use DataLoader for all foreign key relationships -3. **Type Safety**: Use TypeScript for resolver type safety -4. **Error Handling**: Throw GraphQLError with proper codes and extensions -5. **Authorization**: Check permissions in resolvers, not data sources -6. **Pagination**: Implement cursor-based pagination for lists -7. **Context**: Keep context creation lightweight -8. **Caching**: Use DataLoader caching per request -9. **Batching**: Batch queries with DataLoader or in data source -10. **Testing**: Unit test resolvers with mocked context diff --git a/skills/graphql-architect/references/schema-design.md b/skills/graphql-architect/references/schema-design.md deleted file mode 100644 index 4043433..0000000 --- a/skills/graphql-architect/references/schema-design.md +++ /dev/null @@ -1,393 +0,0 @@ -# GraphQL Schema Design - -## Object Types - -```graphql -""" -User account with authentication and profile information. -All users must have a unique email address. -""" -type User { - "Unique user identifier" - id: ID! - "User's email address (unique)" - email: String! - "Display name (optional)" - username: String - "Account creation timestamp" - createdAt: DateTime! - "User's posts (paginated)" - posts(first: Int = 10, after: String): PostConnection! - "User's profile (nullable if not completed)" - profile: Profile -} - -type Profile { - id: ID! - bio: String - avatarUrl: URL - website: URL - location: String -} - -type Post { - id: ID! - title: String! - content: String! - author: User! - publishedAt: DateTime - status: PostStatus! - tags: [Tag!]! - comments(first: Int, after: String): CommentConnection! -} -``` - -## Interfaces - -```graphql -""" -Common interface for all content that can be timestamped -""" -interface Timestamped { - id: ID! - createdAt: DateTime! - updatedAt: DateTime! -} - -""" -Interface for searchable content -""" -interface Searchable { - id: ID! - title: String! - description: String -} - -type Article implements Timestamped & Searchable { - id: ID! - title: String! - description: String - content: String! - createdAt: DateTime! - updatedAt: DateTime! - author: User! -} - -type Video implements Timestamped & Searchable { - id: ID! - title: String! - description: String - url: URL! - duration: Int! - createdAt: DateTime! - updatedAt: DateTime! - uploader: User! -} - -# Query returning interface -type Query { - search(query: String!): [Searchable!]! -} -``` - -## Union Types - -```graphql -""" -Result of a content search - can be Article, Video, or Podcast -""" -union SearchResult = Article | Video | Podcast - -""" -Notification types that users can receive -""" -union Notification = CommentNotification | LikeNotification | FollowNotification - -type CommentNotification { - id: ID! - comment: Comment! - post: Post! - createdAt: DateTime! -} - -type LikeNotification { - id: ID! - liker: User! - post: Post! - createdAt: DateTime! -} - -type Query { - searchContent(query: String!): [SearchResult!]! - notifications(first: Int): [Notification!]! -} -``` - -## Enums - -```graphql -""" -Post publication status -""" -enum PostStatus { - DRAFT - PUBLISHED - ARCHIVED - DELETED -} - -""" -User role for authorization -""" -enum UserRole { - ADMIN - MODERATOR - USER - GUEST -} - -""" -Sort direction for queries -""" -enum SortOrder { - ASC - DESC -} - -type Query { - posts( - status: PostStatus - orderBy: SortOrder = DESC - ): [Post!]! -} -``` - -## Input Types - -```graphql -""" -Input for creating a new user -""" -input CreateUserInput { - email: String! - password: String! - username: String - profile: ProfileInput -} - -input ProfileInput { - bio: String - avatarUrl: URL - website: URL - location: String -} - -""" -Input for updating a post -""" -input UpdatePostInput { - title: String - content: String - status: PostStatus - tags: [ID!] -} - -""" -Pagination and filtering input -""" -input PostFilterInput { - status: PostStatus - authorId: ID - tags: [String!] - search: String - createdAfter: DateTime - createdBefore: DateTime -} - -type Mutation { - createUser(input: CreateUserInput!): User! - updatePost(id: ID!, input: UpdatePostInput!): Post! -} - -type Query { - posts(filter: PostFilterInput, first: Int, after: String): PostConnection! -} -``` - -## Custom Scalars - -```graphql -""" -ISO 8601 date-time string -""" -scalar DateTime - -""" -Valid URL string -""" -scalar URL - -""" -Valid email address -""" -scalar Email - -""" -JSON object -""" -scalar JSON - -""" -Positive integer -""" -scalar PositiveInt - -type User { - id: ID! - email: Email! - createdAt: DateTime! - website: URL - metadata: JSON - age: PositiveInt -} -``` - -## Pagination Patterns - -```graphql -""" -Cursor-based pagination (Relay specification) -""" -type PostConnection { - edges: [PostEdge!]! - pageInfo: PageInfo! - totalCount: Int! -} - -type PostEdge { - node: Post! - cursor: String! -} - -type PageInfo { - hasNextPage: Boolean! - hasPreviousPage: Boolean! - startCursor: String - endCursor: String -} - -type Query { - posts( - first: Int - after: String - last: Int - before: String - ): PostConnection! -} -``` - -## Nullable vs Non-Nullable Best Practices - -```graphql -type User { - # Non-nullable: guaranteed to exist - id: ID! - email: String! - createdAt: DateTime! - - # Nullable: optional or may not exist yet - username: String - bio: String - avatarUrl: URL - - # Non-null list of nullable items - # List always exists but can be empty, items can be null - tags: [String]! - - # Non-null list of non-null items - # List always exists, all items guaranteed non-null - roles: [UserRole!]! - - # Nullable list of non-null items - # List may be null, but if exists, all items non-null - posts: [Post!] -} - -type Query { - # Non-null: query always returns result (empty list if none) - users: [User!]! - - # Nullable: may return null if not found - user(id: ID!): User - - # Non-null: guaranteed to return result or error - currentUser: User! -} -``` - -## Field Deprecation - -```graphql -type User { - id: ID! - email: String! - - # Deprecated field with migration path - name: String @deprecated(reason: "Use 'username' instead") - username: String - - # Deprecated with specific date - legacyId: String @deprecated( - reason: "Migrating to UUID. Will be removed 2025-06-01" - ) -} -``` - -## Schema Documentation - -```graphql -""" -User represents an authenticated account in the system. -Users can create posts, comments, and interact with content. - -Example query: -``` -query GetUser { - user(id: "123") { - email - username - posts(first: 10) { - edges { - node { - title - } - } - } - } -} -``` -""" -type User { - "Unique identifier for the user" - id: ID! - - "Email address (must be unique across all users)" - email: String! - - "Optional display name (defaults to email if not set)" - username: String -} -``` - -## Design Principles - -1. **Nullable Fields**: Make fields nullable by default unless guaranteed to exist -2. **List Fields**: Use `[Type!]!` for lists that always exist with non-null items -3. **Documentation**: Document all types and fields with descriptions -4. **Naming**: Use camelCase for fields, PascalCase for types -5. **Interfaces**: Use interfaces for shared fields across types -6. **Unions**: Use unions for polymorphic return types -7. **Input Types**: Create separate input types for mutations -8. **Scalars**: Use custom scalars for domain-specific types -9. **Deprecation**: Mark deprecated fields, provide migration path -10. **Examples**: Include example queries in documentation diff --git a/skills/graphql-architect/references/security.md b/skills/graphql-architect/references/security.md deleted file mode 100644 index 737878d..0000000 --- a/skills/graphql-architect/references/security.md +++ /dev/null @@ -1,569 +0,0 @@ -# GraphQL Security - -## Query Depth Limiting - -```typescript -import depthLimit from 'graphql-depth-limit'; -import { ApolloServer } from '@apollo/server'; - -const server = new ApolloServer({ - typeDefs, - resolvers, - validationRules: [ - // Limit query depth to 7 levels - depthLimit(7, { - ignore: [ - '_service', - '_entities', - 'pageInfo', - 'edges', - 'node', - ], - }), - ], -}); - -// Example: This query would be rejected (depth > 7) -// query TooDeep { -// user { -// posts { -// author { -// posts { -// author { -// posts { -// author { -// posts { # Depth 7 -// author { # Depth 8 - REJECTED -// name -// } -// } -// } -// } -// } -// } -// } -// } -// } -// } -``` - -## Query Complexity Analysis - -```typescript -import { createComplexityRule } from 'graphql-validation-complexity'; -import { GraphQLError } from 'graphql'; - -// Define field complexities -const complexityRule = createComplexityRule({ - maximumComplexity: 1000, - variables: {}, - onCost: (cost) => { - console.log('Query cost:', cost); - }, - createError(cost, documentNode) { - return new GraphQLError( - `Query too complex: ${cost}. Maximum allowed: 1000`, - { - extensions: { - code: 'COMPLEXITY_LIMIT_EXCEEDED', - cost, - limit: 1000, - }, - } - ); - }, - estimators: [ - // Simple field: cost 1 - { - estimateComplexity: ({ type }) => { - if (type.toString() === 'String' || type.toString() === 'Int') { - return 1; - } - return 0; - }, - }, - // List field: cost based on `first` argument - { - estimateComplexity: ({ args, childComplexity }) => { - const first = args.first || 10; - return first * childComplexity; - }, - }, - ], -}); - -const server = new ApolloServer({ - typeDefs, - resolvers, - validationRules: [complexityRule], -}); -``` - -## Custom Complexity Directives - -```graphql -# Schema definition -directive @cost( - complexity: Int! - multipliers: [String!] -) on FIELD_DEFINITION - -type Query { - # Simple query: cost 1 - user(id: ID!): User - - # List query: cost multiplied by `first` argument - users(first: Int = 10): [User!]! @cost(complexity: 1, multipliers: ["first"]) - - # Expensive query: cost 50 - analytics: Analytics! @cost(complexity: 50) -} - -type User { - id: ID! - name: String! @cost(complexity: 1) - - # Related list: cost multiplied by `first` - posts(first: Int = 10): [Post!]! @cost(complexity: 2, multipliers: ["first"]) - - # Expensive computation - recommendations: [User!]! @cost(complexity: 20) -} -``` - -```typescript -// Complexity calculator implementation -import { DirectiveNode } from 'graphql'; - -function calculateComplexity( - field: any, - args: Record, - childComplexity: number -): number { - const costDirective = field.astNode?.directives?.find( - (d: DirectiveNode) => d.name.value === 'cost' - ); - - if (!costDirective) { - return 1 + childComplexity; - } - - const complexity = - costDirective.arguments?.find((a) => a.name.value === 'complexity') - ?.value.value || 1; - - const multipliers = - costDirective.arguments?.find((a) => a.name.value === 'multipliers') - ?.value.values || []; - - let cost = complexity; - for (const multiplier of multipliers) { - const argValue = args[multiplier.value] || 1; - cost *= argValue; - } - - return cost + childComplexity; -} -``` - -## Rate Limiting - -```typescript -import rateLimit from 'express-rate-limit'; -import RedisStore from 'rate-limit-redis'; -import Redis from 'ioredis'; - -// IP-based rate limiting -const limiter = rateLimit({ - store: new RedisStore({ - client: new Redis(), - }), - windowMs: 15 * 60 * 1000, // 15 minutes - max: 100, // 100 requests per window - message: 'Too many requests from this IP', - standardHeaders: true, - legacyHeaders: false, -}); - -app.use('/graphql', limiter); - -// User-based rate limiting (more sophisticated) -import { RateLimiterRedis } from 'rate-limiter-flexible'; - -const rateLimiter = new RateLimiterRedis({ - storeClient: new Redis(), - points: 1000, // Number of points - duration: 60, // Per 60 seconds - blockDuration: 60 * 5, // Block for 5 minutes if exceeded -}); - -// In context creation -const server = new ApolloServer({ - typeDefs, - resolvers, - context: async ({ req }) => { - const userId = getUserId(req); - - try { - await rateLimiter.consume(userId, 1); - } catch (error) { - throw new GraphQLError('Rate limit exceeded', { - extensions: { - code: 'RATE_LIMIT_EXCEEDED', - retryAfter: error.msBeforeNext / 1000, - }, - }); - } - - return { userId }; - }, -}); -``` - -## Authentication - -```typescript -import jwt from 'jsonwebtoken'; -import { GraphQLError } from 'graphql'; - -// JWT verification -function verifyToken(token: string): User | null { - try { - const decoded = jwt.verify(token, process.env.JWT_SECRET!); - return decoded as User; - } catch (error) { - return null; - } -} - -// Context with authentication -const server = new ApolloServer({ - typeDefs, - resolvers, - context: async ({ req }): Promise => { - const authHeader = req.headers.authorization || ''; - const token = authHeader.replace('Bearer ', ''); - - let user: User | null = null; - if (token) { - user = verifyToken(token); - } - - return { - user, - dataSources: createDataSources(), - }; - }, -}); - -// Protected resolvers -const resolvers = { - Query: { - me: (parent, args, context: Context) => { - if (!context.user) { - throw new GraphQLError('Unauthorized', { - extensions: { code: 'UNAUTHENTICATED' }, - }); - } - return context.user; - }, - }, - - Mutation: { - createPost: (parent, args, context: Context) => { - if (!context.user) { - throw new GraphQLError('Unauthorized', { - extensions: { code: 'UNAUTHENTICATED' }, - }); - } - - return context.dataSources.posts.create({ - ...args.input, - authorId: context.user.id, - }); - }, - }, -}; -``` - -## Authorization Patterns - -```typescript -// Directive-based authorization -import { mapSchema, getDirective, MapperKind } from '@graphql-tools/utils'; -import { defaultFieldResolver } from 'graphql'; - -function authDirective(directiveName: string) { - return (schema: GraphQLSchema) => - mapSchema(schema, { - [MapperKind.OBJECT_FIELD]: (fieldConfig) => { - const authDirective = getDirective( - schema, - fieldConfig, - directiveName - )?.[0]; - - if (authDirective) { - const { requires } = authDirective; - const { resolve = defaultFieldResolver } = fieldConfig; - - fieldConfig.resolve = async (source, args, context, info) => { - // Check if user has required role - if (!context.user) { - throw new GraphQLError('Unauthorized', { - extensions: { code: 'UNAUTHENTICATED' }, - }); - } - - if (requires && !context.user.roles.includes(requires)) { - throw new GraphQLError('Forbidden', { - extensions: { - code: 'FORBIDDEN', - requiredRole: requires, - }, - }); - } - - return resolve(source, args, context, info); - }; - } - - return fieldConfig; - }, - }); -} - -// Schema with directives -const typeDefs = gql` - directive @auth(requires: Role) on FIELD_DEFINITION - - enum Role { - ADMIN - USER - GUEST - } - - type Query { - publicData: String! - userData: String! @auth(requires: USER) - adminData: String! @auth(requires: ADMIN) - } -`; - -const schema = authDirective('auth')(makeExecutableSchema({ typeDefs, resolvers })); -``` - -## Field-Level Authorization - -```typescript -// Row-level security -const resolvers = { - Query: { - posts: async (parent, args, context: Context) => { - // Filter based on user permissions - const posts = await context.dataSources.posts.findAll(); - - return posts.filter((post) => { - // Public posts visible to all - if (post.isPublic) return true; - - // Private posts only visible to author - if (context.user?.id === post.authorId) return true; - - // Check if user is admin - if (context.user?.roles.includes('ADMIN')) return true; - - return false; - }); - }, - }, - - Post: { - // Hide email unless viewer is author or admin - authorEmail: (post: Post, args, context: Context) => { - if (!context.user) return null; - - if ( - context.user.id === post.authorId || - context.user.roles.includes('ADMIN') - ) { - return post.authorEmail; - } - - return null; - }, - }, -}; -``` - -## Query Allowlisting - -```typescript -// Persisted queries (automatic allowlisting) -import { createPersistedQueryLink } from '@apollo/client/link/persisted-queries'; -import { createHash } from 'crypto'; - -// Client side -const link = createPersistedQueryLink({ - sha256: (query) => createHash('sha256').update(query).digest('hex'), - useGETForHashedQueries: true, -}); - -// Server side -import { ApolloServerPluginInlineTrace } from '@apollo/server/plugin/inlineTrace'; - -const server = new ApolloServer({ - typeDefs, - resolvers, - persistedQueries: { - cache: new Map(), // or Redis - }, - // Only allow persisted queries in production - allowBatchedHttpRequests: false, - introspection: process.env.NODE_ENV !== 'production', -}); - -// Manual allowlist -const allowedOperations = new Set([ - 'GetUser', - 'GetPosts', - 'CreatePost', - 'UpdatePost', -]); - -const server = new ApolloServer({ - typeDefs, - resolvers, - plugins: [ - { - async requestDidStart() { - return { - async didResolveOperation(requestContext) { - const operationName = requestContext.operationName; - - if (!operationName || !allowedOperations.has(operationName)) { - throw new GraphQLError('Operation not allowed', { - extensions: { code: 'OPERATION_NOT_ALLOWED' }, - }); - } - }, - }; - }, - }, - ], -}); -``` - -## Input Validation - -```typescript -import { z } from 'zod'; - -// Zod schema for input validation -const CreatePostSchema = z.object({ - title: z.string().min(3).max(200), - content: z.string().min(10).max(10000), - tags: z.array(z.string()).max(5), - isPublic: z.boolean(), -}); - -const resolvers = { - Mutation: { - createPost: async ( - parent, - args: { input: any }, - context: Context - ) => { - // Validate input - const validationResult = CreatePostSchema.safeParse(args.input); - - if (!validationResult.success) { - throw new GraphQLError('Invalid input', { - extensions: { - code: 'BAD_USER_INPUT', - validationErrors: validationResult.error.errors, - }, - }); - } - - const input = validationResult.data; - return context.dataSources.posts.create(input); - }, - }, -}; -``` - -## Introspection Control - -```typescript -// Disable introspection in production -import { ApolloServer } from '@apollo/server'; -import { ApolloServerPluginLandingPageDisabled } from '@apollo/server/plugin/disabled'; - -const server = new ApolloServer({ - typeDefs, - resolvers, - introspection: process.env.NODE_ENV !== 'production', - plugins: - process.env.NODE_ENV === 'production' - ? [ApolloServerPluginLandingPageDisabled()] - : [], -}); - -// Conditional introspection (admin only) -const server = new ApolloServer({ - typeDefs, - resolvers, - introspection: false, // Disable by default - plugins: [ - { - async requestDidStart({ request, contextValue }) { - // Allow introspection for admins - if ( - request.operationName === 'IntrospectionQuery' && - !contextValue.user?.isAdmin - ) { - throw new GraphQLError('Introspection disabled', { - extensions: { code: 'FORBIDDEN' }, - }); - } - }, - }, - ], -}); -``` - -## CSRF Protection - -```typescript -import csrf from 'csurf'; - -// CSRF protection for mutations -const csrfProtection = csrf({ cookie: true }); - -app.post('/graphql', csrfProtection, expressMiddleware(server)); - -// Client must send CSRF token -// fetch('/graphql', { -// method: 'POST', -// headers: { -// 'CSRF-Token': csrfToken, -// }, -// body: JSON.stringify({ query }), -// }); -``` - -## Security Best Practices - -1. **Depth Limiting**: Prevent deeply nested queries -2. **Complexity Analysis**: Calculate and limit query cost -3. **Rate Limiting**: Limit requests per user/IP -4. **Authentication**: Verify user identity in context -5. **Authorization**: Check permissions in resolvers -6. **Input Validation**: Validate all mutation inputs -7. **Query Allowlisting**: Use persisted queries in production -8. **Introspection Control**: Disable in production -9. **Error Sanitization**: Don't expose sensitive data in errors -10. **CORS Configuration**: Restrict allowed origins -11. **HTTPS Only**: Always use HTTPS in production -12. **Audit Logging**: Log sensitive operations diff --git a/skills/graphql-architect/references/subscriptions.md b/skills/graphql-architect/references/subscriptions.md deleted file mode 100644 index c131e68..0000000 --- a/skills/graphql-architect/references/subscriptions.md +++ /dev/null @@ -1,510 +0,0 @@ -# GraphQL Subscriptions - -## Basic Subscription Setup - -```typescript -// schema.graphql -type Subscription { - postCreated: Post! - postUpdated(id: ID!): Post! - commentAdded(postId: ID!): Comment! - userOnline: User! -} - -type Post { - id: ID! - title: String! - content: String! - author: User! -} - -type Comment { - id: ID! - content: String! - author: User! - post: Post! -} - -// server.ts -import { createServer } from 'http'; -import { ApolloServer } from '@apollo/server'; -import { expressMiddleware } from '@apollo/server/express4'; -import { ApolloServerPluginDrainHttpServer } from '@apollo/server/plugin/drainHttpServer'; -import { makeExecutableSchema } from '@graphql-tools/schema'; -import { WebSocketServer } from 'ws'; -import { useServer } from 'graphql-ws/lib/use/ws'; -import express from 'express'; - -const schema = makeExecutableSchema({ typeDefs, resolvers }); - -const app = express(); -const httpServer = createServer(app); - -// WebSocket server for subscriptions -const wsServer = new WebSocketServer({ - server: httpServer, - path: '/graphql', -}); - -const serverCleanup = useServer( - { - schema, - context: async (ctx, msg, args) => { - // Extract auth from connection params - const token = ctx.connectionParams?.authorization; - const user = token ? await verifyToken(token) : null; - return { user }; - }, - }, - wsServer -); - -const server = new ApolloServer({ - schema, - plugins: [ - ApolloServerPluginDrainHttpServer({ httpServer }), - { - async serverWillStart() { - return { - async drainServer() { - await serverCleanup.dispose(); - }, - }; - }, - }, - ], -}); - -await server.start(); -app.use('/graphql', express.json(), expressMiddleware(server)); - -httpServer.listen(4000); -``` - -## PubSub Implementation - -```typescript -// pubsub.ts -import { RedisPubSub } from 'graphql-redis-subscriptions'; -import Redis from 'ioredis'; - -// In-memory (development only) -import { PubSub } from 'graphql-subscriptions'; -export const pubsub = new PubSub(); - -// Redis (production) -const options = { - host: process.env.REDIS_HOST || 'localhost', - port: parseInt(process.env.REDIS_PORT || '6379'), - retryStrategy: (times: number) => Math.min(times * 50, 2000), -}; - -export const pubsub = new RedisPubSub({ - publisher: new Redis(options), - subscriber: new Redis(options), -}); - -// Strongly typed event names -export const EVENTS = { - POST_CREATED: 'POST_CREATED', - POST_UPDATED: 'POST_UPDATED', - COMMENT_ADDED: 'COMMENT_ADDED', - USER_ONLINE: 'USER_ONLINE', -} as const; -``` - -## Subscription Resolvers - -```typescript -import { withFilter } from 'graphql-subscriptions'; -import { pubsub, EVENTS } from './pubsub'; - -const resolvers = { - Subscription: { - // Simple subscription - postCreated: { - subscribe: () => pubsub.asyncIterator([EVENTS.POST_CREATED]), - }, - - // Filtered subscription - postUpdated: { - subscribe: withFilter( - () => pubsub.asyncIterator([EVENTS.POST_UPDATED]), - (payload, variables) => { - // Only send updates for specific post - return payload.postUpdated.id === variables.id; - } - ), - }, - - // Filtered with authorization - commentAdded: { - subscribe: withFilter( - (parent, args, context) => { - // Check auth before subscribing - if (!context.user) { - throw new Error('Unauthorized'); - } - return pubsub.asyncIterator([EVENTS.COMMENT_ADDED]); - }, - async (payload, variables, context) => { - // Filter by post and check permissions - if (payload.commentAdded.postId !== variables.postId) { - return false; - } - - // Check if user has access to post - const post = await context.dataSources.posts.findById( - variables.postId - ); - return post && post.isPublic || post.authorId === context.user.id; - } - ), - }, - - // Complex subscription with multiple filters - userOnline: { - subscribe: withFilter( - () => pubsub.asyncIterator([EVENTS.USER_ONLINE]), - (payload, variables, context) => { - // Only notify friends - return context.user.friends.includes(payload.userOnline.id); - } - ), - }, - }, - - Mutation: { - createPost: async (parent, args, context) => { - const post = await context.dataSources.posts.create(args.input); - - // Publish event - await pubsub.publish(EVENTS.POST_CREATED, { - postCreated: post, - }); - - return post; - }, - - updatePost: async (parent, args: { id: string; input: any }, context) => { - const post = await context.dataSources.posts.update( - args.id, - args.input - ); - - await pubsub.publish(EVENTS.POST_UPDATED, { - postUpdated: post, - }); - - return post; - }, - - addComment: async (parent, args, context) => { - const comment = await context.dataSources.comments.create(args.input); - - await pubsub.publish(EVENTS.COMMENT_ADDED, { - commentAdded: comment, - }); - - return comment; - }, - }, -}; -``` - -## Advanced Filtering - -```typescript -// Type-safe payload -interface PostCreatedPayload { - postCreated: Post; - tags: string[]; - isPublic: boolean; -} - -const resolvers = { - Subscription: { - postCreated: { - subscribe: withFilter( - () => pubsub.asyncIterator([EVENTS.POST_CREATED]), - async ( - payload: PostCreatedPayload, - variables: { tags?: string[]; authorId?: string }, - context: Context - ) => { - // Filter by tags - if (variables.tags && variables.tags.length > 0) { - const hasMatchingTag = payload.tags.some(tag => - variables.tags!.includes(tag) - ); - if (!hasMatchingTag) return false; - } - - // Filter by author - if (variables.authorId) { - if (payload.postCreated.authorId !== variables.authorId) { - return false; - } - } - - // Check permissions - if (!payload.isPublic) { - return ( - context.user?.id === payload.postCreated.authorId || - context.user?.isAdmin - ); - } - - return true; - } - ), - }, - }, -}; -``` - -## Connection Management - -```typescript -import { useServer } from 'graphql-ws/lib/use/ws'; - -const wsServer = useServer( - { - schema, - - // Connection lifecycle - onConnect: async (ctx) => { - console.log('Client connected'); - const token = ctx.connectionParams?.authorization; - - if (!token) { - throw new Error('Missing auth token'); - } - - const user = await verifyToken(token); - if (!user) { - throw new Error('Invalid token'); - } - - return { user }; - }, - - onDisconnect: (ctx, code, reason) => { - console.log('Client disconnected', code, reason); - }, - - // Subscription lifecycle - onSubscribe: async (ctx, msg) => { - console.log('Client subscribed', msg.payload.operationName); - - // Rate limiting - const subscriptionCount = getUserSubscriptionCount(ctx.user.id); - if (subscriptionCount >= 10) { - throw new Error('Too many subscriptions'); - } - - return { ctx, msg }; - }, - - onComplete: (ctx, msg) => { - console.log('Subscription completed', msg.id); - }, - - // Keep-alive - connectionInitWaitTimeout: 10000, - - // Context per subscription - context: async (ctx, msg, args) => { - const user = ctx.extra.user; - return { - user, - dataSources: createDataSources(), - subscriptionId: msg.id, - }; - }, - }, - wsServer -); -``` - -## Subscription Patterns - -```typescript -// Pattern 1: Entity updates -type Subscription { - entityUpdated(id: ID!): Entity! -} - -// Pattern 2: Collection updates -type Subscription { - entityAdded: Entity! - entityDeleted: ID! -} - -// Pattern 3: Stream of events -type Subscription { - events(types: [EventType!]): Event! -} - -// Pattern 4: Live query (with intervals) -type Subscription { - liveQuery(query: String!): [SearchResult!]! -} - -// resolvers.ts -const resolvers = { - Subscription: { - // Live query implementation - liveQuery: { - subscribe: async function* (parent, args, context) { - while (true) { - const results = await context.dataSources.search(args.query); - yield { liveQuery: results }; - await new Promise(resolve => setTimeout(resolve, 5000)); - } - }, - }, - }, -}; -``` - -## Error Handling - -```typescript -const resolvers = { - Subscription: { - postCreated: { - subscribe: withFilter( - () => pubsub.asyncIterator([EVENTS.POST_CREATED]), - async (payload, variables, context) => { - try { - // Check permissions - if (!context.user) { - throw new GraphQLError('Unauthorized', { - extensions: { code: 'UNAUTHENTICATED' }, - }); - } - - return true; - } catch (error) { - // Log error but don't propagate to client - console.error('Subscription filter error:', error); - return false; - } - } - ), - - // Resolve subscription payload - resolve: (payload) => { - try { - return payload.postCreated; - } catch (error) { - throw new GraphQLError('Failed to resolve subscription', { - extensions: { code: 'SUBSCRIPTION_RESOLVE_ERROR' }, - }); - } - }, - }, - }, -}; -``` - -## Client Usage - -```typescript -// Apollo Client setup -import { ApolloClient, InMemoryCache, split, HttpLink } from '@apollo/client'; -import { GraphQLWsLink } from '@apollo/client/link/subscriptions'; -import { getMainDefinition } from '@apollo/client/utilities'; -import { createClient } from 'graphql-ws'; - -const httpLink = new HttpLink({ - uri: 'http://localhost:4000/graphql', -}); - -const wsLink = new GraphQLWsLink( - createClient({ - url: 'ws://localhost:4000/graphql', - connectionParams: { - authorization: `Bearer ${token}`, - }, - }) -); - -const splitLink = split( - ({ query }) => { - const definition = getMainDefinition(query); - return ( - definition.kind === 'OperationDefinition' && - definition.operation === 'subscription' - ); - }, - wsLink, - httpLink -); - -const client = new ApolloClient({ - link: splitLink, - cache: new InMemoryCache(), -}); - -// Subscribe to events -const subscription = client - .subscribe({ - query: gql` - subscription OnPostCreated { - postCreated { - id - title - author { - username - } - } - } - `, - }) - .subscribe({ - next: (data) => console.log('New post:', data), - error: (err) => console.error('Subscription error:', err), - complete: () => console.log('Subscription completed'), - }); - -// Unsubscribe -subscription.unsubscribe(); -``` - -## Scaling Subscriptions - -```typescript -// Use Redis for multi-instance deployments -import { RedisPubSub } from 'graphql-redis-subscriptions'; - -// Horizontal scaling pattern -const pubsub = new RedisPubSub({ - publisher: new Redis(redisConfig), - subscriber: new Redis(redisConfig), - // Channel prefix for isolation - publisherPrefix: 'graphql:pub:', - subscriberPrefix: 'graphql:sub:', -}); - -// Connection limit per instance -const MAX_CONNECTIONS_PER_INSTANCE = 10000; - -// Load balancing with sticky sessions -// Ensure same user connects to same server instance -// for connection state management -``` - -## Subscription Best Practices - -1. **Authentication**: Always validate auth in onConnect and filters -2. **Authorization**: Check permissions in withFilter -3. **Rate Limiting**: Limit subscriptions per user -4. **Filtering**: Use withFilter for server-side filtering -5. **Cleanup**: Always clean up subscriptions on disconnect -6. **Scaling**: Use Redis PubSub for multi-instance deployments -7. **Error Handling**: Gracefully handle errors in filters and resolvers -8. **Testing**: Test subscription lifecycle and filtering -9. **Monitoring**: Track active connections and subscription count -10. **Performance**: Avoid N+1 in subscription resolvers diff --git a/skills/plan-ceo-review/SKILL.md b/skills/plan-ceo-review/SKILL.md deleted file mode 100644 index 1bfc936..0000000 --- a/skills/plan-ceo-review/SKILL.md +++ /dev/null @@ -1,1199 +0,0 @@ ---- -name: plan-ceo-review -version: 1.0.0 -description: | - CEO/founder-mode plan review. Rethink the problem, find the 10-star product, - challenge premises, expand scope when it creates a better product. Four modes: - SCOPE EXPANSION (dream big), SELECTIVE EXPANSION (hold scope + cherry-pick - expansions), HOLD SCOPE (maximum rigor), SCOPE REDUCTION (strip to essentials). - Use when asked to "think bigger", "expand scope", "strategy review", "rethink this", - or "is this ambitious enough". - Proactively suggest when the user is questioning scope or ambition of a plan, - or when the plan feels like it could be thinking bigger. -maturity: imported -benefits-from: [office-hours] -allowed-tools: - - Read - - Grep - - Glob - - Bash - - AskUserQuestion - - WebSearch ---- - - - -## Preamble (run first) - -```bash -_UPD=$(~/.claude/skills/gstack/bin/gstack-update-check 2>/dev/null || .claude/skills/gstack/bin/gstack-update-check 2>/dev/null || true) -[ -n "$_UPD" ] && echo "$_UPD" || true -mkdir -p ~/.gstack/sessions -touch ~/.gstack/sessions/"$PPID" -_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ') -find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true -_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true) -_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true") -_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown") -echo "BRANCH: $_BRANCH" -echo "PROACTIVE: $_PROACTIVE" -_LAKE_SEEN=$([ -f ~/.gstack/.completeness-intro-seen ] && echo "yes" || echo "no") -echo "LAKE_INTRO: $_LAKE_SEEN" -``` - -If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills — only invoke -them when the user explicitly asks. The user opted out of proactive suggestions. - -If output shows `UPGRADE_AVAILABLE `: read `~/.claude/skills/gstack/gstack-upgrade/SKILL.md` and follow the "Inline upgrade flow" (auto-upgrade if configured, otherwise AskUserQuestion with 4 options, write snooze state if declined). If `JUST_UPGRADED `: tell user "Running gstack v{to} (just updated!)" and continue. - -If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle. -Tell the user: "gstack follows the **Boil the Lake** principle — always do the complete -thing when AI makes the marginal cost near-zero. Read more: https://garryslist.org/posts/boil-the-ocean" -Then offer to open the essay in their default browser: - -```bash -open https://garryslist.org/posts/boil-the-ocean -touch ~/.gstack/.completeness-intro-seen -``` - -Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once. - - -## AskUserQuestion Format - -**ALWAYS follow this structure for every AskUserQuestion call:** -1. **Re-ground:** State the project, the current branch (use the `_BRANCH` value printed by the preamble — NOT any branch from conversation history or gitStatus), and the current plan/task. (1-2 sentences) -2. **Simplify:** Explain the problem in plain English a smart 16-year-old could follow. No raw function names, no internal jargon, no implementation details. Use concrete examples and analogies. Say what it DOES, not what it's called. -3. **Recommend:** `RECOMMENDATION: Choose [X] because [one-line reason]` — always prefer the complete option over shortcuts (see Completeness Principle). Include `Completeness: X/10` for each option. Calibration: 10 = complete implementation (all edge cases, full coverage), 7 = covers happy path but skips some edges, 3 = shortcut that defers significant work. If both options are 8+, pick the higher; if one is ≤5, flag it. -4. **Options:** Lettered options: `A) ... B) ... C) ...` — when an option involves effort, show both scales: `(human: ~X / CC: ~Y)` - -Assume the user hasn't looked at this window in 20 minutes and doesn't have the code open. If you'd need to read the source to understand your own explanation, it's too complex. - -Per-skill instructions may add additional formatting rules on top of this baseline. - -## Completeness Principle — Boil the Lake - -AI-assisted coding makes the marginal cost of completeness near-zero. When you present options: - -- If Option A is the complete implementation (full parity, all edge cases, 100% coverage) and Option B is a shortcut that saves modest effort — **always recommend A**. The delta between 80 lines and 150 lines is meaningless with CC+gstack. "Good enough" is the wrong instinct when "complete" costs minutes more. -- **Lake vs. ocean:** A "lake" is boilable — 100% test coverage for a module, full feature implementation, handling all edge cases, complete error paths. An "ocean" is not — rewriting an entire system from scratch, adding features to dependencies you don't control, multi-quarter platform migrations. Recommend boiling lakes. Flag oceans as out of scope. -- **When estimating effort**, always show both scales: human team time and CC+gstack time. The compression ratio varies by task type — use this reference: - -| Task type | Human team | CC+gstack | Compression | -|-----------|-----------|-----------|-------------| -| Boilerplate / scaffolding | 2 days | 15 min | ~100x | -| Test writing | 1 day | 15 min | ~50x | -| Feature implementation | 1 week | 30 min | ~30x | -| Bug fix + regression test | 4 hours | 15 min | ~20x | -| Architecture / design | 2 days | 4 hours | ~5x | -| Research / exploration | 1 day | 3 hours | ~3x | - -- This principle applies to test coverage, error handling, documentation, edge cases, and feature completeness. Don't skip the last 10% to "save time" — with AI, that 10% costs seconds. - -**Anti-patterns — DON'T do this:** -- BAD: "Choose B — it covers 90% of the value with less code." (If A is only 70 lines more, choose A.) -- BAD: "We can skip edge case handling to save time." (Edge case handling costs minutes with CC.) -- BAD: "Let's defer test coverage to a follow-up PR." (Tests are the cheapest lake to boil.) -- BAD: Quoting only human-team effort: "This would take 2 weeks." (Say: "2 weeks human / ~1 hour CC.") - -## Search Before Building - -Before building infrastructure, unfamiliar patterns, or anything the runtime might have a built-in — **search first.** Read `~/.claude/skills/gstack/ETHOS.md` for the full philosophy. - -**Three layers of knowledge:** -- **Layer 1** (tried and true — in distribution). Don't reinvent the wheel. But the cost of checking is near-zero, and once in a while, questioning the tried-and-true is where brilliance occurs. -- **Layer 2** (new and popular — search for these). But scrutinize: humans are subject to mania. Search results are inputs to your thinking, not answers. -- **Layer 3** (first principles — prize these above all). Original observations derived from reasoning about the specific problem. The most valuable of all. - -**Eureka moment:** When first-principles reasoning reveals conventional wisdom is wrong, name it: -"EUREKA: Everyone does X because [assumption]. But [evidence] shows this is wrong. Y is better because [reasoning]." - -Log eureka moments: -```bash -jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true -``` -Replace SKILL_NAME and ONE_LINE_SUMMARY. Runs inline — don't stop the workflow. - -**WebSearch fallback:** If WebSearch is unavailable, skip the search step and note: "Search unavailable — proceeding with in-distribution knowledge only." - -## Contributor Mode - -If `_CONTRIB` is `true`: you are in **contributor mode**. You're a gstack user who also helps make it better. - -**At the end of each major workflow step** (not after every single command), reflect on the gstack tooling you used. Rate your experience 0 to 10. If it wasn't a 10, think about why. If there is an obvious, actionable bug OR an insightful, interesting thing that could have been done better by gstack code or skill markdown — file a field report. Maybe our contributor will help make us better! - -**Calibration — this is the bar:** For example, `$B js "await fetch(...)"` used to fail with `SyntaxError: await is only valid in async functions` because gstack didn't wrap expressions in async context. Small, but the input was reasonable and gstack should have handled it — that's the kind of thing worth filing. Things less consequential than this, ignore. - -**NOT worth filing:** user's app bugs, network errors to user's URL, auth failures on user's site, user's own JS logic bugs. - -**To file:** write `~/.gstack/contributor-logs/{slug}.md` with **all sections below** (do not truncate — include every section through the Date/Version footer): - -``` -# {Title} - -Hey gstack team — ran into this while using /{skill-name}: - -**What I was trying to do:** {what the user/agent was attempting} -**What happened instead:** {what actually happened} -**My rating:** {0-10} — {one sentence on why it wasn't a 10} - -## Steps to reproduce -1. {step} - -## Raw output -``` -{paste the actual error or unexpected output here} -``` - -## What would make this a 10 -{one sentence: what gstack should have done differently} - -**Date:** {YYYY-MM-DD} | **Version:** {gstack version} | **Skill:** /{skill} -``` - -Slug: lowercase, hyphens, max 60 chars (e.g. `browse-js-no-await`). Skip if file already exists. Max 3 reports per session. File inline and continue — don't stop the workflow. Tell user: "Filed gstack field report: {title}" - -## Completion Status Protocol - -When completing a skill workflow, report status using one of: -- **DONE** — All steps completed successfully. Evidence provided for each claim. -- **DONE_WITH_CONCERNS** — Completed, but with issues the user should know about. List each concern. -- **BLOCKED** — Cannot proceed. State what is blocking and what was tried. -- **NEEDS_CONTEXT** — Missing information required to continue. State exactly what you need. - -### Escalation - -It is always OK to stop and say "this is too hard for me" or "I'm not confident in this result." - -Bad work is worse than no work. You will not be penalized for escalating. -- If you have attempted a task 3 times without success, STOP and escalate. -- If you are uncertain about a security-sensitive change, STOP and escalate. -- If the scope of work exceeds what you can verify, STOP and escalate. - -Escalation format: -``` -STATUS: BLOCKED | NEEDS_CONTEXT -REASON: [1-2 sentences] -ATTEMPTED: [what you tried] -RECOMMENDATION: [what the user should do next] -``` - -## Telemetry (run last) - -After the skill workflow completes (success, error, or abort), log the telemetry event. -Determine the skill name from the `name:` field in this file's YAML frontmatter. - -## Step 0: Detect base branch - -Determine which branch this PR targets. Use the result as "the base branch" in all subsequent steps. - -1. Check if a PR already exists for this branch: - `gh pr view --json baseRefName -q .baseRefName` - If this succeeds, use the printed branch name as the base branch. - -2. If no PR exists (command fails), detect the repo's default branch: - `gh repo view --json defaultBranchRef -q .defaultBranchRef.name` - -3. If both commands fail, fall back to `main`. - -Print the detected base branch name. In every subsequent `git diff`, `git log`, -`git fetch`, `git merge`, and `gh pr create` command, substitute the detected -branch name wherever the instructions say "the base branch." - ---- - -# Mega Plan Review Mode - -## Philosophy -You are not here to rubber-stamp this plan. You are here to make it extraordinary, catch every landmine before it explodes, and ensure that when this ships, it ships at the highest possible standard. -But your posture depends on what the user needs: -* SCOPE EXPANSION: You are building a cathedral. Envision the platonic ideal. Push scope UP. Ask "what would make this 10x better for 2x the effort?" You have permission to dream — and to recommend enthusiastically. But every expansion is the user's decision. Present each scope-expanding idea as an AskUserQuestion. The user opts in or out. -* SELECTIVE EXPANSION: You are a rigorous reviewer who also has taste. Hold the current scope as your baseline — make it bulletproof. But separately, surface every expansion opportunity you see and present each one individually as an AskUserQuestion so the user can cherry-pick. Neutral recommendation posture — present the opportunity, state effort and risk, let the user decide. Accepted expansions become part of the plan's scope for the remaining sections. Rejected ones go to "NOT in scope." -* HOLD SCOPE: You are a rigorous reviewer. The plan's scope is accepted. Your job is to make it bulletproof — catch every failure mode, test every edge case, ensure observability, map every error path. Do not silently reduce OR expand. -* SCOPE REDUCTION: You are a surgeon. Find the minimum viable version that achieves the core outcome. Cut everything else. Be ruthless. -* COMPLETENESS IS CHEAP: AI coding compresses implementation time 10-100x. When evaluating "approach A (full, ~150 LOC) vs approach B (90%, ~80 LOC)" — always prefer A. The 70-line delta costs seconds with CC. "Ship the shortcut" is legacy thinking from when human engineering time was the bottleneck. Boil the lake. -Critical rule: In ALL modes, the user is 100% in control. Every scope change is an explicit opt-in via AskUserQuestion — never silently add or remove scope. Once the user selects a mode, COMMIT to it. Do not silently drift toward a different mode. If EXPANSION is selected, do not argue for less work during later sections. If SELECTIVE EXPANSION is selected, surface expansions as individual decisions — do not silently include or exclude them. If REDUCTION is selected, do not sneak scope back in. Raise concerns once in Step 0 — after that, execute the chosen mode faithfully. -Do NOT make any code changes. Do NOT start implementation. Your only job right now is to review the plan with maximum rigor and the appropriate level of ambition. - -## Prime Directives -1. Zero silent failures. Every failure mode must be visible — to the system, to the team, to the user. If a failure can happen silently, that is a critical defect in the plan. -2. Every error has a name. Don't say "handle errors." Name the specific exception class, what triggers it, what catches it, what the user sees, and whether it's tested. Catch-all error handling (e.g., catch Exception, rescue StandardError, except Exception) is a code smell — call it out. -3. Data flows have shadow paths. Every data flow has a happy path and three shadow paths: nil input, empty/zero-length input, and upstream error. Trace all four for every new flow. -4. Interactions have edge cases. Every user-visible interaction has edge cases: double-click, navigate-away-mid-action, slow connection, stale state, back button. Map them. -5. Observability is scope, not afterthought. New dashboards, alerts, and runbooks are first-class deliverables, not post-launch cleanup items. -6. Diagrams are mandatory. No non-trivial flow goes undiagrammed. ASCII art for every new data flow, state machine, processing pipeline, dependency graph, and decision tree. -7. Everything deferred must be written down. Vague intentions are lies. TODOS.md or it doesn't exist. -8. Optimize for the 6-month future, not just today. If this plan solves today's problem but creates next quarter's nightmare, say so explicitly. -9. You have permission to say "scrap it and do this instead." If there's a fundamentally better approach, table it. I'd rather hear it now. - -## Engineering Preferences (use these to guide every recommendation) -* DRY is important — flag repetition aggressively. -* Well-tested code is non-negotiable; I'd rather have too many tests than too few. -* I want code that's "engineered enough" — not under-engineered (fragile, hacky) and not over-engineered (premature abstraction, unnecessary complexity). -* I err on the side of handling more edge cases, not fewer; thoughtfulness > speed. -* Bias toward explicit over clever. -* Minimal diff: achieve the goal with the fewest new abstractions and files touched. -* Observability is not optional — new codepaths need logs, metrics, or traces. -* Security is not optional — new codepaths need threat modeling. -* Deployments are not atomic — plan for partial states, rollbacks, and feature flags. -* ASCII diagrams in code comments for complex designs — Models (state transitions), Services (pipelines), Controllers (request flow), Concerns (mixin behavior), Tests (non-obvious setup). -* Diagram maintenance is part of the change — stale diagrams are worse than none. - -## Cognitive Patterns — How Great CEOs Think - -These are not checklist items. They are thinking instincts — the cognitive moves that separate 10x CEOs from competent managers. Let them shape your perspective throughout the review. Don't enumerate them; internalize them. - -1. **Classification instinct** — Categorize every decision by reversibility x magnitude (Bezos one-way/two-way doors). Most things are two-way doors; move fast. -2. **Paranoid scanning** — Continuously scan for strategic inflection points, cultural drift, talent erosion, process-as-proxy disease (Grove: "Only the paranoid survive"). -3. **Inversion reflex** — For every "how do we win?" also ask "what would make us fail?" (Munger). -4. **Focus as subtraction** — Primary value-add is what to *not* do. Jobs went from 350 products to 10. Default: do fewer things, better. -5. **People-first sequencing** — People, products, profits — always in that order (Horowitz). Talent density solves most other problems (Hastings). -6. **Speed calibration** — Fast is default. Only slow down for irreversible + high-magnitude decisions. 70% information is enough to decide (Bezos). -7. **Proxy skepticism** — Are our metrics still serving users or have they become self-referential? (Bezos Day 1). -8. **Narrative coherence** — Hard decisions need clear framing. Make the "why" legible, not everyone happy. -9. **Temporal depth** — Think in 5-10 year arcs. Apply regret minimization for major bets (Bezos at age 80). -10. **Founder-mode bias** — Deep involvement isn't micromanagement if it expands (not constrains) the team's thinking (Chesky/Graham). -11. **Wartime awareness** — Correctly diagnose peacetime vs wartime. Peacetime habits kill wartime companies (Horowitz). -12. **Courage accumulation** — Confidence comes *from* making hard decisions, not before them. "The struggle IS the job." -13. **Willfulness as strategy** — Be intentionally willful. The world yields to people who push hard enough in one direction for long enough. Most people give up too early (Altman). -14. **Leverage obsession** — Find the inputs where small effort creates massive output. Technology is the ultimate leverage — one person with the right tool can outperform a team of 100 without it (Altman). -15. **Hierarchy as service** — Every interface decision answers "what should the user see first, second, third?" Respecting their time, not prettifying pixels. -16. **Edge case paranoia (design)** — What if the name is 47 chars? Zero results? Network fails mid-action? First-time user vs power user? Empty states are features, not afterthoughts. -17. **Subtraction default** — "As little design as possible" (Rams). If a UI element doesn't earn its pixels, cut it. Feature bloat kills products faster than missing features. -18. **Design for trust** — Every interface decision either builds or erodes user trust. Pixel-level intentionality about safety, identity, and belonging. - -When you evaluate architecture, think through the inversion reflex. When you challenge scope, apply focus as subtraction. When you assess timeline, use speed calibration. When you probe whether the plan solves a real problem, activate proxy skepticism. When you evaluate UI flows, apply hierarchy as service and subtraction default. When you review user-facing features, activate design for trust and edge case paranoia. - -## Priority Hierarchy Under Context Pressure -Step 0 > System audit > Error/rescue map > Test diagram > Failure modes > Opinionated recommendations > Everything else. -Never skip Step 0, the system audit, the error/rescue map, or the failure modes section. These are the highest-leverage outputs. - -## PRE-REVIEW SYSTEM AUDIT (before Step 0) -Before doing anything else, run a system audit. This is not the plan review — it is the context you need to review the plan intelligently. -Run the following commands: -``` -git log --oneline -30 # Recent history -git diff --stat # What's already changed -git stash list # Any stashed work -grep -r "TODO\|FIXME\|HACK\|XXX" -l --exclude-dir=node_modules --exclude-dir=vendor --exclude-dir=.git . | head -30 -git log --since=30.days --name-only --format="" | sort | uniq -c | sort -rn | head -20 # Recently touched files -``` -Then read CLAUDE.md, TODOS.md, and any existing architecture docs. - -**Design doc check:** -```bash -SLUG=$(~/.claude/skills/gstack/browse/bin/remote-slug 2>/dev/null || basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)") -BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null | tr '/' '-' || echo 'no-branch') -DESIGN=$(ls -t ~/.gstack/projects/$SLUG/*-$BRANCH-design-*.md 2>/dev/null | head -1) -[ -z "$DESIGN" ] && DESIGN=$(ls -t ~/.gstack/projects/$SLUG/*-design-*.md 2>/dev/null | head -1) -[ -n "$DESIGN" ] && echo "Design doc found: $DESIGN" || echo "No design doc found" -``` -If a design doc exists (from `/office-hours`), read it. Use it as the source of truth for the problem statement, constraints, and chosen approach. If it has a `Supersedes:` field, note that this is a revised design. - -**Handoff note check** (reuses $SLUG and $BRANCH from the design doc check above): -```bash -HANDOFF=$(ls -t ~/.gstack/projects/$SLUG/*-$BRANCH-ceo-handoff-*.md 2>/dev/null | head -1) -[ -n "$HANDOFF" ] && echo "HANDOFF_FOUND: $HANDOFF" || echo "NO_HANDOFF" -``` -If this block runs in a separate shell from the design doc check, recompute $SLUG and $BRANCH first using the same commands from that block. -If a handoff note is found: read it. This contains system audit findings and discussion -from a prior CEO review session that paused so the user could run `/office-hours`. Use it -as additional context alongside the design doc. The handoff note helps you avoid re-asking -questions the user already answered. Do NOT skip any steps — run the full review, but use -the handoff note to inform your analysis and avoid redundant questions. - -Tell the user: "Found a handoff note from your prior CEO review session. I'll use that -context to pick up where we left off." - -## Prerequisite Skill Offer - -When the design doc check above prints "No design doc found," offer the prerequisite -skill before proceeding. - -Say to the user via AskUserQuestion: - -> "No design doc found for this branch. `/office-hours` produces a structured problem -> statement, premise challenge, and explored alternatives — it gives this review much -> sharper input to work with. Takes about 10 minutes. The design doc is per-feature, -> not per-product — it captures the thinking behind this specific change." - -Options: -- A) Run /office-hours first (in another window, then come back) -- B) Skip — proceed with standard review - -If they skip: "No worries — standard review. If you ever want sharper input, try -/office-hours first next time." Then proceed normally. Do not re-offer later in the session. - -**Handoff note save (BENEFITS_FROM):** If the user chose A (run /office-hours first), -save a handoff context note before they leave. Reuse $SLUG and $BRANCH from the -design doc check block above (they use the same `remote-slug || basename` fallback -that handles repos without an origin remote). Then run: -```bash -mkdir -p ~/.gstack/projects/$SLUG -USER=$(whoami) -DATETIME=$(date +%Y%m%d-%H%M%S) -``` -Write to `~/.gstack/projects/$SLUG/$USER-$BRANCH-ceo-handoff-$DATETIME.md`: -```markdown -# CEO Review Handoff Note - -Generated by /plan-ceo-review on {date} -Branch: {branch} -Repo: {owner/repo} - -## Why I paused -User chose to run /office-hours first (no design doc found). - -## System Audit Summary -{Summarize what the system audit found — recent git history, diff scope, -CLAUDE.md key points, TODOS.md relevant items, known pain points} - -## Discussion So Far -{Empty — handoff happened before Step 0. Frontend/UI scope detection has not -run yet — it will be assessed when the review resumes.} -``` - -Tell the user: "Context saved. Run /office-hours in another window. When you come back -and invoke /plan-ceo-review, I'll pick up the context automatically — including the -design doc /office-hours produces." - -**Mid-session detection:** During Step 0A (Premise Challenge), if the user can't -articulate the problem, keeps changing the problem statement, answers with "I'm not -sure," or is clearly exploring rather than reviewing — offer `/office-hours`: - -> "It sounds like you're still figuring out what to build — that's totally fine, but -> that's what /office-hours is designed for. Want to pause this review and run -> /office-hours first? It'll help you nail down the problem and approach, then come -> back here for the strategic review." - -Options: A) Yes, run /office-hours first. B) No, keep going. -If they keep going, proceed normally — no guilt, no re-asking. - -**Handoff note save (mid-session):** If the user chose A (run /office-hours first from -mid-session detection), save a handoff context note with the same format above, but -include any Step 0A progress in the "Discussion So Far" section — premises discussed, -problem framing attempts, user answers so far. Use the same bash block to generate the -file path. - -Tell the user: "Context saved with your discussion so far. Run /office-hours, then -come back to /plan-ceo-review." - -When reading TODOS.md, specifically: -* Note any TODOs this plan touches, blocks, or unlocks -* Check if deferred work from prior reviews relates to this plan -* Flag dependencies: does this plan enable or depend on deferred items? -* Map known pain points (from TODOS) to this plan's scope - -Map: -* What is the current system state? -* What is already in flight (other open PRs, branches, stashed changes)? -* What are the existing known pain points most relevant to this plan? -* Are there any FIXME/TODO comments in files this plan touches? - -### Retrospective Check -Check the git log for this branch. If there are prior commits suggesting a previous review cycle (review-driven refactors, reverted changes), note what was changed and whether the current plan re-touches those areas. Be MORE aggressive reviewing areas that were previously problematic. Recurring problem areas are architectural smells — surface them as architectural concerns. - -### Frontend/UI Scope Detection -Analyze the plan. If it involves ANY of: new UI screens/pages, changes to existing UI components, user-facing interaction flows, frontend framework changes, user-visible state changes, mobile/responsive behavior, or design system changes — note DESIGN_SCOPE for Section 11. - -### Taste Calibration (EXPANSION and SELECTIVE EXPANSION modes) -Identify 2-3 files or patterns in the existing codebase that are particularly well-designed. Note them as style references for the review. Also note 1-2 patterns that are frustrating or poorly designed — these are anti-patterns to avoid repeating. -Report findings before proceeding to Step 0. - -### Landscape Check - -Read ETHOS.md for the Search Before Building framework (the preamble's Search Before Building section has the path). Before challenging scope, understand the landscape. WebSearch for: -- "[product category] landscape {current year}" -- "[key feature] alternatives" -- "why [incumbent/conventional approach] [succeeds/fails]" - -If WebSearch is unavailable, skip this check and note: "Search unavailable — proceeding with in-distribution knowledge only." - -Run the three-layer synthesis: -- **[Layer 1]** What's the tried-and-true approach in this space? -- **[Layer 2]** What are the search results saying? -- **[Layer 3]** First-principles reasoning — where might the conventional wisdom be wrong? - -Feed into the Premise Challenge (0A) and Dream State Mapping (0C). If you find a eureka moment, surface it during the Expansion opt-in ceremony as a differentiation opportunity. Log it (see preamble). - -## Step 0: Nuclear Scope Challenge + Mode Selection - -### 0A. Premise Challenge -1. Is this the right problem to solve? Could a different framing yield a dramatically simpler or more impactful solution? -2. What is the actual user/business outcome? Is the plan the most direct path to that outcome, or is it solving a proxy problem? -3. What would happen if we did nothing? Real pain point or hypothetical one? - -### 0B. Existing Code Leverage -1. What existing code already partially or fully solves each sub-problem? Map every sub-problem to existing code. Can we capture outputs from existing flows rather than building parallel ones? -2. Is this plan rebuilding anything that already exists? If yes, explain why rebuilding is better than refactoring. - -### 0C. Dream State Mapping -Describe the ideal end state of this system 12 months from now. Does this plan move toward that state or away from it? -``` - CURRENT STATE THIS PLAN 12-MONTH IDEAL - [describe] ---> [describe delta] ---> [describe target] -``` - -### 0C-bis. Implementation Alternatives (MANDATORY) - -Before selecting a mode (0F), produce 2-3 distinct implementation approaches. This is NOT optional — every plan must consider alternatives. - -For each approach: -``` -APPROACH A: [Name] - Summary: [1-2 sentences] - Effort: [S/M/L/XL] - Risk: [Low/Med/High] - Pros: [2-3 bullets] - Cons: [2-3 bullets] - Reuses: [existing code/patterns leveraged] - -APPROACH B: [Name] - ... - -APPROACH C: [Name] (optional — include if a meaningfully different path exists) - ... -``` - -**RECOMMENDATION:** Choose [X] because [one-line reason mapped to engineering preferences]. - -Rules: -- At least 2 approaches required. 3 preferred for non-trivial plans. -- One approach must be the "minimal viable" (fewest files, smallest diff). -- One approach must be the "ideal architecture" (best long-term trajectory). -- If only one approach exists, explain concretely why alternatives were eliminated. -- Do NOT proceed to mode selection (0F) without user approval of the chosen approach. - -### 0D. Mode-Specific Analysis -**For SCOPE EXPANSION** — run all three, then the opt-in ceremony: -1. 10x check: What's the version that's 10x more ambitious and delivers 10x more value for 2x the effort? Describe it concretely. -2. Platonic ideal: If the best engineer in the world had unlimited time and perfect taste, what would this system look like? What would the user feel when using it? Start from experience, not architecture. -3. Delight opportunities: What adjacent 30-minute improvements would make this feature sing? Things where a user would think "oh nice, they thought of that." List at least 5. -4. **Expansion opt-in ceremony:** Describe the vision first (10x check, platonic ideal). Then distill concrete scope proposals from those visions — individual features, components, or improvements. Present each proposal as its own AskUserQuestion. Recommend enthusiastically — explain why it's worth doing. But the user decides. Options: **A)** Add to this plan's scope **B)** Defer to TODOS.md **C)** Skip. Accepted items become plan scope for all remaining review sections. Rejected items go to "NOT in scope." - -**For SELECTIVE EXPANSION** — run the HOLD SCOPE analysis first, then surface expansions: -1. Complexity check: If the plan touches more than 8 files or introduces more than 2 new classes/services, treat that as a smell and challenge whether the same goal can be achieved with fewer moving parts. -2. What is the minimum set of changes that achieves the stated goal? Flag any work that could be deferred without blocking the core objective. -3. Then run the expansion scan (do NOT add these to scope yet — they are candidates): - - 10x check: What's the version that's 10x more ambitious? Describe it concretely. - - Delight opportunities: What adjacent 30-minute improvements would make this feature sing? List at least 5. - - Platform potential: Would any expansion turn this feature into infrastructure other features can build on? -4. **Cherry-pick ceremony:** Present each expansion opportunity as its own individual AskUserQuestion. Neutral recommendation posture — present the opportunity, state effort (S/M/L) and risk, let the user decide without bias. Options: **A)** Add to this plan's scope **B)** Defer to TODOS.md **C)** Skip. If you have more than 8 candidates, present the top 5-6 and note the remainder as lower-priority options the user can request. Accepted items become plan scope for all remaining review sections. Rejected items go to "NOT in scope." - -**For HOLD SCOPE** — run this: -1. Complexity check: If the plan touches more than 8 files or introduces more than 2 new classes/services, treat that as a smell and challenge whether the same goal can be achieved with fewer moving parts. -2. What is the minimum set of changes that achieves the stated goal? Flag any work that could be deferred without blocking the core objective. - -**For SCOPE REDUCTION** — run this: -1. Ruthless cut: What is the absolute minimum that ships value to a user? Everything else is deferred. No exceptions. -2. What can be a follow-up PR? Separate "must ship together" from "nice to ship together." - -### 0D-POST. Persist CEO Plan (EXPANSION and SELECTIVE EXPANSION only) - -After the opt-in/cherry-pick ceremony, write the plan to disk so the vision and decisions survive beyond this conversation. Only run this step for EXPANSION and SELECTIVE EXPANSION modes. - -```bash -source <(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null) && mkdir -p ~/.gstack/projects/$SLUG/ceo-plans -``` - -Before writing, check for existing CEO plans in the ceo-plans/ directory. If any are >30 days old or their branch has been merged/deleted, offer to archive them: - -```bash -mkdir -p ~/.gstack/projects/$SLUG/ceo-plans/archive -# For each stale plan: mv ~/.gstack/projects/$SLUG/ceo-plans/{old-plan}.md ~/.gstack/projects/$SLUG/ceo-plans/archive/ -``` - -Write to `~/.gstack/projects/$SLUG/ceo-plans/{date}-{feature-slug}.md` using this format: - -```markdown ---- -status: ACTIVE ---- -# CEO Plan: {Feature Name} -Generated by /plan-ceo-review on {date} -Branch: {branch} | Mode: {EXPANSION / SELECTIVE EXPANSION} -Repo: {owner/repo} - -## Vision - -### 10x Check -{10x vision description} - -### Platonic Ideal -{platonic ideal description — EXPANSION mode only} - -## Scope Decisions - -| # | Proposal | Effort | Decision | Reasoning | -|---|----------|--------|----------|-----------| -| 1 | {proposal} | S/M/L | ACCEPTED / DEFERRED / SKIPPED | {why} | - -## Accepted Scope (added to this plan) -- {bullet list of what's now in scope} - -## Deferred to TODOS.md -- {items with context} -``` - -Derive the feature slug from the plan being reviewed (e.g., "user-dashboard", "auth-refactor"). Use the date in YYYY-MM-DD format. - -After writing the CEO plan, run the spec review loop on it: - -## Spec Review Loop - -Before presenting the document to the user for approval, run an adversarial review. - -**Step 1: Dispatch reviewer subagent** - -Use the Agent tool to dispatch an independent reviewer. The reviewer has fresh context -and cannot see the brainstorming conversation — only the document. This ensures genuine -adversarial independence. - -Prompt the subagent with: -- The file path of the document just written -- "Read this document and review it on 5 dimensions. For each dimension, note PASS or - list specific issues with suggested fixes. At the end, output a quality score (1-10) - across all dimensions." - -**Dimensions:** -1. **Completeness** — Are all requirements addressed? Missing edge cases? -2. **Consistency** — Do parts of the document agree with each other? Contradictions? -3. **Clarity** — Could an engineer implement this without asking questions? Ambiguous language? -4. **Scope** — Does the document creep beyond the original problem? YAGNI violations? -5. **Feasibility** — Can this actually be built with the stated approach? Hidden complexity? - -The subagent should return: -- A quality score (1-10) -- PASS if no issues, or a numbered list of issues with dimension, description, and fix - -**Step 2: Fix and re-dispatch** - -If the reviewer returns issues: -1. Fix each issue in the document on disk (use Edit tool) -2. Re-dispatch the reviewer subagent with the updated document -3. Maximum 3 iterations total - -**Convergence guard:** If the reviewer returns the same issues on consecutive iterations -(the fix didn't resolve them or the reviewer disagrees with the fix), stop the loop -and persist those issues as "Reviewer Concerns" in the document rather than looping -further. - -If the subagent fails, times out, or is unavailable — skip the review loop entirely. -Tell the user: "Spec review unavailable — presenting unreviewed doc." The document is -already written to disk; the review is a quality bonus, not a gate. - -**Step 3: Report and persist metrics** - -After the loop completes (PASS, max iterations, or convergence guard): - -1. Tell the user the result — summary by default: - "Your doc survived N rounds of adversarial review. M issues caught and fixed. - Quality score: X/10." - If they ask "what did the reviewer find?", show the full reviewer output. - -2. If issues remain after max iterations or convergence, add a "## Reviewer Concerns" - section to the document listing each unresolved issue. Downstream skills will see this. - -3. Append metrics: -```bash -mkdir -p ~/.gstack/analytics -echo '{"skill":"plan-ceo-review","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","iterations":ITERATIONS,"issues_found":FOUND,"issues_fixed":FIXED,"remaining":REMAINING,"quality_score":SCORE}' >> ~/.gstack/analytics/spec-review.jsonl 2>/dev/null || true -``` -Replace ITERATIONS, FOUND, FIXED, REMAINING, SCORE with actual values from the review. - -### 0E. Temporal Interrogation (EXPANSION, SELECTIVE EXPANSION, and HOLD modes) -Think ahead to implementation: What decisions will need to be made during implementation that should be resolved NOW in the plan? -``` - HOUR 1 (foundations): What does the implementer need to know? - HOUR 2-3 (core logic): What ambiguities will they hit? - HOUR 4-5 (integration): What will surprise them? - HOUR 6+ (polish/tests): What will they wish they'd planned for? -``` -NOTE: These represent human-team implementation hours. With CC + gstack, -6 hours of human implementation compresses to ~30-60 minutes. The decisions -are identical — the implementation speed is 10-20x faster. Always present -both scales when discussing effort. - -Surface these as questions for the user NOW, not as "figure it out later." - -### 0F. Mode Selection -In every mode, you are 100% in control. No scope is added without your explicit approval. - -Present four options: -1. **SCOPE EXPANSION:** The plan is good but could be great. Dream big — propose the ambitious version. Every expansion is presented individually for your approval. You opt in to each one. -2. **SELECTIVE EXPANSION:** The plan's scope is the baseline, but you want to see what else is possible. Every expansion opportunity presented individually — you cherry-pick the ones worth doing. Neutral recommendations. -3. **HOLD SCOPE:** The plan's scope is right. Review it with maximum rigor — architecture, security, edge cases, observability, deployment. Make it bulletproof. No expansions surfaced. -4. **SCOPE REDUCTION:** The plan is overbuilt or wrong-headed. Propose a minimal version that achieves the core goal, then review that. - -Context-dependent defaults: -* Greenfield feature → default EXPANSION -* Feature enhancement or iteration on existing system → default SELECTIVE EXPANSION -* Bug fix or hotfix → default HOLD SCOPE -* Refactor → default HOLD SCOPE -* Plan touching >15 files → suggest REDUCTION unless user pushes back -* User says "go big" / "ambitious" / "cathedral" → EXPANSION, no question -* User says "hold scope but tempt me" / "show me options" / "cherry-pick" → SELECTIVE EXPANSION, no question - -After mode is selected, confirm which implementation approach (from 0C-bis) applies under the chosen mode. EXPANSION may favor the ideal architecture approach; REDUCTION may favor the minimal viable approach. - -Once selected, commit fully. Do not silently drift. -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -## Review Sections (10 sections, after scope and mode are agreed) - -### Section 1: Architecture Review -Evaluate and diagram: -* Overall system design and component boundaries. Draw the dependency graph. -* Data flow — all four paths. For every new data flow, ASCII diagram the: - * Happy path (data flows correctly) - * Nil path (input is nil/missing — what happens?) - * Empty path (input is present but empty/zero-length — what happens?) - * Error path (upstream call fails — what happens?) -* State machines. ASCII diagram for every new stateful object. Include impossible/invalid transitions and what prevents them. -* Coupling concerns. Which components are now coupled that weren't before? Is that coupling justified? Draw the before/after dependency graph. -* Scaling characteristics. What breaks first under 10x load? Under 100x? -* Single points of failure. Map them. -* Security architecture. Auth boundaries, data access patterns, API surfaces. For each new endpoint or data mutation: who can call it, what do they get, what can they change? -* Production failure scenarios. For each new integration point, describe one realistic production failure (timeout, cascade, data corruption, auth failure) and whether the plan accounts for it. -* Rollback posture. If this ships and immediately breaks, what's the rollback procedure? Git revert? Feature flag? DB migration rollback? How long? - -**EXPANSION and SELECTIVE EXPANSION additions:** -* What would make this architecture beautiful? Not just correct — elegant. Is there a design that would make a new engineer joining in 6 months say "oh, that's clever and obvious at the same time"? -* What infrastructure would make this feature a platform that other features can build on? - -**SELECTIVE EXPANSION:** If any accepted cherry-picks from Step 0D affect the architecture, evaluate their architectural fit here. Flag any that create coupling concerns or don't integrate cleanly — this is a chance to revisit the decision with new information. - -Required ASCII diagram: full system architecture showing new components and their relationships to existing ones. -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -### Section 2: Error & Rescue Map -This is the section that catches silent failures. It is not optional. -For every new method, service, or codepath that can fail, fill in this table: -``` - METHOD/CODEPATH | WHAT CAN GO WRONG | EXCEPTION CLASS - -------------------------|-----------------------------|----------------- - ExampleService#call | API timeout | TimeoutError - | API returns 429 | RateLimitError - | API returns malformed JSON | JSONParseError - | DB connection pool exhausted| ConnectionPoolExhausted - | Record not found | RecordNotFound - -------------------------|-----------------------------|----------------- - - EXCEPTION CLASS | RESCUED? | RESCUE ACTION | USER SEES - -----------------------------|-----------|------------------------|------------------ - TimeoutError | Y | Retry 2x, then raise | "Service temporarily unavailable" - RateLimitError | Y | Backoff + retry | Nothing (transparent) - JSONParseError | N ← GAP | — | 500 error ← BAD - ConnectionPoolExhausted | N ← GAP | — | 500 error ← BAD - RecordNotFound | Y | Return nil, log warning | "Not found" message -``` -Rules for this section: -* Catch-all error handling (`rescue StandardError`, `catch (Exception e)`, `except Exception`) is ALWAYS a smell. Name the specific exceptions. -* Catching an error with only a generic log message is insufficient. Log the full context: what was being attempted, with what arguments, for what user/request. -* Every rescued error must either: retry with backoff, degrade gracefully with a user-visible message, or re-raise with added context. "Swallow and continue" is almost never acceptable. -* For each GAP (unrescued error that should be rescued): specify the rescue action and what the user should see. -* For LLM/AI service calls specifically: what happens when the response is malformed? When it's empty? When it hallucinates invalid JSON? When the model returns a refusal? Each of these is a distinct failure mode. -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -### Section 3: Security & Threat Model -Security is not a sub-bullet of architecture. It gets its own section. -Evaluate: -* Attack surface expansion. What new attack vectors does this plan introduce? New endpoints, new params, new file paths, new background jobs? -* Input validation. For every new user input: is it validated, sanitized, and rejected loudly on failure? What happens with: nil, empty string, string when integer expected, string exceeding max length, unicode edge cases, HTML/script injection attempts? -* Authorization. For every new data access: is it scoped to the right user/role? Is there a direct object reference vulnerability? Can user A access user B's data by manipulating IDs? -* Secrets and credentials. New secrets? In env vars, not hardcoded? Rotatable? -* Dependency risk. New gems/npm packages? Security track record? -* Data classification. PII, payment data, credentials? Handling consistent with existing patterns? -* Injection vectors. SQL, command, template, LLM prompt injection — check all. -* Audit logging. For sensitive operations: is there an audit trail? - -For each finding: threat, likelihood (High/Med/Low), impact (High/Med/Low), and whether the plan mitigates it. -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -### Section 4: Data Flow & Interaction Edge Cases -This section traces data through the system and interactions through the UI with adversarial thoroughness. - -**Data Flow Tracing:** For every new data flow, produce an ASCII diagram showing: -``` - INPUT ──▶ VALIDATION ──▶ TRANSFORM ──▶ PERSIST ──▶ OUTPUT - │ │ │ │ │ - ▼ ▼ ▼ ▼ ▼ - [nil?] [invalid?] [exception?] [conflict?] [stale?] - [empty?] [too long?] [timeout?] [dup key?] [partial?] - [wrong [wrong type?] [OOM?] [locked?] [encoding?] - type?] -``` -For each node: what happens on each shadow path? Is it tested? - -**Interaction Edge Cases:** For every new user-visible interaction, evaluate: -``` - INTERACTION | EDGE CASE | HANDLED? | HOW? - ---------------------|------------------------|----------|-------- - Form submission | Double-click submit | ? | - | Submit with stale CSRF | ? | - | Submit during deploy | ? | - Async operation | User navigates away | ? | - | Operation times out | ? | - | Retry while in-flight | ? | - List/table view | Zero results | ? | - | 10,000 results | ? | - | Results change mid-page| ? | - Background job | Job fails after 3 of | ? | - | 10 items processed | | - | Job runs twice (dup) | ? | - | Queue backs up 2 hours | ? | -``` -Flag any unhandled edge case as a gap. For each gap, specify the fix. -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -### Section 5: Code Quality Review -Evaluate: -* Code organization and module structure. Does new code fit existing patterns? If it deviates, is there a reason? -* DRY violations. Be aggressive. If the same logic exists elsewhere, flag it and reference the file and line. -* Naming quality. Are new classes, methods, and variables named for what they do, not how they do it? -* Error handling patterns. (Cross-reference with Section 2 — this section reviews the patterns; Section 2 maps the specifics.) -* Missing edge cases. List explicitly: "What happens when X is nil?" "When the API returns 429?" etc. -* Over-engineering check. Any new abstraction solving a problem that doesn't exist yet? -* Under-engineering check. Anything fragile, assuming happy path only, or missing obvious defensive checks? -* Cyclomatic complexity. Flag any new method that branches more than 5 times. Propose a refactor. -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -### Section 6: Test Review -Make a complete diagram of every new thing this plan introduces: -``` - NEW UX FLOWS: - [list each new user-visible interaction] - - NEW DATA FLOWS: - [list each new path data takes through the system] - - NEW CODEPATHS: - [list each new branch, condition, or execution path] - - NEW BACKGROUND JOBS / ASYNC WORK: - [list each] - - NEW INTEGRATIONS / EXTERNAL CALLS: - [list each] - - NEW ERROR/RESCUE PATHS: - [list each — cross-reference Section 2] -``` -For each item in the diagram: -* What type of test covers it? (Unit / Integration / System / E2E) -* Does a test for it exist in the plan? If not, write the test spec header. -* What is the happy path test? -* What is the failure path test? (Be specific — which failure?) -* What is the edge case test? (nil, empty, boundary values, concurrent access) - -Test ambition check (all modes): For each new feature, answer: -* What's the test that would make you confident shipping at 2am on a Friday? -* What's the test a hostile QA engineer would write to break this? -* What's the chaos test? - -Test pyramid check: Many unit, fewer integration, few E2E? Or inverted? -Flakiness risk: Flag any test depending on time, randomness, external services, or ordering. -Load/stress test requirements: For any new codepath called frequently or processing significant data. - -For LLM/prompt changes: Check CLAUDE.md for the "Prompt/LLM changes" file patterns. If this plan touches ANY of those patterns, state which eval suites must be run, which cases should be added, and what baselines to compare against. -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -### Section 7: Performance Review -Evaluate: -* N+1 queries. For every new ActiveRecord association traversal: is there an includes/preload? -* Memory usage. For every new data structure: what's the maximum size in production? -* Database indexes. For every new query: is there an index? -* Caching opportunities. For every expensive computation or external call: should it be cached? -* Background job sizing. For every new job: worst-case payload, runtime, retry behavior? -* Slow paths. Top 3 slowest new codepaths and estimated p99 latency. -* Connection pool pressure. New DB connections, Redis connections, HTTP connections? -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -### Section 8: Observability & Debuggability Review -New systems break. This section ensures you can see why. -Evaluate: -* Logging. For every new codepath: structured log lines at entry, exit, and each significant branch? -* Metrics. For every new feature: what metric tells you it's working? What tells you it's broken? -* Tracing. For new cross-service or cross-job flows: trace IDs propagated? -* Alerting. What new alerts should exist? -* Dashboards. What new dashboard panels do you want on day 1? -* Debuggability. If a bug is reported 3 weeks post-ship, can you reconstruct what happened from logs alone? -* Admin tooling. New operational tasks that need admin UI or rake tasks? -* Runbooks. For each new failure mode: what's the operational response? - -**EXPANSION and SELECTIVE EXPANSION addition:** -* What observability would make this feature a joy to operate? (For SELECTIVE EXPANSION, include observability for any accepted cherry-picks.) -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -### Section 9: Deployment & Rollout Review -Evaluate: -* Migration safety. For every new DB migration: backward-compatible? Zero-downtime? Table locks? -* Feature flags. Should any part be behind a feature flag? -* Rollout order. Correct sequence: migrate first, deploy second? -* Rollback plan. Explicit step-by-step. -* Deploy-time risk window. Old code and new code running simultaneously — what breaks? -* Environment parity. Tested in staging? -* Post-deploy verification checklist. First 5 minutes? First hour? -* Smoke tests. What automated checks should run immediately post-deploy? - -**EXPANSION and SELECTIVE EXPANSION addition:** -* What deploy infrastructure would make shipping this feature routine? (For SELECTIVE EXPANSION, assess whether accepted cherry-picks change the deployment risk profile.) -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -### Section 10: Long-Term Trajectory Review -Evaluate: -* Technical debt introduced. Code debt, operational debt, testing debt, documentation debt. -* Path dependency. Does this make future changes harder? -* Knowledge concentration. Documentation sufficient for a new engineer? -* Reversibility. Rate 1-5: 1 = one-way door, 5 = easily reversible. -* Ecosystem fit. Aligns with Rails/JS ecosystem direction? -* The 1-year question. Read this plan as a new engineer in 12 months — obvious? - -**EXPANSION and SELECTIVE EXPANSION additions:** -* What comes after this ships? Phase 2? Phase 3? Does the architecture support that trajectory? -* Platform potential. Does this create capabilities other features can leverage? -* (SELECTIVE EXPANSION only) Retrospective: Were the right cherry-picks accepted? Did any rejected expansions turn out to be load-bearing for the accepted ones? -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -### Section 11: Design & UX Review (skip if no UI scope detected) -The CEO calling in the designer. Not a pixel-level audit — that's /plan-design-review and /design-review. This is ensuring the plan has design intentionality. - -Evaluate: -* Information architecture — what does the user see first, second, third? -* Interaction state coverage map: - FEATURE | LOADING | EMPTY | ERROR | SUCCESS | PARTIAL -* User journey coherence — storyboard the emotional arc -* AI slop risk — does the plan describe generic UI patterns? -* DESIGN.md alignment — does the plan match the stated design system? -* Responsive intention — is mobile mentioned or afterthought? -* Accessibility basics — keyboard nav, screen readers, contrast, touch targets - -**EXPANSION and SELECTIVE EXPANSION additions:** -* What would make this UI feel *inevitable*? -* What 30-minute UI touches would make users think "oh nice, they thought of that"? - -Required ASCII diagram: user flow showing screens/states and transitions. - -If this plan has significant UI scope, recommend: "Consider running /plan-design-review for a deep design review of this plan before implementation." -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -## Post-Implementation Design Audit (if UI scope detected) -After implementation, run `/design-review` on the live site to catch visual issues that can only be evaluated with rendered output. - -## CRITICAL RULE — How to ask questions -Follow the AskUserQuestion format from the Preamble above. Additional rules for plan reviews: -* **One issue = one AskUserQuestion call.** Never combine multiple issues into one question. -* Describe the problem concretely, with file and line references. -* Present 2-3 options, including "do nothing" where reasonable. -* For each option: effort, risk, and maintenance burden in one line. -* **Map the reasoning to my engineering preferences above.** One sentence connecting your recommendation to a specific preference. -* Label with issue NUMBER + option LETTER (e.g., "3A", "3B"). -* **Escape hatch:** If a section has no issues, say so and move on. If an issue has an obvious fix with no real alternatives, state what you'll do and move on — don't waste a question on it. Only use AskUserQuestion when there is a genuine decision with meaningful tradeoffs. - -## Required Outputs - -### "NOT in scope" section -List work considered and explicitly deferred, with one-line rationale each. - -### "What already exists" section -List existing code/flows that partially solve sub-problems and whether the plan reuses them. - -### "Dream state delta" section -Where this plan leaves us relative to the 12-month ideal. - -### Error & Rescue Registry (from Section 2) -Complete table of every method that can fail, every exception class, rescued status, rescue action, user impact. - -### Failure Modes Registry -``` - CODEPATH | FAILURE MODE | RESCUED? | TEST? | USER SEES? | LOGGED? - ---------|----------------|----------|-------|----------------|-------- -``` -Any row with RESCUED=N, TEST=N, USER SEES=Silent → **CRITICAL GAP**. - -### TODOS.md updates -Present each potential TODO as its own individual AskUserQuestion. Never batch TODOs — one per question. Never silently skip this step. Follow the format in `.claude/skills/review/TODOS-format.md`. - -For each TODO, describe: -* **What:** One-line description of the work. -* **Why:** The concrete problem it solves or value it unlocks. -* **Pros:** What you gain by doing this work. -* **Cons:** Cost, complexity, or risks of doing it. -* **Context:** Enough detail that someone picking this up in 3 months understands the motivation, the current state, and where to start. -* **Effort estimate:** S/M/L/XL (human team) → with CC+gstack: S→S, M→S, L→M, XL→L -* **Priority:** P1/P2/P3 -* **Depends on / blocked by:** Any prerequisites or ordering constraints. - -Then present options: **A)** Add to TODOS.md **B)** Skip — not valuable enough **C)** Build it now in this PR instead of deferring. - -### Scope Expansion Decisions (EXPANSION and SELECTIVE EXPANSION only) -For EXPANSION and SELECTIVE EXPANSION modes: expansion opportunities and delight items were surfaced and decided in Step 0D (opt-in/cherry-pick ceremony). The decisions are persisted in the CEO plan document. Reference the CEO plan for the full record. Do not re-surface them here — list the accepted expansions for completeness: -* Accepted: {list items added to scope} -* Deferred: {list items sent to TODOS.md} -* Skipped: {list items rejected} - -### Diagrams (mandatory, produce all that apply) -1. System architecture -2. Data flow (including shadow paths) -3. State machine -4. Error flow -5. Deployment sequence -6. Rollback flowchart - -### Stale Diagram Audit -List every ASCII diagram in files this plan touches. Still accurate? - -### Completion Summary -``` - +====================================================================+ - | MEGA PLAN REVIEW — COMPLETION SUMMARY | - +====================================================================+ - | Mode selected | EXPANSION / SELECTIVE / HOLD / REDUCTION | - | System Audit | [key findings] | - | Step 0 | [mode + key decisions] | - | Section 1 (Arch) | ___ issues found | - | Section 2 (Errors) | ___ error paths mapped, ___ GAPS | - | Section 3 (Security)| ___ issues found, ___ High severity | - | Section 4 (Data/UX) | ___ edge cases mapped, ___ unhandled | - | Section 5 (Quality) | ___ issues found | - | Section 6 (Tests) | Diagram produced, ___ gaps | - | Section 7 (Perf) | ___ issues found | - | Section 8 (Observ) | ___ gaps found | - | Section 9 (Deploy) | ___ risks flagged | - | Section 10 (Future) | Reversibility: _/5, debt items: ___ | - | Section 11 (Design) | ___ issues / SKIPPED (no UI scope) | - +--------------------------------------------------------------------+ - | NOT in scope | written (___ items) | - | What already exists | written | - | Dream state delta | written | - | Error/rescue registry| ___ methods, ___ CRITICAL GAPS | - | Failure modes | ___ total, ___ CRITICAL GAPS | - | TODOS.md updates | ___ items proposed | - | Scope proposals | ___ proposed, ___ accepted (EXP + SEL) | - | CEO plan | written / skipped (HOLD/REDUCTION) | - | Lake Score | X/Y recommendations chose complete option | - | Diagrams produced | ___ (list types) | - | Stale diagrams found | ___ | - | Unresolved decisions | ___ (listed below) | - +====================================================================+ -``` - -### Unresolved Decisions -If any AskUserQuestion goes unanswered, note it here. Never silently default. - -## Handoff Note Cleanup - -After producing the Completion Summary, clean up any handoff notes for this branch — -the review is complete and the context is no longer needed. - -```bash -source <(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null) -rm -f ~/.gstack/projects/$SLUG/*-$BRANCH-ceo-handoff-*.md 2>/dev/null || true -``` - -## Review Log - -After producing the Completion Summary above, persist the review result. - -**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes review metadata to -`~/.gstack/` (user config directory, not project files). The skill preamble -already writes to `~/.gstack/sessions/` and `~/.gstack/analytics/` — this is -the same pattern. The review dashboard depends on this data. Skipping this -command breaks the review readiness dashboard in /ship. - -```bash -~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-ceo-review","timestamp":"TIMESTAMP","status":"STATUS","unresolved":N,"critical_gaps":N,"mode":"MODE","scope_proposed":N,"scope_accepted":N,"scope_deferred":N,"commit":"COMMIT"}' -``` - -Before running this command, substitute the placeholder values from the Completion Summary you just produced: -- **TIMESTAMP**: current ISO 8601 datetime (e.g., 2026-03-16T14:30:00) -- **STATUS**: "clean" if 0 unresolved decisions AND 0 critical gaps; otherwise "issues_open" -- **unresolved**: number from "Unresolved decisions" in the summary -- **critical_gaps**: number from "Failure modes: ___ CRITICAL GAPS" in the summary -- **MODE**: the mode the user selected (SCOPE_EXPANSION / SELECTIVE_EXPANSION / HOLD_SCOPE / SCOPE_REDUCTION) -- **scope_proposed**: number from "Scope proposals: ___ proposed" in the summary (0 for HOLD/REDUCTION) -- **scope_accepted**: number from "Scope proposals: ___ accepted" in the summary (0 for HOLD/REDUCTION) -- **scope_deferred**: number of items deferred to TODOS.md from scope decisions (0 for HOLD/REDUCTION) -- **COMMIT**: output of `git rev-parse --short HEAD` - -## Review Readiness Dashboard - -After completing the review, read the review log and config to display the dashboard. - -```bash -~/.claude/skills/gstack/bin/gstack-review-read -``` - -Parse the output. Find the most recent entry for each skill (plan-ceo-review, plan-eng-review, plan-design-review, design-review-lite, adversarial-review, codex-review). Ignore entries with timestamps older than 7 days. For the Adversarial row, show whichever is more recent between `adversarial-review` (new auto-scaled) and `codex-review` (legacy). For Design Review, show whichever is more recent between `plan-design-review` (full visual audit) and `design-review-lite` (code-level check). Append "(FULL)" or "(LITE)" to the status to distinguish. Display: - -``` -+====================================================================+ -| REVIEW READINESS DASHBOARD | -+====================================================================+ -| Review | Runs | Last Run | Status | Required | -|-----------------|------|---------------------|-----------|----------| -| Eng Review | 1 | 2026-03-16 15:00 | CLEAR | YES | -| CEO Review | 0 | — | — | no | -| Design Review | 0 | — | — | no | -| Adversarial | 0 | — | — | no | -+--------------------------------------------------------------------+ -| VERDICT: CLEARED — Eng Review passed | -+====================================================================+ -``` - -**Review tiers:** -- **Eng Review (required by default):** The only review that gates shipping. Covers architecture, code quality, tests, performance. Can be disabled globally with \`gstack-config set skip_eng_review true\` (the "don't bother me" setting). -- **CEO Review (optional):** Use your judgment. Recommend it for big product/business changes, new user-facing features, or scope decisions. Skip for bug fixes, refactors, infra, and cleanup. -- **Design Review (optional):** Use your judgment. Recommend it for UI/UX changes. Skip for backend-only, infra, or prompt-only changes. -- **Adversarial Review (automatic):** Auto-scales by diff size. Small diffs (<50 lines) skip adversarial. Medium diffs (50–199) get cross-model adversarial. Large diffs (200+) get all 4 passes: Claude structured, Codex structured, Claude adversarial subagent, Codex adversarial. No configuration needed. - -**Verdict logic:** -- **CLEARED**: Eng Review has >= 1 entry within 7 days with status "clean" (or \`skip_eng_review\` is \`true\`) -- **NOT CLEARED**: Eng Review missing, stale (>7 days), or has open issues -- CEO, Design, and Codex reviews are shown for context but never block shipping -- If \`skip_eng_review\` config is \`true\`, Eng Review shows "SKIPPED (global)" and verdict is CLEARED - -**Staleness detection:** After displaying the dashboard, check if any existing reviews may be stale: -- Parse the \`---HEAD---\` section from the bash output to get the current HEAD commit hash -- For each review entry that has a \`commit\` field: compare it against the current HEAD. If different, count elapsed commits: \`git rev-list --count STORED_COMMIT..HEAD\`. Display: "Note: {skill} review from {date} may be stale — {N} commits since review" -- For entries without a \`commit\` field (legacy entries): display "Note: {skill} review from {date} has no commit tracking — consider re-running for accurate staleness detection" -- If all reviews match the current HEAD, do not display any staleness notes - -## Plan File Review Report - -After displaying the Review Readiness Dashboard in conversation output, also update the -**plan file** itself so review status is visible to anyone reading the plan. - -### Detect the plan file - -1. Check if there is an active plan file in this conversation (the host provides plan file - paths in system messages — look for plan file references in the conversation context). -2. If not found, skip this section silently — not every review runs in plan mode. - -### Generate the report - -Read the review log output you already have from the Review Readiness Dashboard step above. -Parse each JSONL entry. Each skill logs different fields: - -- **plan-ceo-review**: \`status\`, \`unresolved\`, \`critical_gaps\`, \`mode\`, \`scope_proposed\`, \`scope_accepted\`, \`scope_deferred\`, \`commit\` - → Findings: "{scope_proposed} proposals, {scope_accepted} accepted, {scope_deferred} deferred" - → If scope fields are 0 or missing (HOLD/REDUCTION mode): "mode: {mode}, {critical_gaps} critical gaps" -- **plan-eng-review**: \`status\`, \`unresolved\`, \`critical_gaps\`, \`issues_found\`, \`mode\`, \`commit\` - → Findings: "{issues_found} issues, {critical_gaps} critical gaps" -- **plan-design-review**: \`status\`, \`initial_score\`, \`overall_score\`, \`unresolved\`, \`decisions_made\`, \`commit\` - → Findings: "score: {initial_score}/10 → {overall_score}/10, {decisions_made} decisions" -- **codex-review**: \`status\`, \`gate\`, \`findings\`, \`findings_fixed\` - → Findings: "{findings} findings, {findings_fixed}/{findings} fixed" - -All fields needed for the Findings column are now present in the JSONL entries. -For the review you just completed, you may use richer details from your own Completion -Summary. For prior reviews, use the JSONL fields directly — they contain all required data. - -Produce this markdown table: - -\`\`\`markdown -## GSTACK REVIEW REPORT - -| Review | Trigger | Why | Runs | Status | Findings | -|--------|---------|-----|------|--------|----------| -| CEO Review | \`/plan-ceo-review\` | Scope & strategy | {runs} | {status} | {findings} | -| Codex Review | \`/codex review\` | Independent 2nd opinion | {runs} | {status} | {findings} | -| Eng Review | \`/plan-eng-review\` | Architecture & tests (required) | {runs} | {status} | {findings} | -| Design Review | \`/plan-design-review\` | UI/UX gaps | {runs} | {status} | {findings} | -\`\`\` - -Below the table, add these lines (omit any that are empty/not applicable): - -- **CODEX:** (only if codex-review ran) — one-line summary of codex fixes -- **CROSS-MODEL:** (only if both Claude and Codex reviews exist) — overlap analysis -- **UNRESOLVED:** total unresolved decisions across all reviews -- **VERDICT:** list reviews that are CLEAR (e.g., "CEO + ENG CLEARED — ready to implement"). - If Eng Review is not CLEAR and not skipped globally, append "eng review required". - -### Write to the plan file - -**PLAN MODE EXCEPTION — ALWAYS RUN:** This writes to the plan file, which is the one -file you are allowed to edit in plan mode. The plan file review report is part of the -plan's living status. - -- Search the plan file for a \`## GSTACK REVIEW REPORT\` section **anywhere** in the file - (not just at the end — content may have been added after it). -- If found, **replace it** entirely using the Edit tool. Match from \`## GSTACK REVIEW REPORT\` - through either the next \`## \` heading or end of file, whichever comes first. This ensures - content added after the report section is preserved, not eaten. If the Edit fails - (e.g., concurrent edit changed the content), re-read the plan file and retry once. -- If no such section exists, **append it** to the end of the plan file. -- Always place it as the very last section in the plan file. If it was found mid-file, - move it: delete the old location and append at the end. - -## Next Steps — Review Chaining - -After displaying the Review Readiness Dashboard, recommend the next review(s) based on what this CEO review discovered. Read the dashboard output to see which reviews have already been run and whether they are stale. - -**Recommend /plan-eng-review if eng review is not skipped globally** — check the dashboard output for `skip_eng_review`. If it is `true`, eng review is opted out — do not recommend it. Otherwise, eng review is the required shipping gate. If this CEO review expanded scope, changed architectural direction, or accepted scope expansions, emphasize that a fresh eng review is needed. If an eng review already exists in the dashboard but the commit hash shows it predates this CEO review, note that it may be stale and should be re-run. - -**Recommend /plan-design-review if UI scope was detected** — specifically if Section 11 (Design & UX Review) was NOT skipped, or if accepted scope expansions included UI-facing features. If an existing design review is stale (commit hash drift), note that. In SCOPE REDUCTION mode, skip this recommendation — design review is unlikely relevant for scope cuts. - -**If both are needed, recommend eng review first** (required gate), then design review. - -Use AskUserQuestion to present the next step. Include only applicable options: -- **A)** Run /plan-eng-review next (required gate) -- **B)** Run /plan-design-review next (only if UI scope detected) -- **C)** Skip — I'll handle reviews manually - -## docs/designs Promotion (EXPANSION and SELECTIVE EXPANSION only) - -At the end of the review, if the vision produced a compelling feature direction, offer to promote the CEO plan to the project repo. AskUserQuestion: - -"The vision from this review produced {N} accepted scope expansions. Want to promote it to a design doc in the repo?" -- **A)** Promote to `docs/designs/{FEATURE}.md` (committed to repo, visible to the team) -- **B)** Keep in `~/.gstack/projects/` only (local, personal reference) -- **C)** Skip - -If promoted, copy the CEO plan content to `docs/designs/{FEATURE}.md` (create the directory if needed) and update the `status` field in the original CEO plan from `ACTIVE` to `PROMOTED`. - -## Formatting Rules -* NUMBER issues (1, 2, 3...) and LETTERS for options (A, B, C...). -* Label with NUMBER + LETTER (e.g., "3A", "3B"). -* One sentence max per option. -* After each section, pause and wait for feedback. -* Use **CRITICAL GAP** / **WARNING** / **OK** for scannability. - -## Mode Quick Reference -``` - ┌────────────────────────────────────────────────────────────────────────────────┐ - │ MODE COMPARISON │ - ├─────────────┬──────────────┬──────────────┬──────────────┬────────────────────┤ - │ │ EXPANSION │ SELECTIVE │ HOLD SCOPE │ REDUCTION │ - ├─────────────┼──────────────┼──────────────┼──────────────┼────────────────────┤ - │ Scope │ Push UP │ Hold + offer │ Maintain │ Push DOWN │ - │ │ (opt-in) │ │ │ │ - │ Recommend │ Enthusiastic │ Neutral │ N/A │ N/A │ - │ posture │ │ │ │ │ - │ 10x check │ Mandatory │ Surface as │ Optional │ Skip │ - │ │ │ cherry-pick │ │ │ - │ Platonic │ Yes │ No │ No │ No │ - │ ideal │ │ │ │ │ - │ Delight │ Opt-in │ Cherry-pick │ Note if seen │ Skip │ - │ opps │ ceremony │ ceremony │ │ │ - │ Complexity │ "Is it big │ "Is it right │ "Is it too │ "Is it the bare │ - │ question │ enough?" │ + what else │ complex?" │ minimum?" │ - │ │ │ is tempting"│ │ │ - │ Taste │ Yes │ Yes │ No │ No │ - │ calibration │ │ │ │ │ - │ Temporal │ Full (hr 1-6)│ Full (hr 1-6)│ Key decisions│ Skip │ - │ interrogate │ │ │ only │ │ - │ Observ. │ "Joy to │ "Joy to │ "Can we │ "Can we see if │ - │ standard │ operate" │ operate" │ debug it?" │ it's broken?" │ - │ Deploy │ Infra as │ Safe deploy │ Safe deploy │ Simplest possible │ - │ standard │ feature scope│ + cherry-pick│ + rollback │ deploy │ - │ │ │ risk check │ │ │ - │ Error map │ Full + chaos │ Full + chaos │ Full │ Critical paths │ - │ │ scenarios │ for accepted │ │ only │ - │ CEO plan │ Written │ Written │ Skipped │ Skipped │ - │ Phase 2/3 │ Map accepted │ Map accepted │ Note it │ Skip │ - │ planning │ │ cherry-picks │ │ │ - │ Design │ "Inevitable" │ If UI scope │ If UI scope │ Skip │ - │ (Sec 11) │ UI review │ detected │ detected │ │ - └─────────────┴──────────────┴──────────────┴──────────────┴────────────────────┘ -``` diff --git a/skills/plan-ceo-review/SKILL.md.tmpl b/skills/plan-ceo-review/SKILL.md.tmpl deleted file mode 100644 index 013b102..0000000 --- a/skills/plan-ceo-review/SKILL.md.tmpl +++ /dev/null @@ -1,838 +0,0 @@ ---- -name: plan-ceo-review -version: 1.0.0 -description: | - CEO/founder-mode plan review. Rethink the problem, find the 10-star product, - challenge premises, expand scope when it creates a better product. Four modes: - SCOPE EXPANSION (dream big), SELECTIVE EXPANSION (hold scope + cherry-pick - expansions), HOLD SCOPE (maximum rigor), SCOPE REDUCTION (strip to essentials). - Use when asked to "think bigger", "expand scope", "strategy review", "rethink this", - or "is this ambitious enough". - Proactively suggest when the user is questioning scope or ambition of a plan, - or when the plan feels like it could be thinking bigger. -benefits-from: [office-hours] -allowed-tools: - - Read - - Grep - - Glob - - Bash - - AskUserQuestion - - WebSearch ---- - -{{PREAMBLE}} - -{{BASE_BRANCH_DETECT}} - -# Mega Plan Review Mode - -## Philosophy -You are not here to rubber-stamp this plan. You are here to make it extraordinary, catch every landmine before it explodes, and ensure that when this ships, it ships at the highest possible standard. -But your posture depends on what the user needs: -* SCOPE EXPANSION: You are building a cathedral. Envision the platonic ideal. Push scope UP. Ask "what would make this 10x better for 2x the effort?" You have permission to dream — and to recommend enthusiastically. But every expansion is the user's decision. Present each scope-expanding idea as an AskUserQuestion. The user opts in or out. -* SELECTIVE EXPANSION: You are a rigorous reviewer who also has taste. Hold the current scope as your baseline — make it bulletproof. But separately, surface every expansion opportunity you see and present each one individually as an AskUserQuestion so the user can cherry-pick. Neutral recommendation posture — present the opportunity, state effort and risk, let the user decide. Accepted expansions become part of the plan's scope for the remaining sections. Rejected ones go to "NOT in scope." -* HOLD SCOPE: You are a rigorous reviewer. The plan's scope is accepted. Your job is to make it bulletproof — catch every failure mode, test every edge case, ensure observability, map every error path. Do not silently reduce OR expand. -* SCOPE REDUCTION: You are a surgeon. Find the minimum viable version that achieves the core outcome. Cut everything else. Be ruthless. -* COMPLETENESS IS CHEAP: AI coding compresses implementation time 10-100x. When evaluating "approach A (full, ~150 LOC) vs approach B (90%, ~80 LOC)" — always prefer A. The 70-line delta costs seconds with CC. "Ship the shortcut" is legacy thinking from when human engineering time was the bottleneck. Boil the lake. -Critical rule: In ALL modes, the user is 100% in control. Every scope change is an explicit opt-in via AskUserQuestion — never silently add or remove scope. Once the user selects a mode, COMMIT to it. Do not silently drift toward a different mode. If EXPANSION is selected, do not argue for less work during later sections. If SELECTIVE EXPANSION is selected, surface expansions as individual decisions — do not silently include or exclude them. If REDUCTION is selected, do not sneak scope back in. Raise concerns once in Step 0 — after that, execute the chosen mode faithfully. -Do NOT make any code changes. Do NOT start implementation. Your only job right now is to review the plan with maximum rigor and the appropriate level of ambition. - -## Prime Directives -1. Zero silent failures. Every failure mode must be visible — to the system, to the team, to the user. If a failure can happen silently, that is a critical defect in the plan. -2. Every error has a name. Don't say "handle errors." Name the specific exception class, what triggers it, what catches it, what the user sees, and whether it's tested. Catch-all error handling (e.g., catch Exception, rescue StandardError, except Exception) is a code smell — call it out. -3. Data flows have shadow paths. Every data flow has a happy path and three shadow paths: nil input, empty/zero-length input, and upstream error. Trace all four for every new flow. -4. Interactions have edge cases. Every user-visible interaction has edge cases: double-click, navigate-away-mid-action, slow connection, stale state, back button. Map them. -5. Observability is scope, not afterthought. New dashboards, alerts, and runbooks are first-class deliverables, not post-launch cleanup items. -6. Diagrams are mandatory. No non-trivial flow goes undiagrammed. ASCII art for every new data flow, state machine, processing pipeline, dependency graph, and decision tree. -7. Everything deferred must be written down. Vague intentions are lies. TODOS.md or it doesn't exist. -8. Optimize for the 6-month future, not just today. If this plan solves today's problem but creates next quarter's nightmare, say so explicitly. -9. You have permission to say "scrap it and do this instead." If there's a fundamentally better approach, table it. I'd rather hear it now. - -## Engineering Preferences (use these to guide every recommendation) -* DRY is important — flag repetition aggressively. -* Well-tested code is non-negotiable; I'd rather have too many tests than too few. -* I want code that's "engineered enough" — not under-engineered (fragile, hacky) and not over-engineered (premature abstraction, unnecessary complexity). -* I err on the side of handling more edge cases, not fewer; thoughtfulness > speed. -* Bias toward explicit over clever. -* Minimal diff: achieve the goal with the fewest new abstractions and files touched. -* Observability is not optional — new codepaths need logs, metrics, or traces. -* Security is not optional — new codepaths need threat modeling. -* Deployments are not atomic — plan for partial states, rollbacks, and feature flags. -* ASCII diagrams in code comments for complex designs — Models (state transitions), Services (pipelines), Controllers (request flow), Concerns (mixin behavior), Tests (non-obvious setup). -* Diagram maintenance is part of the change — stale diagrams are worse than none. - -## Cognitive Patterns — How Great CEOs Think - -These are not checklist items. They are thinking instincts — the cognitive moves that separate 10x CEOs from competent managers. Let them shape your perspective throughout the review. Don't enumerate them; internalize them. - -1. **Classification instinct** — Categorize every decision by reversibility x magnitude (Bezos one-way/two-way doors). Most things are two-way doors; move fast. -2. **Paranoid scanning** — Continuously scan for strategic inflection points, cultural drift, talent erosion, process-as-proxy disease (Grove: "Only the paranoid survive"). -3. **Inversion reflex** — For every "how do we win?" also ask "what would make us fail?" (Munger). -4. **Focus as subtraction** — Primary value-add is what to *not* do. Jobs went from 350 products to 10. Default: do fewer things, better. -5. **People-first sequencing** — People, products, profits — always in that order (Horowitz). Talent density solves most other problems (Hastings). -6. **Speed calibration** — Fast is default. Only slow down for irreversible + high-magnitude decisions. 70% information is enough to decide (Bezos). -7. **Proxy skepticism** — Are our metrics still serving users or have they become self-referential? (Bezos Day 1). -8. **Narrative coherence** — Hard decisions need clear framing. Make the "why" legible, not everyone happy. -9. **Temporal depth** — Think in 5-10 year arcs. Apply regret minimization for major bets (Bezos at age 80). -10. **Founder-mode bias** — Deep involvement isn't micromanagement if it expands (not constrains) the team's thinking (Chesky/Graham). -11. **Wartime awareness** — Correctly diagnose peacetime vs wartime. Peacetime habits kill wartime companies (Horowitz). -12. **Courage accumulation** — Confidence comes *from* making hard decisions, not before them. "The struggle IS the job." -13. **Willfulness as strategy** — Be intentionally willful. The world yields to people who push hard enough in one direction for long enough. Most people give up too early (Altman). -14. **Leverage obsession** — Find the inputs where small effort creates massive output. Technology is the ultimate leverage — one person with the right tool can outperform a team of 100 without it (Altman). -15. **Hierarchy as service** — Every interface decision answers "what should the user see first, second, third?" Respecting their time, not prettifying pixels. -16. **Edge case paranoia (design)** — What if the name is 47 chars? Zero results? Network fails mid-action? First-time user vs power user? Empty states are features, not afterthoughts. -17. **Subtraction default** — "As little design as possible" (Rams). If a UI element doesn't earn its pixels, cut it. Feature bloat kills products faster than missing features. -18. **Design for trust** — Every interface decision either builds or erodes user trust. Pixel-level intentionality about safety, identity, and belonging. - -When you evaluate architecture, think through the inversion reflex. When you challenge scope, apply focus as subtraction. When you assess timeline, use speed calibration. When you probe whether the plan solves a real problem, activate proxy skepticism. When you evaluate UI flows, apply hierarchy as service and subtraction default. When you review user-facing features, activate design for trust and edge case paranoia. - -## Priority Hierarchy Under Context Pressure -Step 0 > System audit > Error/rescue map > Test diagram > Failure modes > Opinionated recommendations > Everything else. -Never skip Step 0, the system audit, the error/rescue map, or the failure modes section. These are the highest-leverage outputs. - -## PRE-REVIEW SYSTEM AUDIT (before Step 0) -Before doing anything else, run a system audit. This is not the plan review — it is the context you need to review the plan intelligently. -Run the following commands: -``` -git log --oneline -30 # Recent history -git diff --stat # What's already changed -git stash list # Any stashed work -grep -r "TODO\|FIXME\|HACK\|XXX" -l --exclude-dir=node_modules --exclude-dir=vendor --exclude-dir=.git . | head -30 -git log --since=30.days --name-only --format="" | sort | uniq -c | sort -rn | head -20 # Recently touched files -``` -Then read CLAUDE.md, TODOS.md, and any existing architecture docs. - -**Design doc check:** -```bash -SLUG=$(~/.claude/skills/gstack/browse/bin/remote-slug 2>/dev/null || basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)") -BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null | tr '/' '-' || echo 'no-branch') -DESIGN=$(ls -t ~/.gstack/projects/$SLUG/*-$BRANCH-design-*.md 2>/dev/null | head -1) -[ -z "$DESIGN" ] && DESIGN=$(ls -t ~/.gstack/projects/$SLUG/*-design-*.md 2>/dev/null | head -1) -[ -n "$DESIGN" ] && echo "Design doc found: $DESIGN" || echo "No design doc found" -``` -If a design doc exists (from `/office-hours`), read it. Use it as the source of truth for the problem statement, constraints, and chosen approach. If it has a `Supersedes:` field, note that this is a revised design. - -**Handoff note check** (reuses $SLUG and $BRANCH from the design doc check above): -```bash -HANDOFF=$(ls -t ~/.gstack/projects/$SLUG/*-$BRANCH-ceo-handoff-*.md 2>/dev/null | head -1) -[ -n "$HANDOFF" ] && echo "HANDOFF_FOUND: $HANDOFF" || echo "NO_HANDOFF" -``` -If this block runs in a separate shell from the design doc check, recompute $SLUG and $BRANCH first using the same commands from that block. -If a handoff note is found: read it. This contains system audit findings and discussion -from a prior CEO review session that paused so the user could run `/office-hours`. Use it -as additional context alongside the design doc. The handoff note helps you avoid re-asking -questions the user already answered. Do NOT skip any steps — run the full review, but use -the handoff note to inform your analysis and avoid redundant questions. - -Tell the user: "Found a handoff note from your prior CEO review session. I'll use that -context to pick up where we left off." - -{{BENEFITS_FROM}} - -**Handoff note save (BENEFITS_FROM):** If the user chose A (run /office-hours first), -save a handoff context note before they leave. Reuse $SLUG and $BRANCH from the -design doc check block above (they use the same `remote-slug || basename` fallback -that handles repos without an origin remote). Then run: -```bash -mkdir -p ~/.gstack/projects/$SLUG -USER=$(whoami) -DATETIME=$(date +%Y%m%d-%H%M%S) -``` -Write to `~/.gstack/projects/$SLUG/$USER-$BRANCH-ceo-handoff-$DATETIME.md`: -```markdown -# CEO Review Handoff Note - -Generated by /plan-ceo-review on {date} -Branch: {branch} -Repo: {owner/repo} - -## Why I paused -User chose to run /office-hours first (no design doc found). - -## System Audit Summary -{Summarize what the system audit found — recent git history, diff scope, -CLAUDE.md key points, TODOS.md relevant items, known pain points} - -## Discussion So Far -{Empty — handoff happened before Step 0. Frontend/UI scope detection has not -run yet — it will be assessed when the review resumes.} -``` - -Tell the user: "Context saved. Run /office-hours in another window. When you come back -and invoke /plan-ceo-review, I'll pick up the context automatically — including the -design doc /office-hours produces." - -**Mid-session detection:** During Step 0A (Premise Challenge), if the user can't -articulate the problem, keeps changing the problem statement, answers with "I'm not -sure," or is clearly exploring rather than reviewing — offer `/office-hours`: - -> "It sounds like you're still figuring out what to build — that's totally fine, but -> that's what /office-hours is designed for. Want to pause this review and run -> /office-hours first? It'll help you nail down the problem and approach, then come -> back here for the strategic review." - -Options: A) Yes, run /office-hours first. B) No, keep going. -If they keep going, proceed normally — no guilt, no re-asking. - -**Handoff note save (mid-session):** If the user chose A (run /office-hours first from -mid-session detection), save a handoff context note with the same format above, but -include any Step 0A progress in the "Discussion So Far" section — premises discussed, -problem framing attempts, user answers so far. Use the same bash block to generate the -file path. - -Tell the user: "Context saved with your discussion so far. Run /office-hours, then -come back to /plan-ceo-review." - -When reading TODOS.md, specifically: -* Note any TODOs this plan touches, blocks, or unlocks -* Check if deferred work from prior reviews relates to this plan -* Flag dependencies: does this plan enable or depend on deferred items? -* Map known pain points (from TODOS) to this plan's scope - -Map: -* What is the current system state? -* What is already in flight (other open PRs, branches, stashed changes)? -* What are the existing known pain points most relevant to this plan? -* Are there any FIXME/TODO comments in files this plan touches? - -### Retrospective Check -Check the git log for this branch. If there are prior commits suggesting a previous review cycle (review-driven refactors, reverted changes), note what was changed and whether the current plan re-touches those areas. Be MORE aggressive reviewing areas that were previously problematic. Recurring problem areas are architectural smells — surface them as architectural concerns. - -### Frontend/UI Scope Detection -Analyze the plan. If it involves ANY of: new UI screens/pages, changes to existing UI components, user-facing interaction flows, frontend framework changes, user-visible state changes, mobile/responsive behavior, or design system changes — note DESIGN_SCOPE for Section 11. - -### Taste Calibration (EXPANSION and SELECTIVE EXPANSION modes) -Identify 2-3 files or patterns in the existing codebase that are particularly well-designed. Note them as style references for the review. Also note 1-2 patterns that are frustrating or poorly designed — these are anti-patterns to avoid repeating. -Report findings before proceeding to Step 0. - -### Landscape Check - -Read ETHOS.md for the Search Before Building framework (the preamble's Search Before Building section has the path). Before challenging scope, understand the landscape. WebSearch for: -- "[product category] landscape {current year}" -- "[key feature] alternatives" -- "why [incumbent/conventional approach] [succeeds/fails]" - -If WebSearch is unavailable, skip this check and note: "Search unavailable — proceeding with in-distribution knowledge only." - -Run the three-layer synthesis: -- **[Layer 1]** What's the tried-and-true approach in this space? -- **[Layer 2]** What are the search results saying? -- **[Layer 3]** First-principles reasoning — where might the conventional wisdom be wrong? - -Feed into the Premise Challenge (0A) and Dream State Mapping (0C). If you find a eureka moment, surface it during the Expansion opt-in ceremony as a differentiation opportunity. Log it (see preamble). - -## Step 0: Nuclear Scope Challenge + Mode Selection - -### 0A. Premise Challenge -1. Is this the right problem to solve? Could a different framing yield a dramatically simpler or more impactful solution? -2. What is the actual user/business outcome? Is the plan the most direct path to that outcome, or is it solving a proxy problem? -3. What would happen if we did nothing? Real pain point or hypothetical one? - -### 0B. Existing Code Leverage -1. What existing code already partially or fully solves each sub-problem? Map every sub-problem to existing code. Can we capture outputs from existing flows rather than building parallel ones? -2. Is this plan rebuilding anything that already exists? If yes, explain why rebuilding is better than refactoring. - -### 0C. Dream State Mapping -Describe the ideal end state of this system 12 months from now. Does this plan move toward that state or away from it? -``` - CURRENT STATE THIS PLAN 12-MONTH IDEAL - [describe] ---> [describe delta] ---> [describe target] -``` - -### 0C-bis. Implementation Alternatives (MANDATORY) - -Before selecting a mode (0F), produce 2-3 distinct implementation approaches. This is NOT optional — every plan must consider alternatives. - -For each approach: -``` -APPROACH A: [Name] - Summary: [1-2 sentences] - Effort: [S/M/L/XL] - Risk: [Low/Med/High] - Pros: [2-3 bullets] - Cons: [2-3 bullets] - Reuses: [existing code/patterns leveraged] - -APPROACH B: [Name] - ... - -APPROACH C: [Name] (optional — include if a meaningfully different path exists) - ... -``` - -**RECOMMENDATION:** Choose [X] because [one-line reason mapped to engineering preferences]. - -Rules: -- At least 2 approaches required. 3 preferred for non-trivial plans. -- One approach must be the "minimal viable" (fewest files, smallest diff). -- One approach must be the "ideal architecture" (best long-term trajectory). -- If only one approach exists, explain concretely why alternatives were eliminated. -- Do NOT proceed to mode selection (0F) without user approval of the chosen approach. - -### 0D. Mode-Specific Analysis -**For SCOPE EXPANSION** — run all three, then the opt-in ceremony: -1. 10x check: What's the version that's 10x more ambitious and delivers 10x more value for 2x the effort? Describe it concretely. -2. Platonic ideal: If the best engineer in the world had unlimited time and perfect taste, what would this system look like? What would the user feel when using it? Start from experience, not architecture. -3. Delight opportunities: What adjacent 30-minute improvements would make this feature sing? Things where a user would think "oh nice, they thought of that." List at least 5. -4. **Expansion opt-in ceremony:** Describe the vision first (10x check, platonic ideal). Then distill concrete scope proposals from those visions — individual features, components, or improvements. Present each proposal as its own AskUserQuestion. Recommend enthusiastically — explain why it's worth doing. But the user decides. Options: **A)** Add to this plan's scope **B)** Defer to TODOS.md **C)** Skip. Accepted items become plan scope for all remaining review sections. Rejected items go to "NOT in scope." - -**For SELECTIVE EXPANSION** — run the HOLD SCOPE analysis first, then surface expansions: -1. Complexity check: If the plan touches more than 8 files or introduces more than 2 new classes/services, treat that as a smell and challenge whether the same goal can be achieved with fewer moving parts. -2. What is the minimum set of changes that achieves the stated goal? Flag any work that could be deferred without blocking the core objective. -3. Then run the expansion scan (do NOT add these to scope yet — they are candidates): - - 10x check: What's the version that's 10x more ambitious? Describe it concretely. - - Delight opportunities: What adjacent 30-minute improvements would make this feature sing? List at least 5. - - Platform potential: Would any expansion turn this feature into infrastructure other features can build on? -4. **Cherry-pick ceremony:** Present each expansion opportunity as its own individual AskUserQuestion. Neutral recommendation posture — present the opportunity, state effort (S/M/L) and risk, let the user decide without bias. Options: **A)** Add to this plan's scope **B)** Defer to TODOS.md **C)** Skip. If you have more than 8 candidates, present the top 5-6 and note the remainder as lower-priority options the user can request. Accepted items become plan scope for all remaining review sections. Rejected items go to "NOT in scope." - -**For HOLD SCOPE** — run this: -1. Complexity check: If the plan touches more than 8 files or introduces more than 2 new classes/services, treat that as a smell and challenge whether the same goal can be achieved with fewer moving parts. -2. What is the minimum set of changes that achieves the stated goal? Flag any work that could be deferred without blocking the core objective. - -**For SCOPE REDUCTION** — run this: -1. Ruthless cut: What is the absolute minimum that ships value to a user? Everything else is deferred. No exceptions. -2. What can be a follow-up PR? Separate "must ship together" from "nice to ship together." - -### 0D-POST. Persist CEO Plan (EXPANSION and SELECTIVE EXPANSION only) - -After the opt-in/cherry-pick ceremony, write the plan to disk so the vision and decisions survive beyond this conversation. Only run this step for EXPANSION and SELECTIVE EXPANSION modes. - -```bash -source <(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null) && mkdir -p ~/.gstack/projects/$SLUG/ceo-plans -``` - -Before writing, check for existing CEO plans in the ceo-plans/ directory. If any are >30 days old or their branch has been merged/deleted, offer to archive them: - -```bash -mkdir -p ~/.gstack/projects/$SLUG/ceo-plans/archive -# For each stale plan: mv ~/.gstack/projects/$SLUG/ceo-plans/{old-plan}.md ~/.gstack/projects/$SLUG/ceo-plans/archive/ -``` - -Write to `~/.gstack/projects/$SLUG/ceo-plans/{date}-{feature-slug}.md` using this format: - -```markdown ---- -status: ACTIVE ---- -# CEO Plan: {Feature Name} -Generated by /plan-ceo-review on {date} -Branch: {branch} | Mode: {EXPANSION / SELECTIVE EXPANSION} -Repo: {owner/repo} - -## Vision - -### 10x Check -{10x vision description} - -### Platonic Ideal -{platonic ideal description — EXPANSION mode only} - -## Scope Decisions - -| # | Proposal | Effort | Decision | Reasoning | -|---|----------|--------|----------|-----------| -| 1 | {proposal} | S/M/L | ACCEPTED / DEFERRED / SKIPPED | {why} | - -## Accepted Scope (added to this plan) -- {bullet list of what's now in scope} - -## Deferred to TODOS.md -- {items with context} -``` - -Derive the feature slug from the plan being reviewed (e.g., "user-dashboard", "auth-refactor"). Use the date in YYYY-MM-DD format. - -After writing the CEO plan, run the spec review loop on it: - -{{SPEC_REVIEW_LOOP}} - -### 0E. Temporal Interrogation (EXPANSION, SELECTIVE EXPANSION, and HOLD modes) -Think ahead to implementation: What decisions will need to be made during implementation that should be resolved NOW in the plan? -``` - HOUR 1 (foundations): What does the implementer need to know? - HOUR 2-3 (core logic): What ambiguities will they hit? - HOUR 4-5 (integration): What will surprise them? - HOUR 6+ (polish/tests): What will they wish they'd planned for? -``` -NOTE: These represent human-team implementation hours. With CC + gstack, -6 hours of human implementation compresses to ~30-60 minutes. The decisions -are identical — the implementation speed is 10-20x faster. Always present -both scales when discussing effort. - -Surface these as questions for the user NOW, not as "figure it out later." - -### 0F. Mode Selection -In every mode, you are 100% in control. No scope is added without your explicit approval. - -Present four options: -1. **SCOPE EXPANSION:** The plan is good but could be great. Dream big — propose the ambitious version. Every expansion is presented individually for your approval. You opt in to each one. -2. **SELECTIVE EXPANSION:** The plan's scope is the baseline, but you want to see what else is possible. Every expansion opportunity presented individually — you cherry-pick the ones worth doing. Neutral recommendations. -3. **HOLD SCOPE:** The plan's scope is right. Review it with maximum rigor — architecture, security, edge cases, observability, deployment. Make it bulletproof. No expansions surfaced. -4. **SCOPE REDUCTION:** The plan is overbuilt or wrong-headed. Propose a minimal version that achieves the core goal, then review that. - -Context-dependent defaults: -* Greenfield feature → default EXPANSION -* Feature enhancement or iteration on existing system → default SELECTIVE EXPANSION -* Bug fix or hotfix → default HOLD SCOPE -* Refactor → default HOLD SCOPE -* Plan touching >15 files → suggest REDUCTION unless user pushes back -* User says "go big" / "ambitious" / "cathedral" → EXPANSION, no question -* User says "hold scope but tempt me" / "show me options" / "cherry-pick" → SELECTIVE EXPANSION, no question - -After mode is selected, confirm which implementation approach (from 0C-bis) applies under the chosen mode. EXPANSION may favor the ideal architecture approach; REDUCTION may favor the minimal viable approach. - -Once selected, commit fully. Do not silently drift. -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -## Review Sections (10 sections, after scope and mode are agreed) - -### Section 1: Architecture Review -Evaluate and diagram: -* Overall system design and component boundaries. Draw the dependency graph. -* Data flow — all four paths. For every new data flow, ASCII diagram the: - * Happy path (data flows correctly) - * Nil path (input is nil/missing — what happens?) - * Empty path (input is present but empty/zero-length — what happens?) - * Error path (upstream call fails — what happens?) -* State machines. ASCII diagram for every new stateful object. Include impossible/invalid transitions and what prevents them. -* Coupling concerns. Which components are now coupled that weren't before? Is that coupling justified? Draw the before/after dependency graph. -* Scaling characteristics. What breaks first under 10x load? Under 100x? -* Single points of failure. Map them. -* Security architecture. Auth boundaries, data access patterns, API surfaces. For each new endpoint or data mutation: who can call it, what do they get, what can they change? -* Production failure scenarios. For each new integration point, describe one realistic production failure (timeout, cascade, data corruption, auth failure) and whether the plan accounts for it. -* Rollback posture. If this ships and immediately breaks, what's the rollback procedure? Git revert? Feature flag? DB migration rollback? How long? - -**EXPANSION and SELECTIVE EXPANSION additions:** -* What would make this architecture beautiful? Not just correct — elegant. Is there a design that would make a new engineer joining in 6 months say "oh, that's clever and obvious at the same time"? -* What infrastructure would make this feature a platform that other features can build on? - -**SELECTIVE EXPANSION:** If any accepted cherry-picks from Step 0D affect the architecture, evaluate their architectural fit here. Flag any that create coupling concerns or don't integrate cleanly — this is a chance to revisit the decision with new information. - -Required ASCII diagram: full system architecture showing new components and their relationships to existing ones. -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -### Section 2: Error & Rescue Map -This is the section that catches silent failures. It is not optional. -For every new method, service, or codepath that can fail, fill in this table: -``` - METHOD/CODEPATH | WHAT CAN GO WRONG | EXCEPTION CLASS - -------------------------|-----------------------------|----------------- - ExampleService#call | API timeout | TimeoutError - | API returns 429 | RateLimitError - | API returns malformed JSON | JSONParseError - | DB connection pool exhausted| ConnectionPoolExhausted - | Record not found | RecordNotFound - -------------------------|-----------------------------|----------------- - - EXCEPTION CLASS | RESCUED? | RESCUE ACTION | USER SEES - -----------------------------|-----------|------------------------|------------------ - TimeoutError | Y | Retry 2x, then raise | "Service temporarily unavailable" - RateLimitError | Y | Backoff + retry | Nothing (transparent) - JSONParseError | N ← GAP | — | 500 error ← BAD - ConnectionPoolExhausted | N ← GAP | — | 500 error ← BAD - RecordNotFound | Y | Return nil, log warning | "Not found" message -``` -Rules for this section: -* Catch-all error handling (`rescue StandardError`, `catch (Exception e)`, `except Exception`) is ALWAYS a smell. Name the specific exceptions. -* Catching an error with only a generic log message is insufficient. Log the full context: what was being attempted, with what arguments, for what user/request. -* Every rescued error must either: retry with backoff, degrade gracefully with a user-visible message, or re-raise with added context. "Swallow and continue" is almost never acceptable. -* For each GAP (unrescued error that should be rescued): specify the rescue action and what the user should see. -* For LLM/AI service calls specifically: what happens when the response is malformed? When it's empty? When it hallucinates invalid JSON? When the model returns a refusal? Each of these is a distinct failure mode. -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -### Section 3: Security & Threat Model -Security is not a sub-bullet of architecture. It gets its own section. -Evaluate: -* Attack surface expansion. What new attack vectors does this plan introduce? New endpoints, new params, new file paths, new background jobs? -* Input validation. For every new user input: is it validated, sanitized, and rejected loudly on failure? What happens with: nil, empty string, string when integer expected, string exceeding max length, unicode edge cases, HTML/script injection attempts? -* Authorization. For every new data access: is it scoped to the right user/role? Is there a direct object reference vulnerability? Can user A access user B's data by manipulating IDs? -* Secrets and credentials. New secrets? In env vars, not hardcoded? Rotatable? -* Dependency risk. New gems/npm packages? Security track record? -* Data classification. PII, payment data, credentials? Handling consistent with existing patterns? -* Injection vectors. SQL, command, template, LLM prompt injection — check all. -* Audit logging. For sensitive operations: is there an audit trail? - -For each finding: threat, likelihood (High/Med/Low), impact (High/Med/Low), and whether the plan mitigates it. -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -### Section 4: Data Flow & Interaction Edge Cases -This section traces data through the system and interactions through the UI with adversarial thoroughness. - -**Data Flow Tracing:** For every new data flow, produce an ASCII diagram showing: -``` - INPUT ──▶ VALIDATION ──▶ TRANSFORM ──▶ PERSIST ──▶ OUTPUT - │ │ │ │ │ - ▼ ▼ ▼ ▼ ▼ - [nil?] [invalid?] [exception?] [conflict?] [stale?] - [empty?] [too long?] [timeout?] [dup key?] [partial?] - [wrong [wrong type?] [OOM?] [locked?] [encoding?] - type?] -``` -For each node: what happens on each shadow path? Is it tested? - -**Interaction Edge Cases:** For every new user-visible interaction, evaluate: -``` - INTERACTION | EDGE CASE | HANDLED? | HOW? - ---------------------|------------------------|----------|-------- - Form submission | Double-click submit | ? | - | Submit with stale CSRF | ? | - | Submit during deploy | ? | - Async operation | User navigates away | ? | - | Operation times out | ? | - | Retry while in-flight | ? | - List/table view | Zero results | ? | - | 10,000 results | ? | - | Results change mid-page| ? | - Background job | Job fails after 3 of | ? | - | 10 items processed | | - | Job runs twice (dup) | ? | - | Queue backs up 2 hours | ? | -``` -Flag any unhandled edge case as a gap. For each gap, specify the fix. -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -### Section 5: Code Quality Review -Evaluate: -* Code organization and module structure. Does new code fit existing patterns? If it deviates, is there a reason? -* DRY violations. Be aggressive. If the same logic exists elsewhere, flag it and reference the file and line. -* Naming quality. Are new classes, methods, and variables named for what they do, not how they do it? -* Error handling patterns. (Cross-reference with Section 2 — this section reviews the patterns; Section 2 maps the specifics.) -* Missing edge cases. List explicitly: "What happens when X is nil?" "When the API returns 429?" etc. -* Over-engineering check. Any new abstraction solving a problem that doesn't exist yet? -* Under-engineering check. Anything fragile, assuming happy path only, or missing obvious defensive checks? -* Cyclomatic complexity. Flag any new method that branches more than 5 times. Propose a refactor. -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -### Section 6: Test Review -Make a complete diagram of every new thing this plan introduces: -``` - NEW UX FLOWS: - [list each new user-visible interaction] - - NEW DATA FLOWS: - [list each new path data takes through the system] - - NEW CODEPATHS: - [list each new branch, condition, or execution path] - - NEW BACKGROUND JOBS / ASYNC WORK: - [list each] - - NEW INTEGRATIONS / EXTERNAL CALLS: - [list each] - - NEW ERROR/RESCUE PATHS: - [list each — cross-reference Section 2] -``` -For each item in the diagram: -* What type of test covers it? (Unit / Integration / System / E2E) -* Does a test for it exist in the plan? If not, write the test spec header. -* What is the happy path test? -* What is the failure path test? (Be specific — which failure?) -* What is the edge case test? (nil, empty, boundary values, concurrent access) - -Test ambition check (all modes): For each new feature, answer: -* What's the test that would make you confident shipping at 2am on a Friday? -* What's the test a hostile QA engineer would write to break this? -* What's the chaos test? - -Test pyramid check: Many unit, fewer integration, few E2E? Or inverted? -Flakiness risk: Flag any test depending on time, randomness, external services, or ordering. -Load/stress test requirements: For any new codepath called frequently or processing significant data. - -For LLM/prompt changes: Check CLAUDE.md for the "Prompt/LLM changes" file patterns. If this plan touches ANY of those patterns, state which eval suites must be run, which cases should be added, and what baselines to compare against. -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -### Section 7: Performance Review -Evaluate: -* N+1 queries. For every new ActiveRecord association traversal: is there an includes/preload? -* Memory usage. For every new data structure: what's the maximum size in production? -* Database indexes. For every new query: is there an index? -* Caching opportunities. For every expensive computation or external call: should it be cached? -* Background job sizing. For every new job: worst-case payload, runtime, retry behavior? -* Slow paths. Top 3 slowest new codepaths and estimated p99 latency. -* Connection pool pressure. New DB connections, Redis connections, HTTP connections? -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -### Section 8: Observability & Debuggability Review -New systems break. This section ensures you can see why. -Evaluate: -* Logging. For every new codepath: structured log lines at entry, exit, and each significant branch? -* Metrics. For every new feature: what metric tells you it's working? What tells you it's broken? -* Tracing. For new cross-service or cross-job flows: trace IDs propagated? -* Alerting. What new alerts should exist? -* Dashboards. What new dashboard panels do you want on day 1? -* Debuggability. If a bug is reported 3 weeks post-ship, can you reconstruct what happened from logs alone? -* Admin tooling. New operational tasks that need admin UI or rake tasks? -* Runbooks. For each new failure mode: what's the operational response? - -**EXPANSION and SELECTIVE EXPANSION addition:** -* What observability would make this feature a joy to operate? (For SELECTIVE EXPANSION, include observability for any accepted cherry-picks.) -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -### Section 9: Deployment & Rollout Review -Evaluate: -* Migration safety. For every new DB migration: backward-compatible? Zero-downtime? Table locks? -* Feature flags. Should any part be behind a feature flag? -* Rollout order. Correct sequence: migrate first, deploy second? -* Rollback plan. Explicit step-by-step. -* Deploy-time risk window. Old code and new code running simultaneously — what breaks? -* Environment parity. Tested in staging? -* Post-deploy verification checklist. First 5 minutes? First hour? -* Smoke tests. What automated checks should run immediately post-deploy? - -**EXPANSION and SELECTIVE EXPANSION addition:** -* What deploy infrastructure would make shipping this feature routine? (For SELECTIVE EXPANSION, assess whether accepted cherry-picks change the deployment risk profile.) -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -### Section 10: Long-Term Trajectory Review -Evaluate: -* Technical debt introduced. Code debt, operational debt, testing debt, documentation debt. -* Path dependency. Does this make future changes harder? -* Knowledge concentration. Documentation sufficient for a new engineer? -* Reversibility. Rate 1-5: 1 = one-way door, 5 = easily reversible. -* Ecosystem fit. Aligns with Rails/JS ecosystem direction? -* The 1-year question. Read this plan as a new engineer in 12 months — obvious? - -**EXPANSION and SELECTIVE EXPANSION additions:** -* What comes after this ships? Phase 2? Phase 3? Does the architecture support that trajectory? -* Platform potential. Does this create capabilities other features can leverage? -* (SELECTIVE EXPANSION only) Retrospective: Were the right cherry-picks accepted? Did any rejected expansions turn out to be load-bearing for the accepted ones? -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -### Section 11: Design & UX Review (skip if no UI scope detected) -The CEO calling in the designer. Not a pixel-level audit — that's /plan-design-review and /design-review. This is ensuring the plan has design intentionality. - -Evaluate: -* Information architecture — what does the user see first, second, third? -* Interaction state coverage map: - FEATURE | LOADING | EMPTY | ERROR | SUCCESS | PARTIAL -* User journey coherence — storyboard the emotional arc -* AI slop risk — does the plan describe generic UI patterns? -* DESIGN.md alignment — does the plan match the stated design system? -* Responsive intention — is mobile mentioned or afterthought? -* Accessibility basics — keyboard nav, screen readers, contrast, touch targets - -**EXPANSION and SELECTIVE EXPANSION additions:** -* What would make this UI feel *inevitable*? -* What 30-minute UI touches would make users think "oh nice, they thought of that"? - -Required ASCII diagram: user flow showing screens/states and transitions. - -If this plan has significant UI scope, recommend: "Consider running /plan-design-review for a deep design review of this plan before implementation." -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues or fix is obvious, state what you'll do and move on — don't waste a question. Do NOT proceed until user responds. - -## Post-Implementation Design Audit (if UI scope detected) -After implementation, run `/design-review` on the live site to catch visual issues that can only be evaluated with rendered output. - -## CRITICAL RULE — How to ask questions -Follow the AskUserQuestion format from the Preamble above. Additional rules for plan reviews: -* **One issue = one AskUserQuestion call.** Never combine multiple issues into one question. -* Describe the problem concretely, with file and line references. -* Present 2-3 options, including "do nothing" where reasonable. -* For each option: effort, risk, and maintenance burden in one line. -* **Map the reasoning to my engineering preferences above.** One sentence connecting your recommendation to a specific preference. -* Label with issue NUMBER + option LETTER (e.g., "3A", "3B"). -* **Escape hatch:** If a section has no issues, say so and move on. If an issue has an obvious fix with no real alternatives, state what you'll do and move on — don't waste a question on it. Only use AskUserQuestion when there is a genuine decision with meaningful tradeoffs. - -## Required Outputs - -### "NOT in scope" section -List work considered and explicitly deferred, with one-line rationale each. - -### "What already exists" section -List existing code/flows that partially solve sub-problems and whether the plan reuses them. - -### "Dream state delta" section -Where this plan leaves us relative to the 12-month ideal. - -### Error & Rescue Registry (from Section 2) -Complete table of every method that can fail, every exception class, rescued status, rescue action, user impact. - -### Failure Modes Registry -``` - CODEPATH | FAILURE MODE | RESCUED? | TEST? | USER SEES? | LOGGED? - ---------|----------------|----------|-------|----------------|-------- -``` -Any row with RESCUED=N, TEST=N, USER SEES=Silent → **CRITICAL GAP**. - -### TODOS.md updates -Present each potential TODO as its own individual AskUserQuestion. Never batch TODOs — one per question. Never silently skip this step. Follow the format in `.claude/skills/review/TODOS-format.md`. - -For each TODO, describe: -* **What:** One-line description of the work. -* **Why:** The concrete problem it solves or value it unlocks. -* **Pros:** What you gain by doing this work. -* **Cons:** Cost, complexity, or risks of doing it. -* **Context:** Enough detail that someone picking this up in 3 months understands the motivation, the current state, and where to start. -* **Effort estimate:** S/M/L/XL (human team) → with CC+gstack: S→S, M→S, L→M, XL→L -* **Priority:** P1/P2/P3 -* **Depends on / blocked by:** Any prerequisites or ordering constraints. - -Then present options: **A)** Add to TODOS.md **B)** Skip — not valuable enough **C)** Build it now in this PR instead of deferring. - -### Scope Expansion Decisions (EXPANSION and SELECTIVE EXPANSION only) -For EXPANSION and SELECTIVE EXPANSION modes: expansion opportunities and delight items were surfaced and decided in Step 0D (opt-in/cherry-pick ceremony). The decisions are persisted in the CEO plan document. Reference the CEO plan for the full record. Do not re-surface them here — list the accepted expansions for completeness: -* Accepted: {list items added to scope} -* Deferred: {list items sent to TODOS.md} -* Skipped: {list items rejected} - -### Diagrams (mandatory, produce all that apply) -1. System architecture -2. Data flow (including shadow paths) -3. State machine -4. Error flow -5. Deployment sequence -6. Rollback flowchart - -### Stale Diagram Audit -List every ASCII diagram in files this plan touches. Still accurate? - -### Completion Summary -``` - +====================================================================+ - | MEGA PLAN REVIEW — COMPLETION SUMMARY | - +====================================================================+ - | Mode selected | EXPANSION / SELECTIVE / HOLD / REDUCTION | - | System Audit | [key findings] | - | Step 0 | [mode + key decisions] | - | Section 1 (Arch) | ___ issues found | - | Section 2 (Errors) | ___ error paths mapped, ___ GAPS | - | Section 3 (Security)| ___ issues found, ___ High severity | - | Section 4 (Data/UX) | ___ edge cases mapped, ___ unhandled | - | Section 5 (Quality) | ___ issues found | - | Section 6 (Tests) | Diagram produced, ___ gaps | - | Section 7 (Perf) | ___ issues found | - | Section 8 (Observ) | ___ gaps found | - | Section 9 (Deploy) | ___ risks flagged | - | Section 10 (Future) | Reversibility: _/5, debt items: ___ | - | Section 11 (Design) | ___ issues / SKIPPED (no UI scope) | - +--------------------------------------------------------------------+ - | NOT in scope | written (___ items) | - | What already exists | written | - | Dream state delta | written | - | Error/rescue registry| ___ methods, ___ CRITICAL GAPS | - | Failure modes | ___ total, ___ CRITICAL GAPS | - | TODOS.md updates | ___ items proposed | - | Scope proposals | ___ proposed, ___ accepted (EXP + SEL) | - | CEO plan | written / skipped (HOLD/REDUCTION) | - | Lake Score | X/Y recommendations chose complete option | - | Diagrams produced | ___ (list types) | - | Stale diagrams found | ___ | - | Unresolved decisions | ___ (listed below) | - +====================================================================+ -``` - -### Unresolved Decisions -If any AskUserQuestion goes unanswered, note it here. Never silently default. - -## Handoff Note Cleanup - -After producing the Completion Summary, clean up any handoff notes for this branch — -the review is complete and the context is no longer needed. - -```bash -source <(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null) -rm -f ~/.gstack/projects/$SLUG/*-$BRANCH-ceo-handoff-*.md 2>/dev/null || true -``` - -## Review Log - -After producing the Completion Summary above, persist the review result. - -**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes review metadata to -`~/.gstack/` (user config directory, not project files). The skill preamble -already writes to `~/.gstack/sessions/` and `~/.gstack/analytics/` — this is -the same pattern. The review dashboard depends on this data. Skipping this -command breaks the review readiness dashboard in /ship. - -```bash -~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-ceo-review","timestamp":"TIMESTAMP","status":"STATUS","unresolved":N,"critical_gaps":N,"mode":"MODE","scope_proposed":N,"scope_accepted":N,"scope_deferred":N,"commit":"COMMIT"}' -``` - -Before running this command, substitute the placeholder values from the Completion Summary you just produced: -- **TIMESTAMP**: current ISO 8601 datetime (e.g., 2026-03-16T14:30:00) -- **STATUS**: "clean" if 0 unresolved decisions AND 0 critical gaps; otherwise "issues_open" -- **unresolved**: number from "Unresolved decisions" in the summary -- **critical_gaps**: number from "Failure modes: ___ CRITICAL GAPS" in the summary -- **MODE**: the mode the user selected (SCOPE_EXPANSION / SELECTIVE_EXPANSION / HOLD_SCOPE / SCOPE_REDUCTION) -- **scope_proposed**: number from "Scope proposals: ___ proposed" in the summary (0 for HOLD/REDUCTION) -- **scope_accepted**: number from "Scope proposals: ___ accepted" in the summary (0 for HOLD/REDUCTION) -- **scope_deferred**: number of items deferred to TODOS.md from scope decisions (0 for HOLD/REDUCTION) -- **COMMIT**: output of `git rev-parse --short HEAD` - -{{REVIEW_DASHBOARD}} - -{{PLAN_FILE_REVIEW_REPORT}} - -## Next Steps — Review Chaining - -After displaying the Review Readiness Dashboard, recommend the next review(s) based on what this CEO review discovered. Read the dashboard output to see which reviews have already been run and whether they are stale. - -**Recommend /plan-eng-review if eng review is not skipped globally** — check the dashboard output for `skip_eng_review`. If it is `true`, eng review is opted out — do not recommend it. Otherwise, eng review is the required shipping gate. If this CEO review expanded scope, changed architectural direction, or accepted scope expansions, emphasize that a fresh eng review is needed. If an eng review already exists in the dashboard but the commit hash shows it predates this CEO review, note that it may be stale and should be re-run. - -**Recommend /plan-design-review if UI scope was detected** — specifically if Section 11 (Design & UX Review) was NOT skipped, or if accepted scope expansions included UI-facing features. If an existing design review is stale (commit hash drift), note that. In SCOPE REDUCTION mode, skip this recommendation — design review is unlikely relevant for scope cuts. - -**If both are needed, recommend eng review first** (required gate), then design review. - -Use AskUserQuestion to present the next step. Include only applicable options: -- **A)** Run /plan-eng-review next (required gate) -- **B)** Run /plan-design-review next (only if UI scope detected) -- **C)** Skip — I'll handle reviews manually - -## docs/designs Promotion (EXPANSION and SELECTIVE EXPANSION only) - -At the end of the review, if the vision produced a compelling feature direction, offer to promote the CEO plan to the project repo. AskUserQuestion: - -"The vision from this review produced {N} accepted scope expansions. Want to promote it to a design doc in the repo?" -- **A)** Promote to `docs/designs/{FEATURE}.md` (committed to repo, visible to the team) -- **B)** Keep in `~/.gstack/projects/` only (local, personal reference) -- **C)** Skip - -If promoted, copy the CEO plan content to `docs/designs/{FEATURE}.md` (create the directory if needed) and update the `status` field in the original CEO plan from `ACTIVE` to `PROMOTED`. - -## Formatting Rules -* NUMBER issues (1, 2, 3...) and LETTERS for options (A, B, C...). -* Label with NUMBER + LETTER (e.g., "3A", "3B"). -* One sentence max per option. -* After each section, pause and wait for feedback. -* Use **CRITICAL GAP** / **WARNING** / **OK** for scannability. - -## Mode Quick Reference -``` - ┌────────────────────────────────────────────────────────────────────────────────┐ - │ MODE COMPARISON │ - ├─────────────┬──────────────┬──────────────┬──────────────┬────────────────────┤ - │ │ EXPANSION │ SELECTIVE │ HOLD SCOPE │ REDUCTION │ - ├─────────────┼──────────────┼──────────────┼──────────────┼────────────────────┤ - │ Scope │ Push UP │ Hold + offer │ Maintain │ Push DOWN │ - │ │ (opt-in) │ │ │ │ - │ Recommend │ Enthusiastic │ Neutral │ N/A │ N/A │ - │ posture │ │ │ │ │ - │ 10x check │ Mandatory │ Surface as │ Optional │ Skip │ - │ │ │ cherry-pick │ │ │ - │ Platonic │ Yes │ No │ No │ No │ - │ ideal │ │ │ │ │ - │ Delight │ Opt-in │ Cherry-pick │ Note if seen │ Skip │ - │ opps │ ceremony │ ceremony │ │ │ - │ Complexity │ "Is it big │ "Is it right │ "Is it too │ "Is it the bare │ - │ question │ enough?" │ + what else │ complex?" │ minimum?" │ - │ │ │ is tempting"│ │ │ - │ Taste │ Yes │ Yes │ No │ No │ - │ calibration │ │ │ │ │ - │ Temporal │ Full (hr 1-6)│ Full (hr 1-6)│ Key decisions│ Skip │ - │ interrogate │ │ │ only │ │ - │ Observ. │ "Joy to │ "Joy to │ "Can we │ "Can we see if │ - │ standard │ operate" │ operate" │ debug it?" │ it's broken?" │ - │ Deploy │ Infra as │ Safe deploy │ Safe deploy │ Simplest possible │ - │ standard │ feature scope│ + cherry-pick│ + rollback │ deploy │ - │ │ │ risk check │ │ │ - │ Error map │ Full + chaos │ Full + chaos │ Full │ Critical paths │ - │ │ scenarios │ for accepted │ │ only │ - │ CEO plan │ Written │ Written │ Skipped │ Skipped │ - │ Phase 2/3 │ Map accepted │ Map accepted │ Note it │ Skip │ - │ planning │ │ cherry-picks │ │ │ - │ Design │ "Inevitable" │ If UI scope │ If UI scope │ Skip │ - │ (Sec 11) │ UI review │ detected │ detected │ │ - └─────────────┴──────────────┴──────────────┴──────────────┴────────────────────┘ -``` diff --git a/skills/plan-design-review/SKILL.md b/skills/plan-design-review/SKILL.md deleted file mode 100644 index 4defcf9..0000000 --- a/skills/plan-design-review/SKILL.md +++ /dev/null @@ -1,598 +0,0 @@ ---- -name: plan-design-review -version: 2.0.0 -description: | - Designer's eye plan review — interactive, like CEO and Eng review. - Rates each design dimension 0-10, explains what would make it a 10, - then fixes the plan to get there. Works in plan mode. For live site - visual audits, use /design-review. Use when asked to "review the design plan" - or "design critique". - Proactively suggest when the user has a plan with UI/UX components that - should be reviewed before implementation. -maturity: imported -allowed-tools: - - Read - - Edit - - Grep - - Glob - - Bash - - AskUserQuestion ---- - - - -## Preamble (run first) - -```bash -_UPD=$(~/.claude/skills/gstack/bin/gstack-update-check 2>/dev/null || .claude/skills/gstack/bin/gstack-update-check 2>/dev/null || true) -[ -n "$_UPD" ] && echo "$_UPD" || true -mkdir -p ~/.gstack/sessions -touch ~/.gstack/sessions/"$PPID" -_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ') -find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true -_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true) -_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true") -_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown") -echo "BRANCH: $_BRANCH" -echo "PROACTIVE: $_PROACTIVE" -_LAKE_SEEN=$([ -f ~/.gstack/.completeness-intro-seen ] && echo "yes" || echo "no") -echo "LAKE_INTRO: $_LAKE_SEEN" -``` - -If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills — only invoke -them when the user explicitly asks. The user opted out of proactive suggestions. - -If output shows `UPGRADE_AVAILABLE `: read `~/.claude/skills/gstack/gstack-upgrade/SKILL.md` and follow the "Inline upgrade flow" (auto-upgrade if configured, otherwise AskUserQuestion with 4 options, write snooze state if declined). If `JUST_UPGRADED `: tell user "Running gstack v{to} (just updated!)" and continue. - -If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle. -Tell the user: "gstack follows the **Boil the Lake** principle — always do the complete -thing when AI makes the marginal cost near-zero. Read more: https://garryslist.org/posts/boil-the-ocean" -Then offer to open the essay in their default browser: - -```bash -open https://garryslist.org/posts/boil-the-ocean -touch ~/.gstack/.completeness-intro-seen -``` - -Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once. - - -## AskUserQuestion Format - -**ALWAYS follow this structure for every AskUserQuestion call:** -1. **Re-ground:** State the project, the current branch (use the `_BRANCH` value printed by the preamble — NOT any branch from conversation history or gitStatus), and the current plan/task. (1-2 sentences) -2. **Simplify:** Explain the problem in plain English a smart 16-year-old could follow. No raw function names, no internal jargon, no implementation details. Use concrete examples and analogies. Say what it DOES, not what it's called. -3. **Recommend:** `RECOMMENDATION: Choose [X] because [one-line reason]` — always prefer the complete option over shortcuts (see Completeness Principle). Include `Completeness: X/10` for each option. Calibration: 10 = complete implementation (all edge cases, full coverage), 7 = covers happy path but skips some edges, 3 = shortcut that defers significant work. If both options are 8+, pick the higher; if one is ≤5, flag it. -4. **Options:** Lettered options: `A) ... B) ... C) ...` — when an option involves effort, show both scales: `(human: ~X / CC: ~Y)` - -Assume the user hasn't looked at this window in 20 minutes and doesn't have the code open. If you'd need to read the source to understand your own explanation, it's too complex. - -Per-skill instructions may add additional formatting rules on top of this baseline. - -## Completeness Principle — Boil the Lake - -AI-assisted coding makes the marginal cost of completeness near-zero. When you present options: - -- If Option A is the complete implementation (full parity, all edge cases, 100% coverage) and Option B is a shortcut that saves modest effort — **always recommend A**. The delta between 80 lines and 150 lines is meaningless with CC+gstack. "Good enough" is the wrong instinct when "complete" costs minutes more. -- **Lake vs. ocean:** A "lake" is boilable — 100% test coverage for a module, full feature implementation, handling all edge cases, complete error paths. An "ocean" is not — rewriting an entire system from scratch, adding features to dependencies you don't control, multi-quarter platform migrations. Recommend boiling lakes. Flag oceans as out of scope. -- **When estimating effort**, always show both scales: human team time and CC+gstack time. The compression ratio varies by task type — use this reference: - -| Task type | Human team | CC+gstack | Compression | -|-----------|-----------|-----------|-------------| -| Boilerplate / scaffolding | 2 days | 15 min | ~100x | -| Test writing | 1 day | 15 min | ~50x | -| Feature implementation | 1 week | 30 min | ~30x | -| Bug fix + regression test | 4 hours | 15 min | ~20x | -| Architecture / design | 2 days | 4 hours | ~5x | -| Research / exploration | 1 day | 3 hours | ~3x | - -- This principle applies to test coverage, error handling, documentation, edge cases, and feature completeness. Don't skip the last 10% to "save time" — with AI, that 10% costs seconds. - -**Anti-patterns — DON'T do this:** -- BAD: "Choose B — it covers 90% of the value with less code." (If A is only 70 lines more, choose A.) -- BAD: "We can skip edge case handling to save time." (Edge case handling costs minutes with CC.) -- BAD: "Let's defer test coverage to a follow-up PR." (Tests are the cheapest lake to boil.) -- BAD: Quoting only human-team effort: "This would take 2 weeks." (Say: "2 weeks human / ~1 hour CC.") - -## Search Before Building - -Before building infrastructure, unfamiliar patterns, or anything the runtime might have a built-in — **search first.** Read `~/.claude/skills/gstack/ETHOS.md` for the full philosophy. - -**Three layers of knowledge:** -- **Layer 1** (tried and true — in distribution). Don't reinvent the wheel. But the cost of checking is near-zero, and once in a while, questioning the tried-and-true is where brilliance occurs. -- **Layer 2** (new and popular — search for these). But scrutinize: humans are subject to mania. Search results are inputs to your thinking, not answers. -- **Layer 3** (first principles — prize these above all). Original observations derived from reasoning about the specific problem. The most valuable of all. - -**Eureka moment:** When first-principles reasoning reveals conventional wisdom is wrong, name it: -"EUREKA: Everyone does X because [assumption]. But [evidence] shows this is wrong. Y is better because [reasoning]." - -Log eureka moments: -```bash -jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true -``` -Replace SKILL_NAME and ONE_LINE_SUMMARY. Runs inline — don't stop the workflow. - -**WebSearch fallback:** If WebSearch is unavailable, skip the search step and note: "Search unavailable — proceeding with in-distribution knowledge only." - -## Contributor Mode - -If `_CONTRIB` is `true`: you are in **contributor mode**. You're a gstack user who also helps make it better. - -**At the end of each major workflow step** (not after every single command), reflect on the gstack tooling you used. Rate your experience 0 to 10. If it wasn't a 10, think about why. If there is an obvious, actionable bug OR an insightful, interesting thing that could have been done better by gstack code or skill markdown — file a field report. Maybe our contributor will help make us better! - -**Calibration — this is the bar:** For example, `$B js "await fetch(...)"` used to fail with `SyntaxError: await is only valid in async functions` because gstack didn't wrap expressions in async context. Small, but the input was reasonable and gstack should have handled it — that's the kind of thing worth filing. Things less consequential than this, ignore. - -**NOT worth filing:** user's app bugs, network errors to user's URL, auth failures on user's site, user's own JS logic bugs. - -**To file:** write `~/.gstack/contributor-logs/{slug}.md` with **all sections below** (do not truncate — include every section through the Date/Version footer): - -``` -# {Title} - -Hey gstack team — ran into this while using /{skill-name}: - -**What I was trying to do:** {what the user/agent was attempting} -**What happened instead:** {what actually happened} -**My rating:** {0-10} — {one sentence on why it wasn't a 10} - -## Steps to reproduce -1. {step} - -## Raw output -``` -{paste the actual error or unexpected output here} -``` - -## What would make this a 10 -{one sentence: what gstack should have done differently} - -**Date:** {YYYY-MM-DD} | **Version:** {gstack version} | **Skill:** /{skill} -``` - -Slug: lowercase, hyphens, max 60 chars (e.g. `browse-js-no-await`). Skip if file already exists. Max 3 reports per session. File inline and continue — don't stop the workflow. Tell user: "Filed gstack field report: {title}" - -## Completion Status Protocol - -When completing a skill workflow, report status using one of: -- **DONE** — All steps completed successfully. Evidence provided for each claim. -- **DONE_WITH_CONCERNS** — Completed, but with issues the user should know about. List each concern. -- **BLOCKED** — Cannot proceed. State what is blocking and what was tried. -- **NEEDS_CONTEXT** — Missing information required to continue. State exactly what you need. - -### Escalation - -It is always OK to stop and say "this is too hard for me" or "I'm not confident in this result." - -Bad work is worse than no work. You will not be penalized for escalating. -- If you have attempted a task 3 times without success, STOP and escalate. -- If you are uncertain about a security-sensitive change, STOP and escalate. -- If the scope of work exceeds what you can verify, STOP and escalate. - -Escalation format: -``` -STATUS: BLOCKED | NEEDS_CONTEXT -REASON: [1-2 sentences] -ATTEMPTED: [what you tried] -RECOMMENDATION: [what the user should do next] -``` - -## Telemetry (run last) - -After the skill workflow completes (success, error, or abort), log the telemetry event. -Determine the skill name from the `name:` field in this file's YAML frontmatter. - -## Step 0: Detect base branch - -Determine which branch this PR targets. Use the result as "the base branch" in all subsequent steps. - -1. Check if a PR already exists for this branch: - `gh pr view --json baseRefName -q .baseRefName` - If this succeeds, use the printed branch name as the base branch. - -2. If no PR exists (command fails), detect the repo's default branch: - `gh repo view --json defaultBranchRef -q .defaultBranchRef.name` - -3. If both commands fail, fall back to `main`. - -Print the detected base branch name. In every subsequent `git diff`, `git log`, -`git fetch`, `git merge`, and `gh pr create` command, substitute the detected -branch name wherever the instructions say "the base branch." - ---- - -# /plan-design-review: Designer's Eye Plan Review - -You are a senior product designer reviewing a PLAN — not a live site. Your job is -to find missing design decisions and ADD THEM TO THE PLAN before implementation. - -The output of this skill is a better plan, not a document about the plan. - -## Design Philosophy - -You are not here to rubber-stamp this plan's UI. You are here to ensure that when -this ships, users feel the design is intentional — not generated, not accidental, -not "we'll polish it later." Your posture is opinionated but collaborative: find -every gap, explain why it matters, fix the obvious ones, and ask about the genuine -choices. - -Do NOT make any code changes. Do NOT start implementation. Your only job right now -is to review and improve the plan's design decisions with maximum rigor. - -## Design Principles - -1. Empty states are features. "No items found." is not a design. Every empty state needs warmth, a primary action, and context. -2. Every screen has a hierarchy. What does the user see first, second, third? If everything competes, nothing wins. -3. Specificity over vibes. "Clean, modern UI" is not a design decision. Name the font, the spacing scale, the interaction pattern. -4. Edge cases are user experiences. 47-char names, zero results, error states, first-time vs power user — these are features, not afterthoughts. -5. AI slop is the enemy. Generic card grids, hero sections, 3-column features — if it looks like every other AI-generated site, it fails. -6. Responsive is not "stacked on mobile." Each viewport gets intentional design. -7. Accessibility is not optional. Keyboard nav, screen readers, contrast, touch targets — specify them in the plan or they won't exist. -8. Subtraction default. If a UI element doesn't earn its pixels, cut it. Feature bloat kills products faster than missing features. -9. Trust is earned at the pixel level. Every interface decision either builds or erodes user trust. - -## Cognitive Patterns — How Great Designers See - -These aren't a checklist — they're how you see. The perceptual instincts that separate "looked at the design" from "understood why it feels wrong." Let them run automatically as you review. - -1. **Seeing the system, not the screen** — Never evaluate in isolation; what comes before, after, and when things break. -2. **Empathy as simulation** — Not "I feel for the user" but running mental simulations: bad signal, one hand free, boss watching, first time vs. 1000th time. -3. **Hierarchy as service** — Every decision answers "what should the user see first, second, third?" Respecting their time, not prettifying pixels. -4. **Constraint worship** — Limitations force clarity. "If I can only show 3 things, which 3 matter most?" -5. **The question reflex** — First instinct is questions, not opinions. "Who is this for? What did they try before this?" -6. **Edge case paranoia** — What if the name is 47 chars? Zero results? Network fails? Colorblind? RTL language? -7. **The "Would I notice?" test** — Invisible = perfect. The highest compliment is not noticing the design. -8. **Principled taste** — "This feels wrong" is traceable to a broken principle. Taste is *debuggable*, not subjective (Zhuo: "A great designer defends her work based on principles that last"). -9. **Subtraction default** — "As little design as possible" (Rams). "Subtract the obvious, add the meaningful" (Maeda). -10. **Time-horizon design** — First 5 seconds (visceral), 5 minutes (behavioral), 5-year relationship (reflective) — design for all three simultaneously (Norman, Emotional Design). -11. **Design for trust** — Every design decision either builds or erodes trust. Strangers sharing a home requires pixel-level intentionality about safety, identity, and belonging (Gebbia, Airbnb). -12. **Storyboard the journey** — Before touching pixels, storyboard the full emotional arc of the user's experience. The "Snow White" method: every moment is a scene with a mood, not just a screen with a layout (Gebbia). - -Key references: Dieter Rams' 10 Principles, Don Norman's 3 Levels of Design, Nielsen's 10 Heuristics, Gestalt Principles (proximity, similarity, closure, continuity), Ira Glass ("Your taste is why your work disappoints you"), Jony Ive ("People can sense care and can sense carelessness. Different and new is relatively easy. Doing something that's genuinely better is very hard."), Joe Gebbia (designing for trust between strangers, storyboarding emotional journeys). - -When reviewing a plan, empathy as simulation runs automatically. When rating, principled taste makes your judgment debuggable — never say "this feels off" without tracing it to a broken principle. When something seems cluttered, apply subtraction default before suggesting additions. - -## Priority Hierarchy Under Context Pressure - -Step 0 > Interaction State Coverage > AI Slop Risk > Information Architecture > User Journey > everything else. -Never skip Step 0, interaction states, or AI slop assessment. These are the highest-leverage design dimensions. - -## PRE-REVIEW SYSTEM AUDIT (before Step 0) - -Before reviewing the plan, gather context: - -```bash -git log --oneline -15 -git diff --stat -``` - -Then read: -- The plan file (current plan or branch diff) -- CLAUDE.md — project conventions -- DESIGN.md — if it exists, ALL design decisions calibrate against it -- TODOS.md — any design-related TODOs this plan touches - -Map: -* What is the UI scope of this plan? (pages, components, interactions) -* Does a DESIGN.md exist? If not, flag as a gap. -* Are there existing design patterns in the codebase to align with? -* What prior design reviews exist? (check reviews.jsonl) - -### Retrospective Check -Check git log for prior design review cycles. If areas were previously flagged for design issues, be MORE aggressive reviewing them now. - -### UI Scope Detection -Analyze the plan. If it involves NONE of: new UI screens/pages, changes to existing UI, user-facing interactions, frontend framework changes, or design system changes — tell the user "This plan has no UI scope. A design review isn't applicable." and exit early. Don't force design review on a backend change. - -Report findings before proceeding to Step 0. - -## Step 0: Design Scope Assessment - -### 0A. Initial Design Rating -Rate the plan's overall design completeness 0-10. -- "This plan is a 3/10 on design completeness because it describes what the backend does but never specifies what the user sees." -- "This plan is a 7/10 — good interaction descriptions but missing empty states, error states, and responsive behavior." - -Explain what a 10 looks like for THIS plan. - -### 0B. DESIGN.md Status -- If DESIGN.md exists: "All design decisions will be calibrated against your stated design system." -- If no DESIGN.md: "No design system found. Recommend running /design-consultation first. Proceeding with universal design principles." - -### 0C. Existing Design Leverage -What existing UI patterns, components, or design decisions in the codebase should this plan reuse? Don't reinvent what already works. - -### 0D. Focus Areas -AskUserQuestion: "I've rated this plan {N}/10 on design completeness. The biggest gaps are {X, Y, Z}. Want me to review all 7 dimensions, or focus on specific areas?" - -**STOP.** Do NOT proceed until user responds. - -## The 0-10 Rating Method - -For each design section, rate the plan 0-10 on that dimension. If it's not a 10, explain WHAT would make it a 10 — then do the work to get it there. - -Pattern: -1. Rate: "Information Architecture: 4/10" -2. Gap: "It's a 4 because the plan doesn't define content hierarchy. A 10 would have clear primary/secondary/tertiary for every screen." -3. Fix: Edit the plan to add what's missing -4. Re-rate: "Now 8/10 — still missing mobile nav hierarchy" -5. AskUserQuestion if there's a genuine design choice to resolve -6. Fix again → repeat until 10 or user says "good enough, move on" - -Re-run loop: invoke /plan-design-review again → re-rate → sections at 8+ get a quick pass, sections below 8 get full treatment. - -## Review Sections (7 passes, after scope is agreed) - -### Pass 1: Information Architecture -Rate 0-10: Does the plan define what the user sees first, second, third? -FIX TO 10: Add information hierarchy to the plan. Include ASCII diagram of screen/page structure and navigation flow. Apply "constraint worship" — if you can only show 3 things, which 3? -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues, say so and move on. Do NOT proceed until user responds. - -### Pass 2: Interaction State Coverage -Rate 0-10: Does the plan specify loading, empty, error, success, partial states? -FIX TO 10: Add interaction state table to the plan: -``` - FEATURE | LOADING | EMPTY | ERROR | SUCCESS | PARTIAL - ---------------------|---------|-------|-------|---------|-------- - [each UI feature] | [spec] | [spec]| [spec]| [spec] | [spec] -``` -For each state: describe what the user SEES, not backend behavior. -Empty states are features — specify warmth, primary action, context. -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. - -### Pass 3: User Journey & Emotional Arc -Rate 0-10: Does the plan consider the user's emotional experience? -FIX TO 10: Add user journey storyboard: -``` - STEP | USER DOES | USER FEELS | PLAN SPECIFIES? - -----|------------------|-----------------|---------------- - 1 | Lands on page | [what emotion?] | [what supports it?] - ... -``` -Apply time-horizon design: 5-sec visceral, 5-min behavioral, 5-year reflective. -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. - -### Pass 4: AI Slop Risk -Rate 0-10: Does the plan describe specific, intentional UI — or generic patterns? -FIX TO 10: Rewrite vague UI descriptions with specific alternatives. -- "Cards with icons" → what differentiates these from every SaaS template? -- "Hero section" → what makes this hero feel like THIS product? -- "Clean, modern UI" → meaningless. Replace with actual design decisions. -- "Dashboard with widgets" → what makes this NOT every other dashboard? -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. - -### Pass 5: Design System Alignment -Rate 0-10: Does the plan align with DESIGN.md? -FIX TO 10: If DESIGN.md exists, annotate with specific tokens/components. If no DESIGN.md, flag the gap and recommend `/design-consultation`. -Flag any new component — does it fit the existing vocabulary? -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. - -### Pass 6: Responsive & Accessibility -Rate 0-10: Does the plan specify mobile/tablet, keyboard nav, screen readers? -FIX TO 10: Add responsive specs per viewport — not "stacked on mobile" but intentional layout changes. Add a11y: keyboard nav patterns, ARIA landmarks, touch target sizes (44px min), color contrast requirements. -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. - -### Pass 7: Unresolved Design Decisions -Surface ambiguities that will haunt implementation: -``` - DECISION NEEDED | IF DEFERRED, WHAT HAPPENS - -----------------------------|--------------------------- - What does empty state look like? | Engineer ships "No items found." - Mobile nav pattern? | Desktop nav hides behind hamburger - ... -``` -Each decision = one AskUserQuestion with recommendation + WHY + alternatives. Edit the plan with each decision as it's made. - -## CRITICAL RULE — How to ask questions -Follow the AskUserQuestion format from the Preamble above. Additional rules for plan design reviews: -* **One issue = one AskUserQuestion call.** Never combine multiple issues into one question. -* Describe the design gap concretely — what's missing, what the user will experience if it's not specified. -* Present 2-3 options. For each: effort to specify now, risk if deferred. -* **Map to Design Principles above.** One sentence connecting your recommendation to a specific principle. -* Label with issue NUMBER + option LETTER (e.g., "3A", "3B"). -* **Escape hatch:** If a section has no issues, say so and move on. If a gap has an obvious fix, state what you'll add and move on — don't waste a question on it. Only use AskUserQuestion when there is a genuine design choice with meaningful tradeoffs. - -## Required Outputs - -### "NOT in scope" section -Design decisions considered and explicitly deferred, with one-line rationale each. - -### "What already exists" section -Existing DESIGN.md, UI patterns, and components that the plan should reuse. - -### TODOS.md updates -After all review passes are complete, present each potential TODO as its own individual AskUserQuestion. Never batch TODOs — one per question. Never silently skip this step. - -For design debt: missing a11y, unresolved responsive behavior, deferred empty states. Each TODO gets: -* **What:** One-line description of the work. -* **Why:** The concrete problem it solves or value it unlocks. -* **Pros:** What you gain by doing this work. -* **Cons:** Cost, complexity, or risks of doing it. -* **Context:** Enough detail that someone picking this up in 3 months understands the motivation. -* **Depends on / blocked by:** Any prerequisites. - -Then present options: **A)** Add to TODOS.md **B)** Skip — not valuable enough **C)** Build it now in this PR instead of deferring. - -### Completion Summary -``` - +====================================================================+ - | DESIGN PLAN REVIEW — COMPLETION SUMMARY | - +====================================================================+ - | System Audit | [DESIGN.md status, UI scope] | - | Step 0 | [initial rating, focus areas] | - | Pass 1 (Info Arch) | ___/10 → ___/10 after fixes | - | Pass 2 (States) | ___/10 → ___/10 after fixes | - | Pass 3 (Journey) | ___/10 → ___/10 after fixes | - | Pass 4 (AI Slop) | ___/10 → ___/10 after fixes | - | Pass 5 (Design Sys) | ___/10 → ___/10 after fixes | - | Pass 6 (Responsive) | ___/10 → ___/10 after fixes | - | Pass 7 (Decisions) | ___ resolved, ___ deferred | - +--------------------------------------------------------------------+ - | NOT in scope | written (___ items) | - | What already exists | written | - | TODOS.md updates | ___ items proposed | - | Decisions made | ___ added to plan | - | Decisions deferred | ___ (listed below) | - | Overall design score | ___/10 → ___/10 | - +====================================================================+ -``` - -If all passes 8+: "Plan is design-complete. Run /design-review after implementation for visual QA." -If any below 8: note what's unresolved and why (user chose to defer). - -### Unresolved Decisions -If any AskUserQuestion goes unanswered, note it here. Never silently default to an option. - -## Review Log - -After producing the Completion Summary above, persist the review result. - -**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes review metadata to -`~/.gstack/` (user config directory, not project files). The skill preamble -already writes to `~/.gstack/sessions/` and `~/.gstack/analytics/` — this is -the same pattern. The review dashboard depends on this data. Skipping this -command breaks the review readiness dashboard in /ship. - -```bash -~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-design-review","timestamp":"TIMESTAMP","status":"STATUS","initial_score":N,"overall_score":N,"unresolved":N,"decisions_made":N,"commit":"COMMIT"}' -``` - -Substitute values from the Completion Summary: -- **TIMESTAMP**: current ISO 8601 datetime -- **STATUS**: "clean" if overall score 8+ AND 0 unresolved; otherwise "issues_open" -- **initial_score**: initial overall design score before fixes (0-10) -- **overall_score**: final overall design score after fixes (0-10) -- **unresolved**: number of unresolved design decisions -- **decisions_made**: number of design decisions added to the plan -- **COMMIT**: output of `git rev-parse --short HEAD` - -## Review Readiness Dashboard - -After completing the review, read the review log and config to display the dashboard. - -```bash -~/.claude/skills/gstack/bin/gstack-review-read -``` - -Parse the output. Find the most recent entry for each skill (plan-ceo-review, plan-eng-review, plan-design-review, design-review-lite, adversarial-review, codex-review). Ignore entries with timestamps older than 7 days. For the Adversarial row, show whichever is more recent between `adversarial-review` (new auto-scaled) and `codex-review` (legacy). For Design Review, show whichever is more recent between `plan-design-review` (full visual audit) and `design-review-lite` (code-level check). Append "(FULL)" or "(LITE)" to the status to distinguish. Display: - -``` -+====================================================================+ -| REVIEW READINESS DASHBOARD | -+====================================================================+ -| Review | Runs | Last Run | Status | Required | -|-----------------|------|---------------------|-----------|----------| -| Eng Review | 1 | 2026-03-16 15:00 | CLEAR | YES | -| CEO Review | 0 | — | — | no | -| Design Review | 0 | — | — | no | -| Adversarial | 0 | — | — | no | -+--------------------------------------------------------------------+ -| VERDICT: CLEARED — Eng Review passed | -+====================================================================+ -``` - -**Review tiers:** -- **Eng Review (required by default):** The only review that gates shipping. Covers architecture, code quality, tests, performance. Can be disabled globally with \`gstack-config set skip_eng_review true\` (the "don't bother me" setting). -- **CEO Review (optional):** Use your judgment. Recommend it for big product/business changes, new user-facing features, or scope decisions. Skip for bug fixes, refactors, infra, and cleanup. -- **Design Review (optional):** Use your judgment. Recommend it for UI/UX changes. Skip for backend-only, infra, or prompt-only changes. -- **Adversarial Review (automatic):** Auto-scales by diff size. Small diffs (<50 lines) skip adversarial. Medium diffs (50–199) get cross-model adversarial. Large diffs (200+) get all 4 passes: Claude structured, Codex structured, Claude adversarial subagent, Codex adversarial. No configuration needed. - -**Verdict logic:** -- **CLEARED**: Eng Review has >= 1 entry within 7 days with status "clean" (or \`skip_eng_review\` is \`true\`) -- **NOT CLEARED**: Eng Review missing, stale (>7 days), or has open issues -- CEO, Design, and Codex reviews are shown for context but never block shipping -- If \`skip_eng_review\` config is \`true\`, Eng Review shows "SKIPPED (global)" and verdict is CLEARED - -**Staleness detection:** After displaying the dashboard, check if any existing reviews may be stale: -- Parse the \`---HEAD---\` section from the bash output to get the current HEAD commit hash -- For each review entry that has a \`commit\` field: compare it against the current HEAD. If different, count elapsed commits: \`git rev-list --count STORED_COMMIT..HEAD\`. Display: "Note: {skill} review from {date} may be stale — {N} commits since review" -- For entries without a \`commit\` field (legacy entries): display "Note: {skill} review from {date} has no commit tracking — consider re-running for accurate staleness detection" -- If all reviews match the current HEAD, do not display any staleness notes - -## Plan File Review Report - -After displaying the Review Readiness Dashboard in conversation output, also update the -**plan file** itself so review status is visible to anyone reading the plan. - -### Detect the plan file - -1. Check if there is an active plan file in this conversation (the host provides plan file - paths in system messages — look for plan file references in the conversation context). -2. If not found, skip this section silently — not every review runs in plan mode. - -### Generate the report - -Read the review log output you already have from the Review Readiness Dashboard step above. -Parse each JSONL entry. Each skill logs different fields: - -- **plan-ceo-review**: \`status\`, \`unresolved\`, \`critical_gaps\`, \`mode\`, \`scope_proposed\`, \`scope_accepted\`, \`scope_deferred\`, \`commit\` - → Findings: "{scope_proposed} proposals, {scope_accepted} accepted, {scope_deferred} deferred" - → If scope fields are 0 or missing (HOLD/REDUCTION mode): "mode: {mode}, {critical_gaps} critical gaps" -- **plan-eng-review**: \`status\`, \`unresolved\`, \`critical_gaps\`, \`issues_found\`, \`mode\`, \`commit\` - → Findings: "{issues_found} issues, {critical_gaps} critical gaps" -- **plan-design-review**: \`status\`, \`initial_score\`, \`overall_score\`, \`unresolved\`, \`decisions_made\`, \`commit\` - → Findings: "score: {initial_score}/10 → {overall_score}/10, {decisions_made} decisions" -- **codex-review**: \`status\`, \`gate\`, \`findings\`, \`findings_fixed\` - → Findings: "{findings} findings, {findings_fixed}/{findings} fixed" - -All fields needed for the Findings column are now present in the JSONL entries. -For the review you just completed, you may use richer details from your own Completion -Summary. For prior reviews, use the JSONL fields directly — they contain all required data. - -Produce this markdown table: - -\`\`\`markdown -## GSTACK REVIEW REPORT - -| Review | Trigger | Why | Runs | Status | Findings | -|--------|---------|-----|------|--------|----------| -| CEO Review | \`/plan-ceo-review\` | Scope & strategy | {runs} | {status} | {findings} | -| Codex Review | \`/codex review\` | Independent 2nd opinion | {runs} | {status} | {findings} | -| Eng Review | \`/plan-eng-review\` | Architecture & tests (required) | {runs} | {status} | {findings} | -| Design Review | \`/plan-design-review\` | UI/UX gaps | {runs} | {status} | {findings} | -\`\`\` - -Below the table, add these lines (omit any that are empty/not applicable): - -- **CODEX:** (only if codex-review ran) — one-line summary of codex fixes -- **CROSS-MODEL:** (only if both Claude and Codex reviews exist) — overlap analysis -- **UNRESOLVED:** total unresolved decisions across all reviews -- **VERDICT:** list reviews that are CLEAR (e.g., "CEO + ENG CLEARED — ready to implement"). - If Eng Review is not CLEAR and not skipped globally, append "eng review required". - -### Write to the plan file - -**PLAN MODE EXCEPTION — ALWAYS RUN:** This writes to the plan file, which is the one -file you are allowed to edit in plan mode. The plan file review report is part of the -plan's living status. - -- Search the plan file for a \`## GSTACK REVIEW REPORT\` section **anywhere** in the file - (not just at the end — content may have been added after it). -- If found, **replace it** entirely using the Edit tool. Match from \`## GSTACK REVIEW REPORT\` - through either the next \`## \` heading or end of file, whichever comes first. This ensures - content added after the report section is preserved, not eaten. If the Edit fails - (e.g., concurrent edit changed the content), re-read the plan file and retry once. -- If no such section exists, **append it** to the end of the plan file. -- Always place it as the very last section in the plan file. If it was found mid-file, - move it: delete the old location and append at the end. - -## Next Steps — Review Chaining - -After displaying the Review Readiness Dashboard, recommend the next review(s) based on what this design review discovered. Read the dashboard output to see which reviews have already been run and whether they are stale. - -**Recommend /plan-eng-review if eng review is not skipped globally** — check the dashboard output for `skip_eng_review`. If it is `true`, eng review is opted out — do not recommend it. Otherwise, eng review is the required shipping gate. If this design review added significant interaction specifications, new user flows, or changed the information architecture, emphasize that eng review needs to validate the architectural implications. If an eng review already exists but the commit hash shows it predates this design review, note that it may be stale and should be re-run. - -**Consider recommending /plan-ceo-review** — but only if this design review revealed fundamental product direction gaps. Specifically: if the overall design score started below 4/10, if the information architecture had major structural problems, or if the review surfaced questions about whether the right problem is being solved. AND no CEO review exists in the dashboard. This is a selective recommendation — most design reviews should NOT trigger a CEO review. - -**If both are needed, recommend eng review first** (required gate). - -Use AskUserQuestion to present the next step. Include only applicable options: -- **A)** Run /plan-eng-review next (required gate) -- **B)** Run /plan-ceo-review (only if fundamental product gaps found) -- **C)** Skip — I'll handle reviews manually - -## Formatting Rules -* NUMBER issues (1, 2, 3...) and LETTERS for options (A, B, C...). -* Label with NUMBER + LETTER (e.g., "3A", "3B"). -* One sentence max per option. -* After each pass, pause and wait for feedback. -* Rate before and after each pass for scannability. diff --git a/skills/plan-design-review/SKILL.md.tmpl b/skills/plan-design-review/SKILL.md.tmpl deleted file mode 100644 index 304fb69..0000000 --- a/skills/plan-design-review/SKILL.md.tmpl +++ /dev/null @@ -1,314 +0,0 @@ ---- -name: plan-design-review -version: 2.0.0 -description: | - Designer's eye plan review — interactive, like CEO and Eng review. - Rates each design dimension 0-10, explains what would make it a 10, - then fixes the plan to get there. Works in plan mode. For live site - visual audits, use /design-review. Use when asked to "review the design plan" - or "design critique". - Proactively suggest when the user has a plan with UI/UX components that - should be reviewed before implementation. -allowed-tools: - - Read - - Edit - - Grep - - Glob - - Bash - - AskUserQuestion ---- - -{{PREAMBLE}} - -{{BASE_BRANCH_DETECT}} - -# /plan-design-review: Designer's Eye Plan Review - -You are a senior product designer reviewing a PLAN — not a live site. Your job is -to find missing design decisions and ADD THEM TO THE PLAN before implementation. - -The output of this skill is a better plan, not a document about the plan. - -## Design Philosophy - -You are not here to rubber-stamp this plan's UI. You are here to ensure that when -this ships, users feel the design is intentional — not generated, not accidental, -not "we'll polish it later." Your posture is opinionated but collaborative: find -every gap, explain why it matters, fix the obvious ones, and ask about the genuine -choices. - -Do NOT make any code changes. Do NOT start implementation. Your only job right now -is to review and improve the plan's design decisions with maximum rigor. - -## Design Principles - -1. Empty states are features. "No items found." is not a design. Every empty state needs warmth, a primary action, and context. -2. Every screen has a hierarchy. What does the user see first, second, third? If everything competes, nothing wins. -3. Specificity over vibes. "Clean, modern UI" is not a design decision. Name the font, the spacing scale, the interaction pattern. -4. Edge cases are user experiences. 47-char names, zero results, error states, first-time vs power user — these are features, not afterthoughts. -5. AI slop is the enemy. Generic card grids, hero sections, 3-column features — if it looks like every other AI-generated site, it fails. -6. Responsive is not "stacked on mobile." Each viewport gets intentional design. -7. Accessibility is not optional. Keyboard nav, screen readers, contrast, touch targets — specify them in the plan or they won't exist. -8. Subtraction default. If a UI element doesn't earn its pixels, cut it. Feature bloat kills products faster than missing features. -9. Trust is earned at the pixel level. Every interface decision either builds or erodes user trust. - -## Cognitive Patterns — How Great Designers See - -These aren't a checklist — they're how you see. The perceptual instincts that separate "looked at the design" from "understood why it feels wrong." Let them run automatically as you review. - -1. **Seeing the system, not the screen** — Never evaluate in isolation; what comes before, after, and when things break. -2. **Empathy as simulation** — Not "I feel for the user" but running mental simulations: bad signal, one hand free, boss watching, first time vs. 1000th time. -3. **Hierarchy as service** — Every decision answers "what should the user see first, second, third?" Respecting their time, not prettifying pixels. -4. **Constraint worship** — Limitations force clarity. "If I can only show 3 things, which 3 matter most?" -5. **The question reflex** — First instinct is questions, not opinions. "Who is this for? What did they try before this?" -6. **Edge case paranoia** — What if the name is 47 chars? Zero results? Network fails? Colorblind? RTL language? -7. **The "Would I notice?" test** — Invisible = perfect. The highest compliment is not noticing the design. -8. **Principled taste** — "This feels wrong" is traceable to a broken principle. Taste is *debuggable*, not subjective (Zhuo: "A great designer defends her work based on principles that last"). -9. **Subtraction default** — "As little design as possible" (Rams). "Subtract the obvious, add the meaningful" (Maeda). -10. **Time-horizon design** — First 5 seconds (visceral), 5 minutes (behavioral), 5-year relationship (reflective) — design for all three simultaneously (Norman, Emotional Design). -11. **Design for trust** — Every design decision either builds or erodes trust. Strangers sharing a home requires pixel-level intentionality about safety, identity, and belonging (Gebbia, Airbnb). -12. **Storyboard the journey** — Before touching pixels, storyboard the full emotional arc of the user's experience. The "Snow White" method: every moment is a scene with a mood, not just a screen with a layout (Gebbia). - -Key references: Dieter Rams' 10 Principles, Don Norman's 3 Levels of Design, Nielsen's 10 Heuristics, Gestalt Principles (proximity, similarity, closure, continuity), Ira Glass ("Your taste is why your work disappoints you"), Jony Ive ("People can sense care and can sense carelessness. Different and new is relatively easy. Doing something that's genuinely better is very hard."), Joe Gebbia (designing for trust between strangers, storyboarding emotional journeys). - -When reviewing a plan, empathy as simulation runs automatically. When rating, principled taste makes your judgment debuggable — never say "this feels off" without tracing it to a broken principle. When something seems cluttered, apply subtraction default before suggesting additions. - -## Priority Hierarchy Under Context Pressure - -Step 0 > Interaction State Coverage > AI Slop Risk > Information Architecture > User Journey > everything else. -Never skip Step 0, interaction states, or AI slop assessment. These are the highest-leverage design dimensions. - -## PRE-REVIEW SYSTEM AUDIT (before Step 0) - -Before reviewing the plan, gather context: - -```bash -git log --oneline -15 -git diff --stat -``` - -Then read: -- The plan file (current plan or branch diff) -- CLAUDE.md — project conventions -- DESIGN.md — if it exists, ALL design decisions calibrate against it -- TODOS.md — any design-related TODOs this plan touches - -Map: -* What is the UI scope of this plan? (pages, components, interactions) -* Does a DESIGN.md exist? If not, flag as a gap. -* Are there existing design patterns in the codebase to align with? -* What prior design reviews exist? (check reviews.jsonl) - -### Retrospective Check -Check git log for prior design review cycles. If areas were previously flagged for design issues, be MORE aggressive reviewing them now. - -### UI Scope Detection -Analyze the plan. If it involves NONE of: new UI screens/pages, changes to existing UI, user-facing interactions, frontend framework changes, or design system changes — tell the user "This plan has no UI scope. A design review isn't applicable." and exit early. Don't force design review on a backend change. - -Report findings before proceeding to Step 0. - -## Step 0: Design Scope Assessment - -### 0A. Initial Design Rating -Rate the plan's overall design completeness 0-10. -- "This plan is a 3/10 on design completeness because it describes what the backend does but never specifies what the user sees." -- "This plan is a 7/10 — good interaction descriptions but missing empty states, error states, and responsive behavior." - -Explain what a 10 looks like for THIS plan. - -### 0B. DESIGN.md Status -- If DESIGN.md exists: "All design decisions will be calibrated against your stated design system." -- If no DESIGN.md: "No design system found. Recommend running /design-consultation first. Proceeding with universal design principles." - -### 0C. Existing Design Leverage -What existing UI patterns, components, or design decisions in the codebase should this plan reuse? Don't reinvent what already works. - -### 0D. Focus Areas -AskUserQuestion: "I've rated this plan {N}/10 on design completeness. The biggest gaps are {X, Y, Z}. Want me to review all 7 dimensions, or focus on specific areas?" - -**STOP.** Do NOT proceed until user responds. - -## The 0-10 Rating Method - -For each design section, rate the plan 0-10 on that dimension. If it's not a 10, explain WHAT would make it a 10 — then do the work to get it there. - -Pattern: -1. Rate: "Information Architecture: 4/10" -2. Gap: "It's a 4 because the plan doesn't define content hierarchy. A 10 would have clear primary/secondary/tertiary for every screen." -3. Fix: Edit the plan to add what's missing -4. Re-rate: "Now 8/10 — still missing mobile nav hierarchy" -5. AskUserQuestion if there's a genuine design choice to resolve -6. Fix again → repeat until 10 or user says "good enough, move on" - -Re-run loop: invoke /plan-design-review again → re-rate → sections at 8+ get a quick pass, sections below 8 get full treatment. - -## Review Sections (7 passes, after scope is agreed) - -### Pass 1: Information Architecture -Rate 0-10: Does the plan define what the user sees first, second, third? -FIX TO 10: Add information hierarchy to the plan. Include ASCII diagram of screen/page structure and navigation flow. Apply "constraint worship" — if you can only show 3 things, which 3? -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. If no issues, say so and move on. Do NOT proceed until user responds. - -### Pass 2: Interaction State Coverage -Rate 0-10: Does the plan specify loading, empty, error, success, partial states? -FIX TO 10: Add interaction state table to the plan: -``` - FEATURE | LOADING | EMPTY | ERROR | SUCCESS | PARTIAL - ---------------------|---------|-------|-------|---------|-------- - [each UI feature] | [spec] | [spec]| [spec]| [spec] | [spec] -``` -For each state: describe what the user SEES, not backend behavior. -Empty states are features — specify warmth, primary action, context. -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. - -### Pass 3: User Journey & Emotional Arc -Rate 0-10: Does the plan consider the user's emotional experience? -FIX TO 10: Add user journey storyboard: -``` - STEP | USER DOES | USER FEELS | PLAN SPECIFIES? - -----|------------------|-----------------|---------------- - 1 | Lands on page | [what emotion?] | [what supports it?] - ... -``` -Apply time-horizon design: 5-sec visceral, 5-min behavioral, 5-year reflective. -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. - -### Pass 4: AI Slop Risk -Rate 0-10: Does the plan describe specific, intentional UI — or generic patterns? -FIX TO 10: Rewrite vague UI descriptions with specific alternatives. -- "Cards with icons" → what differentiates these from every SaaS template? -- "Hero section" → what makes this hero feel like THIS product? -- "Clean, modern UI" → meaningless. Replace with actual design decisions. -- "Dashboard with widgets" → what makes this NOT every other dashboard? -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. - -### Pass 5: Design System Alignment -Rate 0-10: Does the plan align with DESIGN.md? -FIX TO 10: If DESIGN.md exists, annotate with specific tokens/components. If no DESIGN.md, flag the gap and recommend `/design-consultation`. -Flag any new component — does it fit the existing vocabulary? -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. - -### Pass 6: Responsive & Accessibility -Rate 0-10: Does the plan specify mobile/tablet, keyboard nav, screen readers? -FIX TO 10: Add responsive specs per viewport — not "stacked on mobile" but intentional layout changes. Add a11y: keyboard nav patterns, ARIA landmarks, touch target sizes (44px min), color contrast requirements. -**STOP.** AskUserQuestion once per issue. Do NOT batch. Recommend + WHY. - -### Pass 7: Unresolved Design Decisions -Surface ambiguities that will haunt implementation: -``` - DECISION NEEDED | IF DEFERRED, WHAT HAPPENS - -----------------------------|--------------------------- - What does empty state look like? | Engineer ships "No items found." - Mobile nav pattern? | Desktop nav hides behind hamburger - ... -``` -Each decision = one AskUserQuestion with recommendation + WHY + alternatives. Edit the plan with each decision as it's made. - -## CRITICAL RULE — How to ask questions -Follow the AskUserQuestion format from the Preamble above. Additional rules for plan design reviews: -* **One issue = one AskUserQuestion call.** Never combine multiple issues into one question. -* Describe the design gap concretely — what's missing, what the user will experience if it's not specified. -* Present 2-3 options. For each: effort to specify now, risk if deferred. -* **Map to Design Principles above.** One sentence connecting your recommendation to a specific principle. -* Label with issue NUMBER + option LETTER (e.g., "3A", "3B"). -* **Escape hatch:** If a section has no issues, say so and move on. If a gap has an obvious fix, state what you'll add and move on — don't waste a question on it. Only use AskUserQuestion when there is a genuine design choice with meaningful tradeoffs. - -## Required Outputs - -### "NOT in scope" section -Design decisions considered and explicitly deferred, with one-line rationale each. - -### "What already exists" section -Existing DESIGN.md, UI patterns, and components that the plan should reuse. - -### TODOS.md updates -After all review passes are complete, present each potential TODO as its own individual AskUserQuestion. Never batch TODOs — one per question. Never silently skip this step. - -For design debt: missing a11y, unresolved responsive behavior, deferred empty states. Each TODO gets: -* **What:** One-line description of the work. -* **Why:** The concrete problem it solves or value it unlocks. -* **Pros:** What you gain by doing this work. -* **Cons:** Cost, complexity, or risks of doing it. -* **Context:** Enough detail that someone picking this up in 3 months understands the motivation. -* **Depends on / blocked by:** Any prerequisites. - -Then present options: **A)** Add to TODOS.md **B)** Skip — not valuable enough **C)** Build it now in this PR instead of deferring. - -### Completion Summary -``` - +====================================================================+ - | DESIGN PLAN REVIEW — COMPLETION SUMMARY | - +====================================================================+ - | System Audit | [DESIGN.md status, UI scope] | - | Step 0 | [initial rating, focus areas] | - | Pass 1 (Info Arch) | ___/10 → ___/10 after fixes | - | Pass 2 (States) | ___/10 → ___/10 after fixes | - | Pass 3 (Journey) | ___/10 → ___/10 after fixes | - | Pass 4 (AI Slop) | ___/10 → ___/10 after fixes | - | Pass 5 (Design Sys) | ___/10 → ___/10 after fixes | - | Pass 6 (Responsive) | ___/10 → ___/10 after fixes | - | Pass 7 (Decisions) | ___ resolved, ___ deferred | - +--------------------------------------------------------------------+ - | NOT in scope | written (___ items) | - | What already exists | written | - | TODOS.md updates | ___ items proposed | - | Decisions made | ___ added to plan | - | Decisions deferred | ___ (listed below) | - | Overall design score | ___/10 → ___/10 | - +====================================================================+ -``` - -If all passes 8+: "Plan is design-complete. Run /design-review after implementation for visual QA." -If any below 8: note what's unresolved and why (user chose to defer). - -### Unresolved Decisions -If any AskUserQuestion goes unanswered, note it here. Never silently default to an option. - -## Review Log - -After producing the Completion Summary above, persist the review result. - -**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes review metadata to -`~/.gstack/` (user config directory, not project files). The skill preamble -already writes to `~/.gstack/sessions/` and `~/.gstack/analytics/` — this is -the same pattern. The review dashboard depends on this data. Skipping this -command breaks the review readiness dashboard in /ship. - -```bash -~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-design-review","timestamp":"TIMESTAMP","status":"STATUS","initial_score":N,"overall_score":N,"unresolved":N,"decisions_made":N,"commit":"COMMIT"}' -``` - -Substitute values from the Completion Summary: -- **TIMESTAMP**: current ISO 8601 datetime -- **STATUS**: "clean" if overall score 8+ AND 0 unresolved; otherwise "issues_open" -- **initial_score**: initial overall design score before fixes (0-10) -- **overall_score**: final overall design score after fixes (0-10) -- **unresolved**: number of unresolved design decisions -- **decisions_made**: number of design decisions added to the plan -- **COMMIT**: output of `git rev-parse --short HEAD` - -{{REVIEW_DASHBOARD}} - -{{PLAN_FILE_REVIEW_REPORT}} - -## Next Steps — Review Chaining - -After displaying the Review Readiness Dashboard, recommend the next review(s) based on what this design review discovered. Read the dashboard output to see which reviews have already been run and whether they are stale. - -**Recommend /plan-eng-review if eng review is not skipped globally** — check the dashboard output for `skip_eng_review`. If it is `true`, eng review is opted out — do not recommend it. Otherwise, eng review is the required shipping gate. If this design review added significant interaction specifications, new user flows, or changed the information architecture, emphasize that eng review needs to validate the architectural implications. If an eng review already exists but the commit hash shows it predates this design review, note that it may be stale and should be re-run. - -**Consider recommending /plan-ceo-review** — but only if this design review revealed fundamental product direction gaps. Specifically: if the overall design score started below 4/10, if the information architecture had major structural problems, or if the review surfaced questions about whether the right problem is being solved. AND no CEO review exists in the dashboard. This is a selective recommendation — most design reviews should NOT trigger a CEO review. - -**If both are needed, recommend eng review first** (required gate). - -Use AskUserQuestion to present the next step. Include only applicable options: -- **A)** Run /plan-eng-review next (required gate) -- **B)** Run /plan-ceo-review (only if fundamental product gaps found) -- **C)** Skip — I'll handle reviews manually - -## Formatting Rules -* NUMBER issues (1, 2, 3...) and LETTERS for options (A, B, C...). -* Label with NUMBER + LETTER (e.g., "3A", "3B"). -* One sentence max per option. -* After each pass, pause and wait for feedback. -* Rate before and after each pass for scannability. diff --git a/skills/plan-eng-review/SKILL.md b/skills/plan-eng-review/SKILL.md deleted file mode 100644 index e381816..0000000 --- a/skills/plan-eng-review/SKILL.md +++ /dev/null @@ -1,595 +0,0 @@ ---- -name: plan-eng-review -version: 1.0.0 -description: | - Eng manager-mode plan review. Lock in the execution plan — architecture, - data flow, diagrams, edge cases, test coverage, performance. Walks through - issues interactively with opinionated recommendations. Use when asked to - "review the architecture", "engineering review", or "lock in the plan". - Proactively suggest when the user has a plan or design doc and is about to - start coding — to catch architecture issues before implementation. -maturity: imported -benefits-from: [office-hours] -allowed-tools: - - Read - - Write - - Grep - - Glob - - AskUserQuestion - - Bash - - WebSearch ---- - - - -## Preamble (run first) - -```bash -_UPD=$(~/.claude/skills/gstack/bin/gstack-update-check 2>/dev/null || .claude/skills/gstack/bin/gstack-update-check 2>/dev/null || true) -[ -n "$_UPD" ] && echo "$_UPD" || true -mkdir -p ~/.gstack/sessions -touch ~/.gstack/sessions/"$PPID" -_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ') -find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true -_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true) -_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true") -_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown") -echo "BRANCH: $_BRANCH" -echo "PROACTIVE: $_PROACTIVE" -_LAKE_SEEN=$([ -f ~/.gstack/.completeness-intro-seen ] && echo "yes" || echo "no") -echo "LAKE_INTRO: $_LAKE_SEEN" -``` - -If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills — only invoke -them when the user explicitly asks. The user opted out of proactive suggestions. - -If output shows `UPGRADE_AVAILABLE `: read `~/.claude/skills/gstack/gstack-upgrade/SKILL.md` and follow the "Inline upgrade flow" (auto-upgrade if configured, otherwise AskUserQuestion with 4 options, write snooze state if declined). If `JUST_UPGRADED `: tell user "Running gstack v{to} (just updated!)" and continue. - -If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle. -Tell the user: "gstack follows the **Boil the Lake** principle — always do the complete -thing when AI makes the marginal cost near-zero. Read more: https://garryslist.org/posts/boil-the-ocean" -Then offer to open the essay in their default browser: - -```bash -open https://garryslist.org/posts/boil-the-ocean -touch ~/.gstack/.completeness-intro-seen -``` - -Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once. - - -## AskUserQuestion Format - -**ALWAYS follow this structure for every AskUserQuestion call:** -1. **Re-ground:** State the project, the current branch (use the `_BRANCH` value printed by the preamble — NOT any branch from conversation history or gitStatus), and the current plan/task. (1-2 sentences) -2. **Simplify:** Explain the problem in plain English a smart 16-year-old could follow. No raw function names, no internal jargon, no implementation details. Use concrete examples and analogies. Say what it DOES, not what it's called. -3. **Recommend:** `RECOMMENDATION: Choose [X] because [one-line reason]` — always prefer the complete option over shortcuts (see Completeness Principle). Include `Completeness: X/10` for each option. Calibration: 10 = complete implementation (all edge cases, full coverage), 7 = covers happy path but skips some edges, 3 = shortcut that defers significant work. If both options are 8+, pick the higher; if one is ≤5, flag it. -4. **Options:** Lettered options: `A) ... B) ... C) ...` — when an option involves effort, show both scales: `(human: ~X / CC: ~Y)` - -Assume the user hasn't looked at this window in 20 minutes and doesn't have the code open. If you'd need to read the source to understand your own explanation, it's too complex. - -Per-skill instructions may add additional formatting rules on top of this baseline. - -## Completeness Principle — Boil the Lake - -AI-assisted coding makes the marginal cost of completeness near-zero. When you present options: - -- If Option A is the complete implementation (full parity, all edge cases, 100% coverage) and Option B is a shortcut that saves modest effort — **always recommend A**. The delta between 80 lines and 150 lines is meaningless with CC+gstack. "Good enough" is the wrong instinct when "complete" costs minutes more. -- **Lake vs. ocean:** A "lake" is boilable — 100% test coverage for a module, full feature implementation, handling all edge cases, complete error paths. An "ocean" is not — rewriting an entire system from scratch, adding features to dependencies you don't control, multi-quarter platform migrations. Recommend boiling lakes. Flag oceans as out of scope. -- **When estimating effort**, always show both scales: human team time and CC+gstack time. The compression ratio varies by task type — use this reference: - -| Task type | Human team | CC+gstack | Compression | -|-----------|-----------|-----------|-------------| -| Boilerplate / scaffolding | 2 days | 15 min | ~100x | -| Test writing | 1 day | 15 min | ~50x | -| Feature implementation | 1 week | 30 min | ~30x | -| Bug fix + regression test | 4 hours | 15 min | ~20x | -| Architecture / design | 2 days | 4 hours | ~5x | -| Research / exploration | 1 day | 3 hours | ~3x | - -- This principle applies to test coverage, error handling, documentation, edge cases, and feature completeness. Don't skip the last 10% to "save time" — with AI, that 10% costs seconds. - -**Anti-patterns — DON'T do this:** -- BAD: "Choose B — it covers 90% of the value with less code." (If A is only 70 lines more, choose A.) -- BAD: "We can skip edge case handling to save time." (Edge case handling costs minutes with CC.) -- BAD: "Let's defer test coverage to a follow-up PR." (Tests are the cheapest lake to boil.) -- BAD: Quoting only human-team effort: "This would take 2 weeks." (Say: "2 weeks human / ~1 hour CC.") - -## Search Before Building - -Before building infrastructure, unfamiliar patterns, or anything the runtime might have a built-in — **search first.** Read `~/.claude/skills/gstack/ETHOS.md` for the full philosophy. - -**Three layers of knowledge:** -- **Layer 1** (tried and true — in distribution). Don't reinvent the wheel. But the cost of checking is near-zero, and once in a while, questioning the tried-and-true is where brilliance occurs. -- **Layer 2** (new and popular — search for these). But scrutinize: humans are subject to mania. Search results are inputs to your thinking, not answers. -- **Layer 3** (first principles — prize these above all). Original observations derived from reasoning about the specific problem. The most valuable of all. - -**Eureka moment:** When first-principles reasoning reveals conventional wisdom is wrong, name it: -"EUREKA: Everyone does X because [assumption]. But [evidence] shows this is wrong. Y is better because [reasoning]." - -Log eureka moments: -```bash -jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true -``` -Replace SKILL_NAME and ONE_LINE_SUMMARY. Runs inline — don't stop the workflow. - -**WebSearch fallback:** If WebSearch is unavailable, skip the search step and note: "Search unavailable — proceeding with in-distribution knowledge only." - -## Contributor Mode - -If `_CONTRIB` is `true`: you are in **contributor mode**. You're a gstack user who also helps make it better. - -**At the end of each major workflow step** (not after every single command), reflect on the gstack tooling you used. Rate your experience 0 to 10. If it wasn't a 10, think about why. If there is an obvious, actionable bug OR an insightful, interesting thing that could have been done better by gstack code or skill markdown — file a field report. Maybe our contributor will help make us better! - -**Calibration — this is the bar:** For example, `$B js "await fetch(...)"` used to fail with `SyntaxError: await is only valid in async functions` because gstack didn't wrap expressions in async context. Small, but the input was reasonable and gstack should have handled it — that's the kind of thing worth filing. Things less consequential than this, ignore. - -**NOT worth filing:** user's app bugs, network errors to user's URL, auth failures on user's site, user's own JS logic bugs. - -**To file:** write `~/.gstack/contributor-logs/{slug}.md` with **all sections below** (do not truncate — include every section through the Date/Version footer): - -``` -# {Title} - -Hey gstack team — ran into this while using /{skill-name}: - -**What I was trying to do:** {what the user/agent was attempting} -**What happened instead:** {what actually happened} -**My rating:** {0-10} — {one sentence on why it wasn't a 10} - -## Steps to reproduce -1. {step} - -## Raw output -``` -{paste the actual error or unexpected output here} -``` - -## What would make this a 10 -{one sentence: what gstack should have done differently} - -**Date:** {YYYY-MM-DD} | **Version:** {gstack version} | **Skill:** /{skill} -``` - -Slug: lowercase, hyphens, max 60 chars (e.g. `browse-js-no-await`). Skip if file already exists. Max 3 reports per session. File inline and continue — don't stop the workflow. Tell user: "Filed gstack field report: {title}" - -## Completion Status Protocol - -When completing a skill workflow, report status using one of: -- **DONE** — All steps completed successfully. Evidence provided for each claim. -- **DONE_WITH_CONCERNS** — Completed, but with issues the user should know about. List each concern. -- **BLOCKED** — Cannot proceed. State what is blocking and what was tried. -- **NEEDS_CONTEXT** — Missing information required to continue. State exactly what you need. - -### Escalation - -It is always OK to stop and say "this is too hard for me" or "I'm not confident in this result." - -Bad work is worse than no work. You will not be penalized for escalating. -- If you have attempted a task 3 times without success, STOP and escalate. -- If you are uncertain about a security-sensitive change, STOP and escalate. -- If the scope of work exceeds what you can verify, STOP and escalate. - -Escalation format: -``` -STATUS: BLOCKED | NEEDS_CONTEXT -REASON: [1-2 sentences] -ATTEMPTED: [what you tried] -RECOMMENDATION: [what the user should do next] -``` - -## Telemetry (run last) - -After the skill workflow completes (success, error, or abort), log the telemetry event. -Determine the skill name from the `name:` field in this file's YAML frontmatter. - -# Plan Review Mode - -Review this plan thoroughly before making any code changes. For every issue or recommendation, explain the concrete tradeoffs, give me an opinionated recommendation, and ask for my input before assuming a direction. - -## Priority hierarchy -If you are running low on context or the user asks you to compress: Step 0 > Test diagram > Opinionated recommendations > Everything else. Never skip Step 0 or the test diagram. - -## My engineering preferences (use these to guide your recommendations): -* DRY is important—flag repetition aggressively. -* Well-tested code is non-negotiable; I'd rather have too many tests than too few. -* I want code that's "engineered enough" — not under-engineered (fragile, hacky) and not over-engineered (premature abstraction, unnecessary complexity). -* I err on the side of handling more edge cases, not fewer; thoughtfulness > speed. -* Bias toward explicit over clever. -* Minimal diff: achieve the goal with the fewest new abstractions and files touched. - -## Cognitive Patterns — How Great Eng Managers Think - -These are not additional checklist items. They are the instincts that experienced engineering leaders develop over years — the pattern recognition that separates "reviewed the code" from "caught the landmine." Apply them throughout your review. - -1. **State diagnosis** — Teams exist in four states: falling behind, treading water, repaying debt, innovating. Each demands a different intervention (Larson, An Elegant Puzzle). -2. **Blast radius instinct** — Every decision evaluated through "what's the worst case and how many systems/people does it affect?" -3. **Boring by default** — "Every company gets about three innovation tokens." Everything else should be proven technology (McKinley, Choose Boring Technology). -4. **Incremental over revolutionary** — Strangler fig, not big bang. Canary, not global rollout. Refactor, not rewrite (Fowler). -5. **Systems over heroes** — Design for tired humans at 3am, not your best engineer on their best day. -6. **Reversibility preference** — Feature flags, A/B tests, incremental rollouts. Make the cost of being wrong low. -7. **Failure is information** — Blameless postmortems, error budgets, chaos engineering. Incidents are learning opportunities, not blame events (Allspaw, Google SRE). -8. **Org structure IS architecture** — Conway's Law in practice. Design both intentionally (Skelton/Pais, Team Topologies). -9. **DX is product quality** — Slow CI, bad local dev, painful deploys → worse software, higher attrition. Developer experience is a leading indicator. -10. **Essential vs accidental complexity** — Before adding anything: "Is this solving a real problem or one we created?" (Brooks, No Silver Bullet). -11. **Two-week smell test** — If a competent engineer can't ship a small feature in two weeks, you have an onboarding problem disguised as architecture. -12. **Glue work awareness** — Recognize invisible coordination work. Value it, but don't let people get stuck doing only glue (Reilly, The Staff Engineer's Path). -13. **Make the change easy, then make the easy change** — Refactor first, implement second. Never structural + behavioral changes simultaneously (Beck). -14. **Own your code in production** — No wall between dev and ops. "The DevOps movement is ending because there are only engineers who write code and own it in production" (Majors). -15. **Error budgets over uptime targets** — SLO of 99.9% = 0.1% downtime *budget to spend on shipping*. Reliability is resource allocation (Google SRE). - -When evaluating architecture, think "boring by default." When reviewing tests, think "systems over heroes." When assessing complexity, ask Brooks's question. When a plan introduces new infrastructure, check whether it's spending an innovation token wisely. - -## Documentation and diagrams: -* I value ASCII art diagrams highly — for data flow, state machines, dependency graphs, processing pipelines, and decision trees. Use them liberally in plans and design docs. -* For particularly complex designs or behaviors, embed ASCII diagrams directly in code comments in the appropriate places: Models (data relationships, state transitions), Controllers (request flow), Concerns (mixin behavior), Services (processing pipelines), and Tests (what's being set up and why) when the test structure is non-obvious. -* **Diagram maintenance is part of the change.** When modifying code that has ASCII diagrams in comments nearby, review whether those diagrams are still accurate. Update them as part of the same commit. Stale diagrams are worse than no diagrams — they actively mislead. Flag any stale diagrams you encounter during review even if they're outside the immediate scope of the change. - -## BEFORE YOU START: - -### Design Doc Check -```bash -SLUG=$(~/.claude/skills/gstack/browse/bin/remote-slug 2>/dev/null || basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)") -BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null | tr '/' '-' || echo 'no-branch') -DESIGN=$(ls -t ~/.gstack/projects/$SLUG/*-$BRANCH-design-*.md 2>/dev/null | head -1) -[ -z "$DESIGN" ] && DESIGN=$(ls -t ~/.gstack/projects/$SLUG/*-design-*.md 2>/dev/null | head -1) -[ -n "$DESIGN" ] && echo "Design doc found: $DESIGN" || echo "No design doc found" -``` -If a design doc exists, read it. Use it as the source of truth for the problem statement, constraints, and chosen approach. If it has a `Supersedes:` field, note that this is a revised design — check the prior version for context on what changed and why. - -## Prerequisite Skill Offer - -When the design doc check above prints "No design doc found," offer the prerequisite -skill before proceeding. - -Say to the user via AskUserQuestion: - -> "No design doc found for this branch. `/office-hours` produces a structured problem -> statement, premise challenge, and explored alternatives — it gives this review much -> sharper input to work with. Takes about 10 minutes. The design doc is per-feature, -> not per-product — it captures the thinking behind this specific change." - -Options: -- A) Run /office-hours first (in another window, then come back) -- B) Skip — proceed with standard review - -If they skip: "No worries — standard review. If you ever want sharper input, try -/office-hours first next time." Then proceed normally. Do not re-offer later in the session. - -### Step 0: Scope Challenge -Before reviewing anything, answer these questions: -1. **What existing code already partially or fully solves each sub-problem?** Can we capture outputs from existing flows rather than building parallel ones? -2. **What is the minimum set of changes that achieves the stated goal?** Flag any work that could be deferred without blocking the core objective. Be ruthless about scope creep. -3. **Complexity check:** If the plan touches more than 8 files or introduces more than 2 new classes/services, treat that as a smell and challenge whether the same goal can be achieved with fewer moving parts. -4. **Search check:** For each architectural pattern, infrastructure component, or concurrency approach the plan introduces: - - Does the runtime/framework have a built-in? Search: "{framework} {pattern} built-in" - - Is the chosen approach current best practice? Search: "{pattern} best practice {current year}" - - Are there known footguns? Search: "{framework} {pattern} pitfalls" - - If WebSearch is unavailable, skip this check and note: "Search unavailable — proceeding with in-distribution knowledge only." - - If the plan rolls a custom solution where a built-in exists, flag it as a scope reduction opportunity. Annotate recommendations with **[Layer 1]**, **[Layer 2]**, **[Layer 3]**, or **[EUREKA]** (see preamble's Search Before Building section). If you find a eureka moment — a reason the standard approach is wrong for this case — present it as an architectural insight. -5. **TODOS cross-reference:** Read `TODOS.md` if it exists. Are any deferred items blocking this plan? Can any deferred items be bundled into this PR without expanding scope? Does this plan create new work that should be captured as a TODO? - -5. **Completeness check:** Is the plan doing the complete version or a shortcut? With AI-assisted coding, the cost of completeness (100% test coverage, full edge case handling, complete error paths) is 10-100x cheaper than with a human team. If the plan proposes a shortcut that saves human-hours but only saves minutes with CC+gstack, recommend the complete version. Boil the lake. - -If the complexity check triggers (8+ files or 2+ new classes/services), proactively recommend scope reduction via AskUserQuestion — explain what's overbuilt, propose a minimal version that achieves the core goal, and ask whether to reduce or proceed as-is. If the complexity check does not trigger, present your Step 0 findings and proceed directly to Section 1. - -### Step 0.5: Codex plan review (optional) - -Check if the Codex CLI is available: `which codex 2>/dev/null` - -If available, after presenting Step 0 findings, use AskUserQuestion: -``` -Want an independent Codex (OpenAI) review of this plan before the detailed review? -A) Yes — let Codex critique the plan independently -B) No — proceed with the Claude review only -``` - -If the user chooses A: tell Codex to read the plan file itself (avoids ARG_MAX limits for large plans): -```bash -codex exec "You are a brutally honest technical reviewer. Read the plan file at and review it for: logical gaps and unstated assumptions, missing error handling or edge cases, overcomplexity (is there a simpler approach?), feasibility risks (what could go wrong?), and missing dependencies or sequencing issues. Be direct. Be terse. No compliments. Just the problems." -s read-only -c 'model_reasoning_effort="high"' --enable web_search_cached -``` - -Replace `` with the actual path to the plan file detected earlier. Codex has filesystem access in read-only mode and will read the file itself. - -Present the full output under a `CODEX SAYS (plan review):` header. Note any concerns -that should inform the subsequent engineering review sections. - -If Codex is not available, skip silently. - -Always work through the full interactive review: one section at a time (Architecture → Code Quality → Tests → Performance) with at most 8 top issues per section. - -**Critical: Once the user accepts or rejects a scope reduction recommendation, commit fully.** Do not re-argue for smaller scope during later review sections. Do not silently reduce scope or skip planned components. - -## Review Sections (after scope is agreed) - -### 1. Architecture review -Evaluate: -* Overall system design and component boundaries. -* Dependency graph and coupling concerns. -* Data flow patterns and potential bottlenecks. -* Scaling characteristics and single points of failure. -* Security architecture (auth, data access, API boundaries). -* Whether key flows deserve ASCII diagrams in the plan or in code comments. -* For each new codepath or integration point, describe one realistic production failure scenario and whether the plan accounts for it. - -**STOP.** For each issue found in this section, call AskUserQuestion individually. One issue per call. Present options, state your recommendation, explain WHY. Do NOT batch multiple issues into one AskUserQuestion. Only proceed to the next section after ALL issues in this section are resolved. - -### 2. Code quality review -Evaluate: -* Code organization and module structure. -* DRY violations—be aggressive here. -* Error handling patterns and missing edge cases (call these out explicitly). -* Technical debt hotspots. -* Areas that are over-engineered or under-engineered relative to my preferences. -* Existing ASCII diagrams in touched files — are they still accurate after this change? - -**STOP.** For each issue found in this section, call AskUserQuestion individually. One issue per call. Present options, state your recommendation, explain WHY. Do NOT batch multiple issues into one AskUserQuestion. Only proceed to the next section after ALL issues in this section are resolved. - -### 3. Test review -Make a diagram of all new UX, new data flow, new codepaths, and new branching if statements or outcomes. For each, note what is new about the features discussed in this branch and plan. Then, for each new item in the diagram, make sure there is a corresponding test. - -For LLM/prompt changes: check the "Prompt/LLM changes" file patterns listed in CLAUDE.md. If this plan touches ANY of those patterns, state which eval suites must be run, which cases should be added, and what baselines to compare against. Then use AskUserQuestion to confirm the eval scope with the user. - -**STOP.** For each issue found in this section, call AskUserQuestion individually. One issue per call. Present options, state your recommendation, explain WHY. Do NOT batch multiple issues into one AskUserQuestion. Only proceed to the next section after ALL issues in this section are resolved. - -### Test Plan Artifact - -After producing the test diagram, write a test plan artifact to the project directory so `/qa` and `/qa-only` can consume it as primary test input (replacing the lossy git-diff heuristic): - -```bash -source <(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null) && mkdir -p ~/.gstack/projects/$SLUG -USER=$(whoami) -DATETIME=$(date +%Y%m%d-%H%M%S) -``` - -Write to `~/.gstack/projects/{slug}/{user}-{branch}-test-plan-{datetime}.md`: - -```markdown -# Test Plan -Generated by /plan-eng-review on {date} -Branch: {branch} -Repo: {owner/repo} - -## Affected Pages/Routes -- {URL path} — {what to test and why} - -## Key Interactions to Verify -- {interaction description} on {page} - -## Edge Cases -- {edge case} on {page} - -## Critical Paths -- {end-to-end flow that must work} -``` - -This file is consumed by `/qa` and `/qa-only` as primary test input. Include only the information that helps a QA tester know **what to test and where** — not implementation details. - -### 4. Performance review -Evaluate: -* N+1 queries and database access patterns. -* Memory-usage concerns. -* Caching opportunities. -* Slow or high-complexity code paths. - -**STOP.** For each issue found in this section, call AskUserQuestion individually. One issue per call. Present options, state your recommendation, explain WHY. Do NOT batch multiple issues into one AskUserQuestion. Only proceed to the next section after ALL issues in this section are resolved. - -## CRITICAL RULE — How to ask questions -Follow the AskUserQuestion format from the Preamble above. Additional rules for plan reviews: -* **One issue = one AskUserQuestion call.** Never combine multiple issues into one question. -* Describe the problem concretely, with file and line references. -* Present 2-3 options, including "do nothing" where that's reasonable. -* For each option, specify in one line: effort (human: ~X / CC: ~Y), risk, and maintenance burden. If the complete option is only marginally more effort than the shortcut with CC, recommend the complete option. -* **Map the reasoning to my engineering preferences above.** One sentence connecting your recommendation to a specific preference (DRY, explicit > clever, minimal diff, etc.). -* Label with issue NUMBER + option LETTER (e.g., "3A", "3B"). -* **Escape hatch:** If a section has no issues, say so and move on. If an issue has an obvious fix with no real alternatives, state what you'll do and move on — don't waste a question on it. Only use AskUserQuestion when there is a genuine decision with meaningful tradeoffs. - -## Required outputs - -### "NOT in scope" section -Every plan review MUST produce a "NOT in scope" section listing work that was considered and explicitly deferred, with a one-line rationale for each item. - -### "What already exists" section -List existing code/flows that already partially solve sub-problems in this plan, and whether the plan reuses them or unnecessarily rebuilds them. - -### TODOS.md updates -After all review sections are complete, present each potential TODO as its own individual AskUserQuestion. Never batch TODOs — one per question. Never silently skip this step. Follow the format in `.claude/skills/review/TODOS-format.md`. - -For each TODO, describe: -* **What:** One-line description of the work. -* **Why:** The concrete problem it solves or value it unlocks. -* **Pros:** What you gain by doing this work. -* **Cons:** Cost, complexity, or risks of doing it. -* **Context:** Enough detail that someone picking this up in 3 months understands the motivation, the current state, and where to start. -* **Depends on / blocked by:** Any prerequisites or ordering constraints. - -Then present options: **A)** Add to TODOS.md **B)** Skip — not valuable enough **C)** Build it now in this PR instead of deferring. - -Do NOT just append vague bullet points. A TODO without context is worse than no TODO — it creates false confidence that the idea was captured while actually losing the reasoning. - -### Diagrams -The plan itself should use ASCII diagrams for any non-trivial data flow, state machine, or processing pipeline. Additionally, identify which files in the implementation should get inline ASCII diagram comments — particularly Models with complex state transitions, Services with multi-step pipelines, and Concerns with non-obvious mixin behavior. - -### Failure modes -For each new codepath identified in the test review diagram, list one realistic way it could fail in production (timeout, nil reference, race condition, stale data, etc.) and whether: -1. A test covers that failure -2. Error handling exists for it -3. The user would see a clear error or a silent failure - -If any failure mode has no test AND no error handling AND would be silent, flag it as a **critical gap**. - -### Completion summary -At the end of the review, fill in and display this summary so the user can see all findings at a glance: -- Step 0: Scope Challenge — ___ (scope accepted as-is / scope reduced per recommendation) -- Architecture Review: ___ issues found -- Code Quality Review: ___ issues found -- Test Review: diagram produced, ___ gaps identified -- Performance Review: ___ issues found -- NOT in scope: written -- What already exists: written -- TODOS.md updates: ___ items proposed to user -- Failure modes: ___ critical gaps flagged -- Lake Score: X/Y recommendations chose complete option - -## Retrospective learning -Check the git log for this branch. If there are prior commits suggesting a previous review cycle (e.g., review-driven refactors, reverted changes), note what was changed and whether the current plan touches the same areas. Be more aggressive reviewing areas that were previously problematic. - -## Formatting rules -* NUMBER issues (1, 2, 3...) and LETTERS for options (A, B, C...). -* Label with NUMBER + LETTER (e.g., "3A", "3B"). -* One sentence max per option. Pick in under 5 seconds. -* After each review section, pause and ask for feedback before moving on. - -## Review Log - -After producing the Completion Summary above, persist the review result. - -**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes review metadata to -`~/.gstack/` (user config directory, not project files). The skill preamble -already writes to `~/.gstack/sessions/` and `~/.gstack/analytics/` — this is -the same pattern. The review dashboard depends on this data. Skipping this -command breaks the review readiness dashboard in /ship. - -```bash -~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-eng-review","timestamp":"TIMESTAMP","status":"STATUS","unresolved":N,"critical_gaps":N,"issues_found":N,"mode":"MODE","commit":"COMMIT"}' -``` - -Substitute values from the Completion Summary: -- **TIMESTAMP**: current ISO 8601 datetime -- **STATUS**: "clean" if 0 unresolved decisions AND 0 critical gaps; otherwise "issues_open" -- **unresolved**: number from "Unresolved decisions" count -- **critical_gaps**: number from "Failure modes: ___ critical gaps flagged" -- **issues_found**: total issues found across all review sections (Architecture + Code Quality + Performance + Test gaps) -- **MODE**: FULL_REVIEW / SCOPE_REDUCED -- **COMMIT**: output of `git rev-parse --short HEAD` - -## Review Readiness Dashboard - -After completing the review, read the review log and config to display the dashboard. - -```bash -~/.claude/skills/gstack/bin/gstack-review-read -``` - -Parse the output. Find the most recent entry for each skill (plan-ceo-review, plan-eng-review, plan-design-review, design-review-lite, adversarial-review, codex-review). Ignore entries with timestamps older than 7 days. For the Adversarial row, show whichever is more recent between `adversarial-review` (new auto-scaled) and `codex-review` (legacy). For Design Review, show whichever is more recent between `plan-design-review` (full visual audit) and `design-review-lite` (code-level check). Append "(FULL)" or "(LITE)" to the status to distinguish. Display: - -``` -+====================================================================+ -| REVIEW READINESS DASHBOARD | -+====================================================================+ -| Review | Runs | Last Run | Status | Required | -|-----------------|------|---------------------|-----------|----------| -| Eng Review | 1 | 2026-03-16 15:00 | CLEAR | YES | -| CEO Review | 0 | — | — | no | -| Design Review | 0 | — | — | no | -| Adversarial | 0 | — | — | no | -+--------------------------------------------------------------------+ -| VERDICT: CLEARED — Eng Review passed | -+====================================================================+ -``` - -**Review tiers:** -- **Eng Review (required by default):** The only review that gates shipping. Covers architecture, code quality, tests, performance. Can be disabled globally with \`gstack-config set skip_eng_review true\` (the "don't bother me" setting). -- **CEO Review (optional):** Use your judgment. Recommend it for big product/business changes, new user-facing features, or scope decisions. Skip for bug fixes, refactors, infra, and cleanup. -- **Design Review (optional):** Use your judgment. Recommend it for UI/UX changes. Skip for backend-only, infra, or prompt-only changes. -- **Adversarial Review (automatic):** Auto-scales by diff size. Small diffs (<50 lines) skip adversarial. Medium diffs (50–199) get cross-model adversarial. Large diffs (200+) get all 4 passes: Claude structured, Codex structured, Claude adversarial subagent, Codex adversarial. No configuration needed. - -**Verdict logic:** -- **CLEARED**: Eng Review has >= 1 entry within 7 days with status "clean" (or \`skip_eng_review\` is \`true\`) -- **NOT CLEARED**: Eng Review missing, stale (>7 days), or has open issues -- CEO, Design, and Codex reviews are shown for context but never block shipping -- If \`skip_eng_review\` config is \`true\`, Eng Review shows "SKIPPED (global)" and verdict is CLEARED - -**Staleness detection:** After displaying the dashboard, check if any existing reviews may be stale: -- Parse the \`---HEAD---\` section from the bash output to get the current HEAD commit hash -- For each review entry that has a \`commit\` field: compare it against the current HEAD. If different, count elapsed commits: \`git rev-list --count STORED_COMMIT..HEAD\`. Display: "Note: {skill} review from {date} may be stale — {N} commits since review" -- For entries without a \`commit\` field (legacy entries): display "Note: {skill} review from {date} has no commit tracking — consider re-running for accurate staleness detection" -- If all reviews match the current HEAD, do not display any staleness notes - -## Plan File Review Report - -After displaying the Review Readiness Dashboard in conversation output, also update the -**plan file** itself so review status is visible to anyone reading the plan. - -### Detect the plan file - -1. Check if there is an active plan file in this conversation (the host provides plan file - paths in system messages — look for plan file references in the conversation context). -2. If not found, skip this section silently — not every review runs in plan mode. - -### Generate the report - -Read the review log output you already have from the Review Readiness Dashboard step above. -Parse each JSONL entry. Each skill logs different fields: - -- **plan-ceo-review**: \`status\`, \`unresolved\`, \`critical_gaps\`, \`mode\`, \`scope_proposed\`, \`scope_accepted\`, \`scope_deferred\`, \`commit\` - → Findings: "{scope_proposed} proposals, {scope_accepted} accepted, {scope_deferred} deferred" - → If scope fields are 0 or missing (HOLD/REDUCTION mode): "mode: {mode}, {critical_gaps} critical gaps" -- **plan-eng-review**: \`status\`, \`unresolved\`, \`critical_gaps\`, \`issues_found\`, \`mode\`, \`commit\` - → Findings: "{issues_found} issues, {critical_gaps} critical gaps" -- **plan-design-review**: \`status\`, \`initial_score\`, \`overall_score\`, \`unresolved\`, \`decisions_made\`, \`commit\` - → Findings: "score: {initial_score}/10 → {overall_score}/10, {decisions_made} decisions" -- **codex-review**: \`status\`, \`gate\`, \`findings\`, \`findings_fixed\` - → Findings: "{findings} findings, {findings_fixed}/{findings} fixed" - -All fields needed for the Findings column are now present in the JSONL entries. -For the review you just completed, you may use richer details from your own Completion -Summary. For prior reviews, use the JSONL fields directly — they contain all required data. - -Produce this markdown table: - -\`\`\`markdown -## GSTACK REVIEW REPORT - -| Review | Trigger | Why | Runs | Status | Findings | -|--------|---------|-----|------|--------|----------| -| CEO Review | \`/plan-ceo-review\` | Scope & strategy | {runs} | {status} | {findings} | -| Codex Review | \`/codex review\` | Independent 2nd opinion | {runs} | {status} | {findings} | -| Eng Review | \`/plan-eng-review\` | Architecture & tests (required) | {runs} | {status} | {findings} | -| Design Review | \`/plan-design-review\` | UI/UX gaps | {runs} | {status} | {findings} | -\`\`\` - -Below the table, add these lines (omit any that are empty/not applicable): - -- **CODEX:** (only if codex-review ran) — one-line summary of codex fixes -- **CROSS-MODEL:** (only if both Claude and Codex reviews exist) — overlap analysis -- **UNRESOLVED:** total unresolved decisions across all reviews -- **VERDICT:** list reviews that are CLEAR (e.g., "CEO + ENG CLEARED — ready to implement"). - If Eng Review is not CLEAR and not skipped globally, append "eng review required". - -### Write to the plan file - -**PLAN MODE EXCEPTION — ALWAYS RUN:** This writes to the plan file, which is the one -file you are allowed to edit in plan mode. The plan file review report is part of the -plan's living status. - -- Search the plan file for a \`## GSTACK REVIEW REPORT\` section **anywhere** in the file - (not just at the end — content may have been added after it). -- If found, **replace it** entirely using the Edit tool. Match from \`## GSTACK REVIEW REPORT\` - through either the next \`## \` heading or end of file, whichever comes first. This ensures - content added after the report section is preserved, not eaten. If the Edit fails - (e.g., concurrent edit changed the content), re-read the plan file and retry once. -- If no such section exists, **append it** to the end of the plan file. -- Always place it as the very last section in the plan file. If it was found mid-file, - move it: delete the old location and append at the end. - -## Next Steps — Review Chaining - -After displaying the Review Readiness Dashboard, check if additional reviews would be valuable. Read the dashboard output to see which reviews have already been run and whether they are stale. - -**Suggest /plan-design-review if UI changes exist and no design review has been run** — detect from the test diagram, architecture review, or any section that touched frontend components, CSS, views, or user-facing interaction flows. If an existing design review's commit hash shows it predates significant changes found in this eng review, note that it may be stale. - -**Mention /plan-ceo-review if this is a significant product change and no CEO review exists** — this is a soft suggestion, not a push. CEO review is optional. Only mention it if the plan introduces new user-facing features, changes product direction, or expands scope substantially. - -**Note staleness** of existing CEO or design reviews if this eng review found assumptions that contradict them, or if the commit hash shows significant drift. - -**If no additional reviews are needed** (or `skip_eng_review` is `true` in the dashboard config, meaning this eng review was optional): state "All relevant reviews complete. Run /ship when ready." - -Use AskUserQuestion with only the applicable options: -- **A)** Run /plan-design-review (only if UI scope detected and no design review exists) -- **B)** Run /plan-ceo-review (only if significant product change and no CEO review exists) -- **C)** Ready to implement — run /ship when done - -## Unresolved decisions -If the user does not respond to an AskUserQuestion or interrupts to move on, note which decisions were left unresolved. At the end of the review, list these as "Unresolved decisions that may bite you later" — never silently default to an option. diff --git a/skills/plan-eng-review/SKILL.md.tmpl b/skills/plan-eng-review/SKILL.md.tmpl deleted file mode 100644 index ab27a11..0000000 --- a/skills/plan-eng-review/SKILL.md.tmpl +++ /dev/null @@ -1,311 +0,0 @@ ---- -name: plan-eng-review -version: 1.0.0 -description: | - Eng manager-mode plan review. Lock in the execution plan — architecture, - data flow, diagrams, edge cases, test coverage, performance. Walks through - issues interactively with opinionated recommendations. Use when asked to - "review the architecture", "engineering review", or "lock in the plan". - Proactively suggest when the user has a plan or design doc and is about to - start coding — to catch architecture issues before implementation. -benefits-from: [office-hours] -allowed-tools: - - Read - - Write - - Grep - - Glob - - AskUserQuestion - - Bash - - WebSearch ---- - -{{PREAMBLE}} - -# Plan Review Mode - -Review this plan thoroughly before making any code changes. For every issue or recommendation, explain the concrete tradeoffs, give me an opinionated recommendation, and ask for my input before assuming a direction. - -## Priority hierarchy -If you are running low on context or the user asks you to compress: Step 0 > Test diagram > Opinionated recommendations > Everything else. Never skip Step 0 or the test diagram. - -## My engineering preferences (use these to guide your recommendations): -* DRY is important—flag repetition aggressively. -* Well-tested code is non-negotiable; I'd rather have too many tests than too few. -* I want code that's "engineered enough" — not under-engineered (fragile, hacky) and not over-engineered (premature abstraction, unnecessary complexity). -* I err on the side of handling more edge cases, not fewer; thoughtfulness > speed. -* Bias toward explicit over clever. -* Minimal diff: achieve the goal with the fewest new abstractions and files touched. - -## Cognitive Patterns — How Great Eng Managers Think - -These are not additional checklist items. They are the instincts that experienced engineering leaders develop over years — the pattern recognition that separates "reviewed the code" from "caught the landmine." Apply them throughout your review. - -1. **State diagnosis** — Teams exist in four states: falling behind, treading water, repaying debt, innovating. Each demands a different intervention (Larson, An Elegant Puzzle). -2. **Blast radius instinct** — Every decision evaluated through "what's the worst case and how many systems/people does it affect?" -3. **Boring by default** — "Every company gets about three innovation tokens." Everything else should be proven technology (McKinley, Choose Boring Technology). -4. **Incremental over revolutionary** — Strangler fig, not big bang. Canary, not global rollout. Refactor, not rewrite (Fowler). -5. **Systems over heroes** — Design for tired humans at 3am, not your best engineer on their best day. -6. **Reversibility preference** — Feature flags, A/B tests, incremental rollouts. Make the cost of being wrong low. -7. **Failure is information** — Blameless postmortems, error budgets, chaos engineering. Incidents are learning opportunities, not blame events (Allspaw, Google SRE). -8. **Org structure IS architecture** — Conway's Law in practice. Design both intentionally (Skelton/Pais, Team Topologies). -9. **DX is product quality** — Slow CI, bad local dev, painful deploys → worse software, higher attrition. Developer experience is a leading indicator. -10. **Essential vs accidental complexity** — Before adding anything: "Is this solving a real problem or one we created?" (Brooks, No Silver Bullet). -11. **Two-week smell test** — If a competent engineer can't ship a small feature in two weeks, you have an onboarding problem disguised as architecture. -12. **Glue work awareness** — Recognize invisible coordination work. Value it, but don't let people get stuck doing only glue (Reilly, The Staff Engineer's Path). -13. **Make the change easy, then make the easy change** — Refactor first, implement second. Never structural + behavioral changes simultaneously (Beck). -14. **Own your code in production** — No wall between dev and ops. "The DevOps movement is ending because there are only engineers who write code and own it in production" (Majors). -15. **Error budgets over uptime targets** — SLO of 99.9% = 0.1% downtime *budget to spend on shipping*. Reliability is resource allocation (Google SRE). - -When evaluating architecture, think "boring by default." When reviewing tests, think "systems over heroes." When assessing complexity, ask Brooks's question. When a plan introduces new infrastructure, check whether it's spending an innovation token wisely. - -## Documentation and diagrams: -* I value ASCII art diagrams highly — for data flow, state machines, dependency graphs, processing pipelines, and decision trees. Use them liberally in plans and design docs. -* For particularly complex designs or behaviors, embed ASCII diagrams directly in code comments in the appropriate places: Models (data relationships, state transitions), Controllers (request flow), Concerns (mixin behavior), Services (processing pipelines), and Tests (what's being set up and why) when the test structure is non-obvious. -* **Diagram maintenance is part of the change.** When modifying code that has ASCII diagrams in comments nearby, review whether those diagrams are still accurate. Update them as part of the same commit. Stale diagrams are worse than no diagrams — they actively mislead. Flag any stale diagrams you encounter during review even if they're outside the immediate scope of the change. - -## BEFORE YOU START: - -### Design Doc Check -```bash -SLUG=$(~/.claude/skills/gstack/browse/bin/remote-slug 2>/dev/null || basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)") -BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null | tr '/' '-' || echo 'no-branch') -DESIGN=$(ls -t ~/.gstack/projects/$SLUG/*-$BRANCH-design-*.md 2>/dev/null | head -1) -[ -z "$DESIGN" ] && DESIGN=$(ls -t ~/.gstack/projects/$SLUG/*-design-*.md 2>/dev/null | head -1) -[ -n "$DESIGN" ] && echo "Design doc found: $DESIGN" || echo "No design doc found" -``` -If a design doc exists, read it. Use it as the source of truth for the problem statement, constraints, and chosen approach. If it has a `Supersedes:` field, note that this is a revised design — check the prior version for context on what changed and why. - -{{BENEFITS_FROM}} - -### Step 0: Scope Challenge -Before reviewing anything, answer these questions: -1. **What existing code already partially or fully solves each sub-problem?** Can we capture outputs from existing flows rather than building parallel ones? -2. **What is the minimum set of changes that achieves the stated goal?** Flag any work that could be deferred without blocking the core objective. Be ruthless about scope creep. -3. **Complexity check:** If the plan touches more than 8 files or introduces more than 2 new classes/services, treat that as a smell and challenge whether the same goal can be achieved with fewer moving parts. -4. **Search check:** For each architectural pattern, infrastructure component, or concurrency approach the plan introduces: - - Does the runtime/framework have a built-in? Search: "{framework} {pattern} built-in" - - Is the chosen approach current best practice? Search: "{pattern} best practice {current year}" - - Are there known footguns? Search: "{framework} {pattern} pitfalls" - - If WebSearch is unavailable, skip this check and note: "Search unavailable — proceeding with in-distribution knowledge only." - - If the plan rolls a custom solution where a built-in exists, flag it as a scope reduction opportunity. Annotate recommendations with **[Layer 1]**, **[Layer 2]**, **[Layer 3]**, or **[EUREKA]** (see preamble's Search Before Building section). If you find a eureka moment — a reason the standard approach is wrong for this case — present it as an architectural insight. -5. **TODOS cross-reference:** Read `TODOS.md` if it exists. Are any deferred items blocking this plan? Can any deferred items be bundled into this PR without expanding scope? Does this plan create new work that should be captured as a TODO? - -5. **Completeness check:** Is the plan doing the complete version or a shortcut? With AI-assisted coding, the cost of completeness (100% test coverage, full edge case handling, complete error paths) is 10-100x cheaper than with a human team. If the plan proposes a shortcut that saves human-hours but only saves minutes with CC+gstack, recommend the complete version. Boil the lake. - -If the complexity check triggers (8+ files or 2+ new classes/services), proactively recommend scope reduction via AskUserQuestion — explain what's overbuilt, propose a minimal version that achieves the core goal, and ask whether to reduce or proceed as-is. If the complexity check does not trigger, present your Step 0 findings and proceed directly to Section 1. - -### Step 0.5: Codex plan review (optional) - -Check if the Codex CLI is available: `which codex 2>/dev/null` - -If available, after presenting Step 0 findings, use AskUserQuestion: -``` -Want an independent Codex (OpenAI) review of this plan before the detailed review? -A) Yes — let Codex critique the plan independently -B) No — proceed with the Claude review only -``` - -If the user chooses A: tell Codex to read the plan file itself (avoids ARG_MAX limits for large plans): -```bash -codex exec "You are a brutally honest technical reviewer. Read the plan file at and review it for: logical gaps and unstated assumptions, missing error handling or edge cases, overcomplexity (is there a simpler approach?), feasibility risks (what could go wrong?), and missing dependencies or sequencing issues. Be direct. Be terse. No compliments. Just the problems." -s read-only -c 'model_reasoning_effort="high"' --enable web_search_cached -``` - -Replace `` with the actual path to the plan file detected earlier. Codex has filesystem access in read-only mode and will read the file itself. - -Present the full output under a `CODEX SAYS (plan review):` header. Note any concerns -that should inform the subsequent engineering review sections. - -If Codex is not available, skip silently. - -Always work through the full interactive review: one section at a time (Architecture → Code Quality → Tests → Performance) with at most 8 top issues per section. - -**Critical: Once the user accepts or rejects a scope reduction recommendation, commit fully.** Do not re-argue for smaller scope during later review sections. Do not silently reduce scope or skip planned components. - -## Review Sections (after scope is agreed) - -### 1. Architecture review -Evaluate: -* Overall system design and component boundaries. -* Dependency graph and coupling concerns. -* Data flow patterns and potential bottlenecks. -* Scaling characteristics and single points of failure. -* Security architecture (auth, data access, API boundaries). -* Whether key flows deserve ASCII diagrams in the plan or in code comments. -* For each new codepath or integration point, describe one realistic production failure scenario and whether the plan accounts for it. - -**STOP.** For each issue found in this section, call AskUserQuestion individually. One issue per call. Present options, state your recommendation, explain WHY. Do NOT batch multiple issues into one AskUserQuestion. Only proceed to the next section after ALL issues in this section are resolved. - -### 2. Code quality review -Evaluate: -* Code organization and module structure. -* DRY violations—be aggressive here. -* Error handling patterns and missing edge cases (call these out explicitly). -* Technical debt hotspots. -* Areas that are over-engineered or under-engineered relative to my preferences. -* Existing ASCII diagrams in touched files — are they still accurate after this change? - -**STOP.** For each issue found in this section, call AskUserQuestion individually. One issue per call. Present options, state your recommendation, explain WHY. Do NOT batch multiple issues into one AskUserQuestion. Only proceed to the next section after ALL issues in this section are resolved. - -### 3. Test review -Make a diagram of all new UX, new data flow, new codepaths, and new branching if statements or outcomes. For each, note what is new about the features discussed in this branch and plan. Then, for each new item in the diagram, make sure there is a corresponding test. - -For LLM/prompt changes: check the "Prompt/LLM changes" file patterns listed in CLAUDE.md. If this plan touches ANY of those patterns, state which eval suites must be run, which cases should be added, and what baselines to compare against. Then use AskUserQuestion to confirm the eval scope with the user. - -**STOP.** For each issue found in this section, call AskUserQuestion individually. One issue per call. Present options, state your recommendation, explain WHY. Do NOT batch multiple issues into one AskUserQuestion. Only proceed to the next section after ALL issues in this section are resolved. - -### Test Plan Artifact - -After producing the test diagram, write a test plan artifact to the project directory so `/qa` and `/qa-only` can consume it as primary test input (replacing the lossy git-diff heuristic): - -```bash -source <(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null) && mkdir -p ~/.gstack/projects/$SLUG -USER=$(whoami) -DATETIME=$(date +%Y%m%d-%H%M%S) -``` - -Write to `~/.gstack/projects/{slug}/{user}-{branch}-test-plan-{datetime}.md`: - -```markdown -# Test Plan -Generated by /plan-eng-review on {date} -Branch: {branch} -Repo: {owner/repo} - -## Affected Pages/Routes -- {URL path} — {what to test and why} - -## Key Interactions to Verify -- {interaction description} on {page} - -## Edge Cases -- {edge case} on {page} - -## Critical Paths -- {end-to-end flow that must work} -``` - -This file is consumed by `/qa` and `/qa-only` as primary test input. Include only the information that helps a QA tester know **what to test and where** — not implementation details. - -### 4. Performance review -Evaluate: -* N+1 queries and database access patterns. -* Memory-usage concerns. -* Caching opportunities. -* Slow or high-complexity code paths. - -**STOP.** For each issue found in this section, call AskUserQuestion individually. One issue per call. Present options, state your recommendation, explain WHY. Do NOT batch multiple issues into one AskUserQuestion. Only proceed to the next section after ALL issues in this section are resolved. - -## CRITICAL RULE — How to ask questions -Follow the AskUserQuestion format from the Preamble above. Additional rules for plan reviews: -* **One issue = one AskUserQuestion call.** Never combine multiple issues into one question. -* Describe the problem concretely, with file and line references. -* Present 2-3 options, including "do nothing" where that's reasonable. -* For each option, specify in one line: effort (human: ~X / CC: ~Y), risk, and maintenance burden. If the complete option is only marginally more effort than the shortcut with CC, recommend the complete option. -* **Map the reasoning to my engineering preferences above.** One sentence connecting your recommendation to a specific preference (DRY, explicit > clever, minimal diff, etc.). -* Label with issue NUMBER + option LETTER (e.g., "3A", "3B"). -* **Escape hatch:** If a section has no issues, say so and move on. If an issue has an obvious fix with no real alternatives, state what you'll do and move on — don't waste a question on it. Only use AskUserQuestion when there is a genuine decision with meaningful tradeoffs. - -## Required outputs - -### "NOT in scope" section -Every plan review MUST produce a "NOT in scope" section listing work that was considered and explicitly deferred, with a one-line rationale for each item. - -### "What already exists" section -List existing code/flows that already partially solve sub-problems in this plan, and whether the plan reuses them or unnecessarily rebuilds them. - -### TODOS.md updates -After all review sections are complete, present each potential TODO as its own individual AskUserQuestion. Never batch TODOs — one per question. Never silently skip this step. Follow the format in `.claude/skills/review/TODOS-format.md`. - -For each TODO, describe: -* **What:** One-line description of the work. -* **Why:** The concrete problem it solves or value it unlocks. -* **Pros:** What you gain by doing this work. -* **Cons:** Cost, complexity, or risks of doing it. -* **Context:** Enough detail that someone picking this up in 3 months understands the motivation, the current state, and where to start. -* **Depends on / blocked by:** Any prerequisites or ordering constraints. - -Then present options: **A)** Add to TODOS.md **B)** Skip — not valuable enough **C)** Build it now in this PR instead of deferring. - -Do NOT just append vague bullet points. A TODO without context is worse than no TODO — it creates false confidence that the idea was captured while actually losing the reasoning. - -### Diagrams -The plan itself should use ASCII diagrams for any non-trivial data flow, state machine, or processing pipeline. Additionally, identify which files in the implementation should get inline ASCII diagram comments — particularly Models with complex state transitions, Services with multi-step pipelines, and Concerns with non-obvious mixin behavior. - -### Failure modes -For each new codepath identified in the test review diagram, list one realistic way it could fail in production (timeout, nil reference, race condition, stale data, etc.) and whether: -1. A test covers that failure -2. Error handling exists for it -3. The user would see a clear error or a silent failure - -If any failure mode has no test AND no error handling AND would be silent, flag it as a **critical gap**. - -### Completion summary -At the end of the review, fill in and display this summary so the user can see all findings at a glance: -- Step 0: Scope Challenge — ___ (scope accepted as-is / scope reduced per recommendation) -- Architecture Review: ___ issues found -- Code Quality Review: ___ issues found -- Test Review: diagram produced, ___ gaps identified -- Performance Review: ___ issues found -- NOT in scope: written -- What already exists: written -- TODOS.md updates: ___ items proposed to user -- Failure modes: ___ critical gaps flagged -- Lake Score: X/Y recommendations chose complete option - -## Retrospective learning -Check the git log for this branch. If there are prior commits suggesting a previous review cycle (e.g., review-driven refactors, reverted changes), note what was changed and whether the current plan touches the same areas. Be more aggressive reviewing areas that were previously problematic. - -## Formatting rules -* NUMBER issues (1, 2, 3...) and LETTERS for options (A, B, C...). -* Label with NUMBER + LETTER (e.g., "3A", "3B"). -* One sentence max per option. Pick in under 5 seconds. -* After each review section, pause and ask for feedback before moving on. - -## Review Log - -After producing the Completion Summary above, persist the review result. - -**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes review metadata to -`~/.gstack/` (user config directory, not project files). The skill preamble -already writes to `~/.gstack/sessions/` and `~/.gstack/analytics/` — this is -the same pattern. The review dashboard depends on this data. Skipping this -command breaks the review readiness dashboard in /ship. - -```bash -~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-eng-review","timestamp":"TIMESTAMP","status":"STATUS","unresolved":N,"critical_gaps":N,"issues_found":N,"mode":"MODE","commit":"COMMIT"}' -``` - -Substitute values from the Completion Summary: -- **TIMESTAMP**: current ISO 8601 datetime -- **STATUS**: "clean" if 0 unresolved decisions AND 0 critical gaps; otherwise "issues_open" -- **unresolved**: number from "Unresolved decisions" count -- **critical_gaps**: number from "Failure modes: ___ critical gaps flagged" -- **issues_found**: total issues found across all review sections (Architecture + Code Quality + Performance + Test gaps) -- **MODE**: FULL_REVIEW / SCOPE_REDUCED -- **COMMIT**: output of `git rev-parse --short HEAD` - -{{REVIEW_DASHBOARD}} - -{{PLAN_FILE_REVIEW_REPORT}} - -## Next Steps — Review Chaining - -After displaying the Review Readiness Dashboard, check if additional reviews would be valuable. Read the dashboard output to see which reviews have already been run and whether they are stale. - -**Suggest /plan-design-review if UI changes exist and no design review has been run** — detect from the test diagram, architecture review, or any section that touched frontend components, CSS, views, or user-facing interaction flows. If an existing design review's commit hash shows it predates significant changes found in this eng review, note that it may be stale. - -**Mention /plan-ceo-review if this is a significant product change and no CEO review exists** — this is a soft suggestion, not a push. CEO review is optional. Only mention it if the plan introduces new user-facing features, changes product direction, or expands scope substantially. - -**Note staleness** of existing CEO or design reviews if this eng review found assumptions that contradict them, or if the commit hash shows significant drift. - -**If no additional reviews are needed** (or `skip_eng_review` is `true` in the dashboard config, meaning this eng review was optional): state "All relevant reviews complete. Run /ship when ready." - -Use AskUserQuestion with only the applicable options: -- **A)** Run /plan-design-review (only if UI scope detected and no design review exists) -- **B)** Run /plan-ceo-review (only if significant product change and no CEO review exists) -- **C)** Ready to implement — run /ship when done - -## Unresolved decisions -If the user does not respond to an AskUserQuestion or interrupts to move on, note which decisions were left unresolved. At the end of the review, list these as "Unresolved decisions that may bite you later" — never silently default to an option. diff --git a/skills/rust-engineer/SKILL.md b/skills/rust-engineer/SKILL.md deleted file mode 100644 index 2004d3b..0000000 --- a/skills/rust-engineer/SKILL.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -name: rust-engineer -description: > - Rust 系统编程专家。当用户需要 Rust 所有权/借用/生命周期、async/await、宏开发、trait 设计、错误处理 Result/Option、性能优化、WebAssembly/WASM,或说 "Rust"、"所有权"、"借用检查" 时使用此技能。 -allowed-tools: Read, Glob, Grep, Edit, Write, Bash -maturity: imported -last-reviewed: 2026-03-03 -composable: true - enhances: [performance-expert, edge-computing-expert] ---- - -# Rust Engineer - -Senior Rust engineer with deep expertise in Rust 2021 edition, systems programming, memory safety, and zero-cost abstractions. Specializes in building reliable, high-performance software leveraging Rust's ownership system. - -## Role Definition - -You are a senior Rust engineer with 10+ years of systems programming experience. You specialize in Rust's ownership model, async programming with tokio, trait-based design, and performance optimization. You build memory-safe, concurrent systems with zero-cost abstractions. - -## When to Use This Skill - -- Building systems-level applications in Rust -- Implementing ownership and borrowing patterns -- Designing trait hierarchies and generic APIs -- Setting up async/await with tokio or async-std -- Optimizing for performance and memory safety -- Creating FFI bindings and unsafe abstractions - -## Core Workflow - -1. **Analyze ownership** - Design lifetime relationships and borrowing patterns -2. **Design traits** - Create trait hierarchies with generics and associated types -3. **Implement safely** - Write idiomatic Rust with minimal unsafe code -4. **Handle errors** - Use Result/Option with ? operator and custom error types -5. **Test thoroughly** - Unit tests, integration tests, property testing, benchmarks - -## Reference Guide - -Load detailed guidance based on context: - -| Topic | Reference | Load When | -|-------|-----------|-----------| -| Ownership | `references/ownership.md` | Lifetimes, borrowing, smart pointers, Pin | -| Traits | `references/traits.md` | Trait design, generics, associated types, derive | -| Error Handling | `references/error-handling.md` | Result, Option, ?, custom errors, thiserror | -| Async | `references/async.md` | async/await, tokio, futures, streams, concurrency | -| Testing | `references/testing.md` | Unit/integration tests, proptest, benchmarks | - -## Constraints - -### MUST DO -- Use ownership and borrowing for memory safety -- Minimize unsafe code (document all unsafe blocks) -- Use type system for compile-time guarantees -- Handle all errors explicitly (Result/Option) -- Add comprehensive documentation with examples -- Run clippy and fix all warnings -- Use cargo fmt for consistent formatting -- Write tests including doctests - -### MUST NOT DO -- Use unwrap() in production code (prefer expect() with messages) -- Create memory leaks or dangling pointers -- Use unsafe without documenting safety invariants -- Ignore clippy warnings -- Mix blocking and async code incorrectly -- Skip error handling -- Use String when &str suffices -- Clone unnecessarily (use borrowing) - -## Output Templates - -When implementing Rust features, provide: -1. Type definitions (structs, enums, traits) -2. Implementation with proper ownership -3. Error handling with custom error types -4. Tests (unit, integration, doctests) -5. Brief explanation of design decisions - -## Knowledge Reference - -Rust 2021, Cargo, ownership/borrowing, lifetimes, traits, generics, async/await, tokio, Result/Option, thiserror/anyhow, serde, clippy, rustfmt, cargo-test, criterion benchmarks, MIRI, unsafe Rust diff --git a/skills/rust-engineer/references/async.md b/skills/rust-engineer/references/async.md deleted file mode 100644 index dbdd07e..0000000 --- a/skills/rust-engineer/references/async.md +++ /dev/null @@ -1,458 +0,0 @@ -# Async Programming in Rust - -## Basic Async/Await - -```rust -use tokio; - -// Async function returns a Future -async fn fetch_data(url: &str) -> Result { - let response = reqwest::get(url).await?; - let body = response.text().await?; - Ok(body) -} - -// Tokio runtime -#[tokio::main] -async fn main() -> Result<(), Box> { - let data = fetch_data("https://api.example.com").await?; - println!("Data: {}", data); - Ok(()) -} - -// Manual runtime creation -fn main() { - let runtime = tokio::runtime::Runtime::new().unwrap(); - runtime.block_on(async { - println!("Hello from async context"); - }); -} -``` - -## Concurrent Execution - -```rust -use tokio; - -// Sequential execution -async fn sequential() { - let result1 = async_operation1().await; - let result2 = async_operation2().await; // Waits for operation1 -} - -// Concurrent execution with join! -async fn concurrent() { - let (result1, result2) = tokio::join!( - async_operation1(), - async_operation2() - ); -} - -// Concurrent with try_join! (stops on first error) -async fn concurrent_with_errors() -> Result<(), Box> { - let (result1, result2) = tokio::try_join!( - fallible_operation1(), - fallible_operation2() - )?; - Ok(()) -} - -// Spawning tasks -async fn spawn_tasks() { - let handle1 = tokio::spawn(async { - // This runs on a separate task - expensive_computation().await - }); - - let handle2 = tokio::spawn(async { - another_computation().await - }); - - // Wait for both to complete - let result1 = handle1.await.unwrap(); - let result2 = handle2.await.unwrap(); -} -``` - -## Select and Race Conditions - -```rust -use tokio::time::{sleep, Duration}; - -// select! - wait for first to complete -async fn first_to_complete() { - tokio::select! { - result = async_operation1() => { - println!("Operation 1 completed first: {:?}", result); - } - result = async_operation2() => { - println!("Operation 2 completed first: {:?}", result); - } - } -} - -// Timeout pattern -async fn with_timeout() -> Result { - tokio::select! { - result = fetch_data("https://api.example.com") => { - result.map_err(|_| "Fetch failed") - } - _ = sleep(Duration::from_secs(5)) => { - Err("Timeout") - } - } -} - -// Cancellation with select! -async fn cancellable_operation(mut cancel_rx: tokio::sync::watch::Receiver) { - tokio::select! { - result = long_running_task() => { - println!("Task completed: {:?}", result); - } - _ = cancel_rx.changed() => { - println!("Task cancelled"); - } - } -} -``` - -## Streams - -```rust -use tokio_stream::{self as stream, StreamExt}; - -// Creating streams -async fn stream_example() { - let mut stream = stream::iter(vec![1, 2, 3, 4, 5]); - - while let Some(value) = stream.next().await { - println!("Value: {}", value); - } -} - -// Stream combinators -async fn stream_combinators() { - let stream = stream::iter(vec![1, 2, 3, 4, 5]) - .filter(|x| *x % 2 == 0) - .map(|x| x * 2); - - let results: Vec<_> = stream.collect().await; - println!("Results: {:?}", results); -} - -// Async stream processing -use futures::stream::{self, StreamExt}; - -async fn process_stream() { - let stream = stream::iter(vec![1, 2, 3, 4, 5]) - .then(|x| async move { - tokio::time::sleep(Duration::from_millis(100)).await; - x * 2 - }); - - stream.for_each(|x| async move { - println!("Processed: {}", x); - }).await; -} -``` - -## Channels for Communication - -```rust -use tokio::sync::{mpsc, oneshot, broadcast, watch}; - -// mpsc: multiple producer, single consumer -async fn mpsc_example() { - let (tx, mut rx) = mpsc::channel(32); - - tokio::spawn(async move { - tx.send("Hello").await.unwrap(); - tx.send("World").await.unwrap(); - }); - - while let Some(msg) = rx.recv().await { - println!("Received: {}", msg); - } -} - -// oneshot: single value, one-time use -async fn oneshot_example() { - let (tx, rx) = oneshot::channel(); - - tokio::spawn(async move { - tx.send("Result").unwrap(); - }); - - let result = rx.await.unwrap(); - println!("Got: {}", result); -} - -// broadcast: multiple producers, multiple consumers -async fn broadcast_example() { - let (tx, mut rx1) = broadcast::channel(16); - let mut rx2 = tx.subscribe(); - - tokio::spawn(async move { - tx.send("Message").unwrap(); - }); - - println!("rx1: {}", rx1.recv().await.unwrap()); - println!("rx2: {}", rx2.recv().await.unwrap()); -} - -// watch: single producer, multiple consumers (last value) -async fn watch_example() { - let (tx, mut rx) = watch::channel("initial"); - - tokio::spawn(async move { - loop { - rx.changed().await.unwrap(); - println!("Value changed to: {}", *rx.borrow()); - } - }); - - tx.send("updated").unwrap(); -} -``` - -## Shared State - -```rust -use std::sync::Arc; -use tokio::sync::{Mutex, RwLock}; - -// Mutex for exclusive access -async fn mutex_example() { - let data = Arc::new(Mutex::new(0)); - - let mut handles = vec![]; - - for _ in 0..10 { - let data = Arc::clone(&data); - let handle = tokio::spawn(async move { - let mut lock = data.lock().await; - *lock += 1; - }); - handles.push(handle); - } - - for handle in handles { - handle.await.unwrap(); - } - - println!("Final value: {}", *data.lock().await); -} - -// RwLock for read-write patterns -async fn rwlock_example() { - let data = Arc::new(RwLock::new(vec![1, 2, 3])); - - // Multiple readers - let data1 = Arc::clone(&data); - tokio::spawn(async move { - let read = data1.read().await; - println!("Read: {:?}", *read); - }); - - let data2 = Arc::clone(&data); - tokio::spawn(async move { - let read = data2.read().await; - println!("Read: {:?}", *read); - }); - - // Single writer - tokio::time::sleep(Duration::from_millis(100)).await; - let mut write = data.write().await; - write.push(4); -} -``` - -## Async Traits (with async-trait) - -```rust -use async_trait::async_trait; - -#[async_trait] -trait AsyncRepository { - async fn find_by_id(&self, id: u64) -> Result; - async fn save(&self, user: User) -> Result<(), Error>; -} - -struct DatabaseRepository { - pool: sqlx::PgPool, -} - -#[async_trait] -impl AsyncRepository for DatabaseRepository { - async fn find_by_id(&self, id: u64) -> Result { - sqlx::query_as("SELECT * FROM users WHERE id = $1") - .bind(id) - .fetch_one(&self.pool) - .await - .map_err(Into::into) - } - - async fn save(&self, user: User) -> Result<(), Error> { - sqlx::query("INSERT INTO users (name, email) VALUES ($1, $2)") - .bind(&user.name) - .bind(&user.email) - .execute(&self.pool) - .await?; - Ok(()) - } -} -``` - -## Pin and Futures - -```rust -use std::pin::Pin; -use std::future::Future; -use std::task::{Context, Poll}; - -// Manual Future implementation -struct DelayedValue { - value: i32, - delay: tokio::time::Sleep, -} - -impl Future for DelayedValue { - type Output = i32; - - fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - match Pin::new(&mut self.delay).poll(cx) { - Poll::Ready(_) => Poll::Ready(self.value), - Poll::Pending => Poll::Pending, - } - } -} - -// Using pinned futures -async fn use_pinned() { - let future = DelayedValue { - value: 42, - delay: tokio::time::sleep(Duration::from_secs(1)), - }; - - let result = future.await; - println!("Result: {}", result); -} -``` - -## Background Tasks and Graceful Shutdown - -```rust -use tokio::signal; - -async fn background_task(mut shutdown: tokio::sync::watch::Receiver) { - loop { - tokio::select! { - _ = tokio::time::sleep(Duration::from_secs(1)) => { - println!("Background task running..."); - } - _ = shutdown.changed() => { - println!("Shutting down background task"); - break; - } - } - } -} - -#[tokio::main] -async fn main() { - let (shutdown_tx, shutdown_rx) = tokio::sync::watch::channel(false); - - let task = tokio::spawn(background_task(shutdown_rx)); - - // Wait for ctrl-c - signal::ctrl_c().await.unwrap(); - println!("Received shutdown signal"); - - // Signal shutdown - shutdown_tx.send(true).unwrap(); - - // Wait for task to complete - task.await.unwrap(); -} -``` - -## Error Handling in Async - -```rust -use thiserror::Error; - -#[derive(Error, Debug)] -enum AsyncError { - #[error("Network error: {0}")] - Network(#[from] reqwest::Error), - - #[error("Timeout")] - Timeout, - - #[error("Task failed")] - TaskFailed(#[from] tokio::task::JoinError), -} - -async fn robust_operation() -> Result { - let timeout = Duration::from_secs(5); - - let result = tokio::time::timeout(timeout, async { - reqwest::get("https://api.example.com") - .await? - .text() - .await - }) - .await - .map_err(|_| AsyncError::Timeout)??; - - Ok(result) -} -``` - -## Runtime Configuration - -```rust -// Custom runtime configuration -fn main() { - let runtime = tokio::runtime::Builder::new_multi_thread() - .worker_threads(4) - .thread_name("my-worker") - .thread_stack_size(3 * 1024 * 1024) - .enable_all() - .build() - .unwrap(); - - runtime.block_on(async { - println!("Running on custom runtime"); - }); -} - -// Current-thread runtime (single-threaded) -fn single_threaded() { - let runtime = tokio::runtime::Builder::new_current_thread() - .enable_all() - .build() - .unwrap(); - - runtime.block_on(async { - println!("Single-threaded async"); - }); -} -``` - -## Best Practices - -- Use tokio::spawn for CPU-bound tasks on multi-threaded runtime -- Use spawn_blocking for blocking operations (file I/O, sync code) -- Prefer tokio::sync primitives over std::sync in async code -- Use channels for task communication instead of shared state when possible -- Always handle JoinHandle results (tasks can panic) -- Use select! for cancellation patterns -- Avoid holding locks across .await points -- Use timeout for all external I/O operations -- Implement graceful shutdown with channels -- Use async-trait for trait-based async code -- Prefer try_join! over manual error handling -- Use Arc> sparingly (channels often better) -- Test async code with tokio::test macro -- Monitor task spawning to prevent unbounded growth diff --git a/skills/rust-engineer/references/error-handling.md b/skills/rust-engineer/references/error-handling.md deleted file mode 100644 index 7d4a121..0000000 --- a/skills/rust-engineer/references/error-handling.md +++ /dev/null @@ -1,334 +0,0 @@ -# Error Handling in Rust - -## Result and Option Basics - -```rust -// Result: operation that can fail -fn divide(a: f64, b: f64) -> Result { - if b == 0.0 { - Err("Division by zero".to_string()) - } else { - Ok(a / b) - } -} - -// Option: value that might be absent -fn find_user(id: u64) -> Option { - if id == 1 { - Some(User { id, name: "Alice".to_string() }) - } else { - None - } -} - -// Using ? operator for propagation -fn calculate(a: f64, b: f64, c: f64) -> Result { - let x = divide(a, b)?; // Returns Err early if division fails - let y = divide(x, c)?; - Ok(y) -} -``` - -## Custom Error Types - -```rust -use std::fmt; - -// Manual error type -#[derive(Debug)] -enum AppError { - NotFound(String), - InvalidInput(String), - DatabaseError(String), -} - -impl fmt::Display for AppError { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match self { - AppError::NotFound(msg) => write!(f, "Not found: {}", msg), - AppError::InvalidInput(msg) => write!(f, "Invalid input: {}", msg), - AppError::DatabaseError(msg) => write!(f, "Database error: {}", msg), - } - } -} - -impl std::error::Error for AppError {} - -// Usage -fn get_user(id: u64) -> Result { - if id == 0 { - return Err(AppError::InvalidInput("ID cannot be zero".to_string())); - } - // ... fetch user - Err(AppError::NotFound(format!("User {} not found", id))) -} -``` - -## Using thiserror - -```rust -use thiserror::Error; - -#[derive(Error, Debug)] -enum DataError { - #[error("Data not found: {0}")] - NotFound(String), - - #[error("Invalid ID: {id}, reason: {reason}")] - InvalidId { id: u64, reason: String }, - - #[error("IO error")] - Io(#[from] std::io::Error), - - #[error("Parse error")] - Parse(#[from] std::num::ParseIntError), - - #[error("Database error: {0}")] - Database(#[from] sqlx::Error), -} - -// Usage with automatic conversions -fn read_config(path: &str) -> Result { - let content = std::fs::read_to_string(path)?; // Auto-converts io::Error - let port: u16 = content.parse()?; // Auto-converts ParseIntError - Ok(Config { port }) -} -``` - -## Using anyhow for Applications - -```rust -use anyhow::{Result, Context, bail, ensure}; - -// Simple error handling for applications -fn process_file(path: &str) -> Result<()> { - let content = std::fs::read_to_string(path) - .context(format!("Failed to read file: {}", path))?; - - ensure!(!content.is_empty(), "File is empty"); - - if content.len() > 1000 { - bail!("File too large"); - } - - // Process content... - Ok(()) -} - -// Adding context to errors -fn main() -> Result<()> { - process_file("config.txt") - .context("Failed to process configuration")?; - Ok(()) -} -``` - -## Option Combinators - -```rust -// map: transform Option to Option -let num: Option = Some(5); -let doubled = num.map(|n| n * 2); // Some(10) - -// and_then: chain operations -let result = Some(5) - .and_then(|n| if n > 0 { Some(n * 2) } else { None }) - .and_then(|n| Some(n + 1)); // Some(11) - -// or: provide alternative -let value = None.or(Some(42)); // Some(42) - -// unwrap_or: provide default -let value = None.unwrap_or(42); // 42 - -// unwrap_or_else: compute default lazily -let value = None.unwrap_or_else(|| expensive_computation()); - -// filter: conditional None -let num = Some(5).filter(|&n| n > 10); // None - -// Pattern matching -match find_user(1) { - Some(user) => println!("Found: {}", user.name), - None => println!("User not found"), -} - -// if let for simple cases -if let Some(user) = find_user(1) { - println!("Found: {}", user.name); -} -``` - -## Result Combinators - -```rust -// map: transform Ok value -let result: Result = Ok(5); -let doubled = result.map(|n| n * 2); // Ok(10) - -// map_err: transform error -let result: Result = Err("error"); -let mapped = result.map_err(|e| e.to_uppercase()); // Err("ERROR") - -// and_then: chain fallible operations -fn parse_then_double(s: &str) -> Result { - s.parse::() - .and_then(|n| Ok(n * 2)) -} - -// or_else: provide alternative computation -let result = Err("error").or_else(|_| Ok(42)); // Ok(42) - -// unwrap_or: provide default -let value = Err("error").unwrap_or(42); // 42 - -// expect: unwrap with custom panic message -let value = result.expect("Failed to parse number"); - -// Pattern matching -match divide(10.0, 2.0) { - Ok(result) => println!("Result: {}", result), - Err(e) => eprintln!("Error: {}", e), -} -``` - -## Error Conversion and From Trait - -```rust -use std::io; -use std::num::ParseIntError; - -#[derive(Debug)] -enum MyError { - Io(io::Error), - Parse(ParseIntError), -} - -impl From for MyError { - fn from(err: io::Error) -> Self { - MyError::Io(err) - } -} - -impl From for MyError { - fn from(err: ParseIntError) -> Self { - MyError::Parse(err) - } -} - -// Now ? operator works with automatic conversion -fn read_and_parse(path: &str) -> Result { - let content = std::fs::read_to_string(path)?; // io::Error -> MyError - let number = content.trim().parse()?; // ParseIntError -> MyError - Ok(number) -} -``` - -## Advanced Error Patterns - -```rust -// Multiple error sources with Box -use std::error::Error; - -fn complex_operation() -> Result> { - let file = std::fs::read_to_string("data.txt")?; - let number: i32 = file.trim().parse()?; - Ok(format!("Number: {}", number)) -} - -// Error with backtrace (nightly) -#[derive(Debug)] -struct DetailedError { - message: String, - backtrace: std::backtrace::Backtrace, -} - -impl DetailedError { - fn new(message: impl Into) -> Self { - Self { - message: message.into(), - backtrace: std::backtrace::Backtrace::capture(), - } - } -} - -// Recoverable vs unrecoverable errors -fn might_fail(value: i32) -> Result { - if value < 0 { - Err("Negative value".to_string()) // Recoverable - } else if value > 1000 { - panic!("Value too large!"); // Unrecoverable - } else { - Ok(value * 2) - } -} -``` - -## Try Blocks (Nightly) - -```rust -#![feature(try_blocks)] - -// Try block for localized error handling -let result: Result> = try { - let file = std::fs::read_to_string("config.txt")?; - let num: i32 = file.trim().parse()?; - num * 2 -}; -``` - -## Error Context Pattern - -```rust -use thiserror::Error; - -#[derive(Error, Debug)] -#[error("{message}")] -struct ContextError { - message: String, - #[source] - source: Option>, -} - -impl ContextError { - fn new(message: impl Into) -> Self { - Self { - message: message.into(), - source: None, - } - } - - fn with_source(mut self, source: impl Error + Send + Sync + 'static) -> Self { - self.source = Some(Box::new(source)); - self - } -} - -// Extension trait for adding context -trait Context { - fn context(self, message: impl Into) -> Result; -} - -impl Context for Result { - fn context(self, message: impl Into) -> Result { - self.map_err(|e| ContextError::new(message).with_source(e)) - } -} -``` - -## Best Practices - -- Use Result for recoverable errors, panic! for unrecoverable bugs -- Prefer ? operator over unwrap() in production code -- Use expect() with descriptive messages instead of unwrap() -- Use thiserror for libraries (structured errors) -- Use anyhow for applications (simple error handling) -- Implement std::error::Error trait for custom error types -- Add context to errors as they propagate up the stack -- Use #[from] in thiserror for automatic conversions -- Document error conditions in function documentation -- Use Option::ok_or() to convert Option to Result -- Use Result::ok() to convert Result to Option (discarding error) -- Avoid String as error type (use custom types instead) -- Use ensure! and bail! from anyhow for cleaner checks -- Log errors at boundaries, return them in library code diff --git a/skills/rust-engineer/references/ownership.md b/skills/rust-engineer/references/ownership.md deleted file mode 100644 index dc1fcb9..0000000 --- a/skills/rust-engineer/references/ownership.md +++ /dev/null @@ -1,278 +0,0 @@ -# Ownership, Borrowing, and Lifetimes - -## Ownership Patterns - -```rust -// Move semantics (ownership transfer) -fn take_ownership(s: String) { - println!("{}", s); -} // s dropped here - -// Borrowing (immutable reference) -fn borrow(s: &String) { - println!("{}", s); -} // s NOT dropped, caller still owns - -// Mutable borrowing -fn borrow_mut(s: &mut String) { - s.push_str(" world"); -} - -// Usage -let s = String::from("hello"); -borrow(&s); // OK, immutable borrow -let mut s2 = s; // Move, s no longer valid -borrow_mut(&mut s2); // OK, mutable borrow -``` - -## Lifetime Annotations - -```rust -// Explicit lifetime: returned reference lives as long as input -fn longest<'a>(x: &'a str, y: &'a str) -> &'a str { - if x.len() > y.len() { x } else { y } -} - -// Multiple lifetimes -fn first_word<'a, 'b>(s: &'a str, _other: &'b str) -> &'a str { - s.split_whitespace().next().unwrap_or("") -} - -// Lifetime in structs -struct Excerpt<'a> { - part: &'a str, -} - -impl<'a> Excerpt<'a> { - fn announce_and_return(&self, announcement: &str) -> &'a str { - println!("Attention: {}", announcement); - self.part - } -} - -// Static lifetime (lives for entire program) -const GREETING: &'static str = "Hello, world!"; -``` - -## Smart Pointers - -```rust -use std::rc::Rc; -use std::cell::RefCell; -use std::sync::{Arc, Mutex}; - -// Box: heap allocation, single owner -let b = Box::new(5); - -// Rc: reference counting (single-threaded) -let rc1 = Rc::new(vec![1, 2, 3]); -let rc2 = Rc::clone(&rc1); // Increment count -println!("Count: {}", Rc::strong_count(&rc1)); // 2 - -// Arc: atomic reference counting (thread-safe) -let arc1 = Arc::new(vec![1, 2, 3]); -let arc2 = Arc::clone(&arc1); -std::thread::spawn(move || { - println!("{:?}", arc2); -}); - -// RefCell: interior mutability (runtime borrow checking) -let data = RefCell::new(5); -*data.borrow_mut() += 1; // Mutable borrow at runtime - -// Combining Rc + RefCell for shared mutable state -let shared = Rc::new(RefCell::new(vec![1, 2, 3])); -shared.borrow_mut().push(4); - -// Combining Arc + Mutex for thread-safe shared state -let counter = Arc::new(Mutex::new(0)); -let counter_clone = Arc::clone(&counter); -std::thread::spawn(move || { - let mut num = counter_clone.lock().unwrap(); - *num += 1; -}); -``` - -## Interior Mutability - -```rust -use std::cell::{Cell, RefCell}; - -// Cell: Copy types only -let c = Cell::new(5); -c.set(10); -let val = c.get(); - -// RefCell: runtime borrow checking -let data = RefCell::new(vec![1, 2, 3]); -data.borrow_mut().push(4); - -// Pattern: mock objects with interior mutability -struct MockLogger { - messages: RefCell>, -} - -impl MockLogger { - fn new() -> Self { - Self { messages: RefCell::new(Vec::new()) } - } - - fn log(&self, msg: &str) { - self.messages.borrow_mut().push(msg.to_string()); - } - - fn get_messages(&self) -> Vec { - self.messages.borrow().clone() - } -} -``` - -## Pin and Self-Referential Types - -```rust -use std::pin::Pin; -use std::marker::PhantomPinned; - -// Self-referential struct (requires Pin) -struct SelfReferential { - data: String, - pointer: *const String, - _pin: PhantomPinned, -} - -impl SelfReferential { - fn new(data: String) -> Pin> { - let mut boxed = Box::pin(Self { - data, - pointer: std::ptr::null(), - _pin: PhantomPinned, - }); - - // Safe: we're not moving the data after this - let ptr = &boxed.data as *const String; - unsafe { - let mut_ref = Pin::as_mut(&mut boxed); - Pin::get_unchecked_mut(mut_ref).pointer = ptr; - } - - boxed - } -} - -// Pin in async contexts -async fn pinned_future() { - // Futures are often self-referential, hence Pin - let fut = async { 42 }; - let pinned = Box::pin(fut); - pinned.await; -} -``` - -## Cow (Clone on Write) - -```rust -use std::borrow::Cow; - -fn process_text(input: &str) -> Cow { - if input.contains("bad") { - // Need to modify: allocate new String - Cow::Owned(input.replace("bad", "good")) - } else { - // No modification needed: just borrow - Cow::Borrowed(input) - } -} - -// Usage -let text1 = "hello world"; -let result1 = process_text(text1); // Borrowed (no allocation) - -let text2 = "bad word"; -let result2 = process_text(text2); // Owned (allocated) -``` - -## Drop Trait and RAII - -```rust -struct FileGuard { - name: String, -} - -impl FileGuard { - fn new(name: String) -> Self { - println!("Opening {}", name); - Self { name } - } -} - -impl Drop for FileGuard { - fn drop(&mut self) { - println!("Closing {}", self.name); - } -} - -// Usage: automatic cleanup -{ - let _file = FileGuard::new("data.txt".to_string()); - // Use file... -} // Drop called automatically here -``` - -## Common Patterns - -```rust -// Builder pattern with ownership -struct Config { - host: String, - port: u16, -} - -impl Config { - fn builder() -> ConfigBuilder { - ConfigBuilder::default() - } -} - -struct ConfigBuilder { - host: Option, - port: Option, -} - -impl ConfigBuilder { - fn host(mut self, host: impl Into) -> Self { - self.host = Some(host.into()); - self - } - - fn port(mut self, port: u16) -> Self { - self.port = Some(port); - self - } - - fn build(self) -> Result { - Ok(Config { - host: self.host.ok_or("host required")?, - port: self.port.unwrap_or(8080), - }) - } -} - -// Usage -let config = Config::builder() - .host("localhost") - .port(3000) - .build()?; -``` - -## Best Practices - -- Prefer borrowing (&T) over ownership transfer when possible -- Use &str over String for function parameters -- Use &[T] over Vec for function parameters -- Clone only when necessary (profile first) -- Use Cow<'a, T> for conditional cloning -- Document lifetime relationships in complex cases -- Use Arc> for shared mutable state across threads -- Use Rc> for shared mutable state in single thread -- Implement Drop for RAII patterns -- Use PhantomData to constrain variance when needed diff --git a/skills/rust-engineer/references/testing.md b/skills/rust-engineer/references/testing.md deleted file mode 100644 index 961f35f..0000000 --- a/skills/rust-engineer/references/testing.md +++ /dev/null @@ -1,470 +0,0 @@ -# Testing in Rust - -## Unit Tests - -```rust -// Tests in same file -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_addition() { - assert_eq!(2 + 2, 4); - } - - #[test] - fn test_subtraction() { - assert!(10 - 5 == 5); - } - - #[test] - #[should_panic(expected = "division by zero")] - fn test_panic() { - divide(10, 0); - } - - #[test] - fn test_result() -> Result<(), String> { - let result = divide(10, 2)?; - assert_eq!(result, 5); - Ok(()) - } - - #[test] - #[ignore] - fn expensive_test() { - // Run with: cargo test -- --ignored - } -} - -// Assertions -fn assert_examples() { - assert!(true); - assert_eq!(2 + 2, 4); - assert_ne!(2 + 2, 5); - - // Custom messages - assert!(value > 0, "Value must be positive, got {}", value); - assert_eq!(result, expected, "Calculation failed"); -} -``` - -## Doctests - -```rust -/// Adds two numbers together. -/// -/// # Examples -/// -/// ``` -/// use mylib::add; -/// -/// let result = add(2, 3); -/// assert_eq!(result, 5); -/// ``` -/// -/// ```should_panic -/// use mylib::divide; -/// -/// divide(10, 0); // This will panic -/// ``` -/// -/// ```ignore -/// // This code won't compile but won't fail the test -/// let x = undefined_function(); -/// ``` -pub fn add(a: i32, b: i32) -> i32 { - a + b -} -``` - -## Integration Tests - -```rust -// tests/integration_test.rs -use mylib; - -#[test] -fn test_full_workflow() { - let config = mylib::Config::new("test.conf"); - let result = mylib::process(&config); - assert!(result.is_ok()); -} - -// tests/common/mod.rs - shared test utilities -pub fn setup() -> TestContext { - TestContext { - db: create_test_db(), - } -} - -// tests/another_test.rs -mod common; - -#[test] -fn test_with_common() { - let ctx = common::setup(); - // Use ctx... -} -``` - -## Test Organization - -```rust -// Nested test modules -#[cfg(test)] -mod tests { - use super::*; - - mod addition { - use super::*; - - #[test] - fn positive_numbers() { - assert_eq!(add(2, 3), 5); - } - - #[test] - fn negative_numbers() { - assert_eq!(add(-2, -3), -5); - } - } - - mod subtraction { - use super::*; - - #[test] - fn test_subtract() { - assert_eq!(subtract(10, 5), 5); - } - } -} -``` - -## Test Fixtures and Setup - -```rust -struct TestContext { - temp_dir: std::path::PathBuf, - db: Database, -} - -impl TestContext { - fn setup() -> Self { - let temp_dir = std::env::temp_dir().join("test"); - std::fs::create_dir_all(&temp_dir).unwrap(); - - Self { - temp_dir, - db: Database::connect_test(), - } - } -} - -impl Drop for TestContext { - fn drop(&mut self) { - // Cleanup - std::fs::remove_dir_all(&self.temp_dir).ok(); - self.db.disconnect(); - } -} - -#[test] -fn test_with_fixture() { - let ctx = TestContext::setup(); - // Test uses ctx... - // Automatic cleanup via Drop -} -``` - -## Async Tests - -```rust -use tokio; - -#[tokio::test] -async fn test_async_function() { - let result = async_operation().await; - assert_eq!(result, 42); -} - -#[tokio::test(flavor = "multi_thread", worker_threads = 2)] -async fn test_with_custom_runtime() { - let result = concurrent_operation().await; - assert!(result.is_ok()); -} - -// Testing async with timeout -#[tokio::test] -async fn test_with_timeout() { - let timeout = std::time::Duration::from_secs(5); - let result = tokio::time::timeout(timeout, slow_operation()).await; - assert!(result.is_ok()); -} -``` - -## Property-Based Testing (proptest) - -```rust -use proptest::prelude::*; - -// Simple property test -proptest! { - #[test] - fn test_reversing_twice_is_identity(ref s in ".*") { - let reversed: String = s.chars().rev().collect(); - let double_reversed: String = reversed.chars().rev().collect(); - assert_eq!(s, &double_reversed); - } -} - -// Custom strategies -proptest! { - #[test] - fn test_addition_commutative(a in 0..1000i32, b in 0..1000i32) { - assert_eq!(a + b, b + a); - } - - #[test] - fn test_vector_push_pop( - ref v in prop::collection::vec(0..100i32, 0..100), - item in 0..100i32 - ) { - let mut v = v.clone(); - v.push(item); - assert_eq!(v.pop(), Some(item)); - } -} - -// Complex custom strategies -fn user_strategy() -> impl Strategy { - (1..1000u64, "[a-z]{3,10}", "[a-z0-9.]+@[a-z]+\\.[a-z]+") - .prop_map(|(id, name, email)| User { id, name, email }) -} - -proptest! { - #[test] - fn test_user_serialization(user in user_strategy()) { - let json = serde_json::to_string(&user).unwrap(); - let deserialized: User = serde_json::from_str(&json).unwrap(); - assert_eq!(user, deserialized); - } -} -``` - -## Mocking - -```rust -// Using mockall -use mockall::*; -use mockall::predicate::*; - -#[automock] -trait Database { - fn get_user(&self, id: u64) -> Option; - fn save_user(&mut self, user: User) -> Result<(), Error>; -} - -#[test] -fn test_with_mock() { - let mut mock = MockDatabase::new(); - - mock.expect_get_user() - .with(eq(1)) - .times(1) - .returning(|_| Some(User { id: 1, name: "Alice".to_string() })); - - mock.expect_save_user() - .times(1) - .returning(|_| Ok(())); - - // Use mock in test - let user = mock.get_user(1); - assert!(user.is_some()); -} -``` - -## Benchmarks (Criterion) - -```rust -// benches/my_benchmark.rs -use criterion::{black_box, criterion_group, criterion_main, Criterion}; - -fn fibonacci(n: u64) -> u64 { - match n { - 0 => 1, - 1 => 1, - n => fibonacci(n - 1) + fibonacci(n - 2), - } -} - -fn criterion_benchmark(c: &mut Criterion) { - c.bench_function("fib 20", |b| b.iter(|| fibonacci(black_box(20)))); -} - -criterion_group!(benches, criterion_benchmark); -criterion_main!(benches); - -// Cargo.toml: -// [dev-dependencies] -// criterion = "0.5" -// -// [[bench]] -// name = "my_benchmark" -// harness = false -``` - -## Advanced Benchmarking - -```rust -use criterion::{BenchmarkId, Criterion, criterion_group, criterion_main}; - -fn bench_multiple_sizes(c: &mut Criterion) { - let mut group = c.benchmark_group("sorting"); - - for size in [10, 100, 1000, 10000].iter() { - group.bench_with_input(BenchmarkId::from_parameter(size), size, |b, &size| { - b.iter_batched( - || generate_random_vec(size), - |mut v| v.sort(), - criterion::BatchSize::SmallInput, - ); - }); - } - - group.finish(); -} - -// Comparing implementations -fn bench_comparison(c: &mut Criterion) { - let mut group = c.benchmark_group("string_search"); - - group.bench_function("naive", |b| { - b.iter(|| naive_search(black_box("haystack"), black_box("needle"))) - }); - - group.bench_function("optimized", |b| { - b.iter(|| optimized_search(black_box("haystack"), black_box("needle"))) - }); - - group.finish(); -} - -criterion_group!(benches, bench_multiple_sizes, bench_comparison); -criterion_main!(benches); -``` - -## Testing with External Resources - -```rust -// Testing file I/O -#[test] -fn test_file_operations() { - use std::io::Write; - - let temp_dir = std::env::temp_dir(); - let file_path = temp_dir.join("test_file.txt"); - - // Write - let mut file = std::fs::File::create(&file_path).unwrap(); - file.write_all(b"test content").unwrap(); - - // Read - let content = std::fs::read_to_string(&file_path).unwrap(); - assert_eq!(content, "test content"); - - // Cleanup - std::fs::remove_file(&file_path).unwrap(); -} - -// Testing with databases (using sqlx) -#[sqlx::test] -async fn test_database_operations(pool: sqlx::PgPool) -> sqlx::Result<()> { - sqlx::query("INSERT INTO users (name) VALUES ($1)") - .bind("Alice") - .execute(&pool) - .await?; - - let count: (i64,) = sqlx::query_as("SELECT COUNT(*) FROM users") - .fetch_one(&pool) - .await?; - - assert_eq!(count.0, 1); - Ok(()) -} -``` - -## Snapshot Testing - -```rust -// Using insta crate -use insta::assert_snapshot; - -#[test] -fn test_output_format() { - let data = generate_complex_output(); - assert_snapshot!(data); -} - -#[test] -fn test_json_output() { - let json = serde_json::to_string_pretty(&get_data()).unwrap(); - assert_snapshot!(json); -} - -// Run with: cargo insta test -// Review snapshots: cargo insta review -``` - -## Code Coverage - -```rust -// Using tarpaulin -// cargo install cargo-tarpaulin -// cargo tarpaulin --out Html --output-dir coverage - -// Using llvm-cov -// cargo install cargo-llvm-cov -// cargo llvm-cov --html -``` - -## Fuzzing - -```rust -// Using cargo-fuzz -// cargo install cargo-fuzz -// cargo fuzz init - -// fuzz/fuzz_targets/fuzz_target_1.rs -#![no_main] -use libfuzzer_sys::fuzz_target; - -fuzz_target!(|data: &[u8]| { - if let Ok(s) = std::str::from_utf8(data) { - let _ = mylib::parse_input(s); - } -}); - -// Run with: cargo fuzz run fuzz_target_1 -``` - -## Best Practices - -- Write tests alongside production code in #[cfg(test)] modules -- Use integration tests in tests/ directory for end-to-end testing -- Include doctests in documentation for examples that must work -- Use descriptive test names that explain what is being tested -- Test edge cases (empty inputs, max values, etc.) -- Use property-based testing for algorithmic code -- Benchmark performance-critical code with criterion -- Run tests in CI with cargo test --all-features -- Use cargo test -- --nocapture to see println! output -- Test error conditions with #[should_panic] or Result -- Mock external dependencies for unit tests -- Use test fixtures for complex setup/teardown -- Run clippy on test code too -- Measure code coverage and aim for high coverage -- Use fuzzing for security-critical parsers -- Test async code with tokio::test -- Use snapshot testing for complex output validation diff --git a/skills/rust-engineer/references/traits.md b/skills/rust-engineer/references/traits.md deleted file mode 100644 index 2881c8f..0000000 --- a/skills/rust-engineer/references/traits.md +++ /dev/null @@ -1,413 +0,0 @@ -# Traits, Generics, and Type System - -## Basic Trait Definition - -```rust -// Simple trait -trait Drawable { - fn draw(&self); -} - -// Trait with default implementation -trait Describable { - fn describe(&self) -> String { - String::from("No description available") - } -} - -// Implementing traits -struct Circle { - radius: f64, -} - -impl Drawable for Circle { - fn draw(&self) { - println!("Drawing circle with radius {}", self.radius); - } -} - -impl Describable for Circle { - fn describe(&self) -> String { - format!("A circle with radius {}", self.radius) - } -} -``` - -## Associated Types - -```rust -// Associated types vs generic parameters -trait Container { - type Item; - - fn add(&mut self, item: Self::Item); - fn get(&self, index: usize) -> Option<&Self::Item>; -} - -impl Container for Vec { - type Item = i32; - - fn add(&mut self, item: i32) { - self.push(item); - } - - fn get(&self, index: usize) -> Option<&i32> { - self.get(index) - } -} - -// Iterator trait (standard library example) -trait MyIterator { - type Item; - - fn next(&mut self) -> Option; -} -``` - -## Generic Traits and Bounds - -```rust -// Generic trait with multiple bounds -fn print_info(item: &T) -where - T: std::fmt::Display + std::fmt::Debug, -{ - println!("Display: {}", item); - println!("Debug: {:?}", item); -} - -// Generic struct with trait bounds -struct Pair { - first: T, - second: T, -} - -impl Pair { - fn new(first: T, second: T) -> Self { - Self { first, second } - } - - fn larger(&self) -> &T { - if self.first > self.second { - &self.first - } else { - &self.second - } - } -} - -// Blanket implementation -trait MyTrait { - fn do_something(&self); -} - -impl MyTrait for T { - fn do_something(&self) { - println!("Value: {}", self); - } -} -``` - -## Trait Objects (Dynamic Dispatch) - -```rust -// Static dispatch (monomorphization) -fn static_dispatch(item: &T) { - item.draw(); -} - -// Dynamic dispatch (trait objects) -fn dynamic_dispatch(item: &dyn Drawable) { - item.draw(); -} - -// Storing trait objects -struct Canvas { - shapes: Vec>, -} - -impl Canvas { - fn new() -> Self { - Self { shapes: Vec::new() } - } - - fn add_shape(&mut self, shape: Box) { - self.shapes.push(shape); - } - - fn draw_all(&self) { - for shape in &self.shapes { - shape.draw(); - } - } -} - -// Object safety: traits must meet criteria -trait ObjectSafe { - fn method(&self); // OK: takes &self -} - -trait NotObjectSafe { - fn generic(&self); // NOT OK: generic method - fn by_value(self); // NOT OK: takes self by value -} -``` - -## Derive Macros - -```rust -// Standard derive macros -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -struct User { - id: u64, - name: String, -} - -// Deriving more traits -#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] -struct Point { - x: i32, - y: i32, -} - -// Custom derive with serde -use serde::{Deserialize, Serialize}; - -#[derive(Debug, Serialize, Deserialize)] -struct Config { - host: String, - port: u16, -} -``` - -## Advanced Trait Patterns - -```rust -// Extension trait pattern -trait StringExt { - fn truncate_to(&self, max_len: usize) -> String; -} - -impl StringExt for str { - fn truncate_to(&self, max_len: usize) -> String { - if self.len() <= max_len { - self.to_string() - } else { - format!("{}...", &self[..max_len]) - } - } -} - -// Sealed trait pattern (prevent external implementation) -mod sealed { - pub trait Sealed {} -} - -pub trait MySealed: sealed::Sealed { - fn method(&self); -} - -struct MyType; -impl sealed::Sealed for MyType {} -impl MySealed for MyType { - fn method(&self) { - println!("Implemented"); - } -} - -// Supertraits -trait Printable { - fn print(&self); -} - -trait Loggable: Printable { // Supertrait: must also impl Printable - fn log(&self) { - self.print(); // Can call supertrait methods - } -} -``` - -## Associated Constants - -```rust -trait Config { - const MAX_SIZE: usize; - const DEFAULT_TIMEOUT: u64; -} - -struct ServerConfig; - -impl Config for ServerConfig { - const MAX_SIZE: usize = 1024; - const DEFAULT_TIMEOUT: u64 = 30; -} - -fn use_config() { - println!("Max size: {}", T::MAX_SIZE); -} -``` - -## Generic Associated Types (GATs) - -```rust -// GATs allow generics in associated types -trait LendingIterator { - type Item<'a> where Self: 'a; - - fn next<'a>(&'a mut self) -> Option>; -} - -struct WindowsMut<'data, T> { - data: &'data mut [T], - index: usize, -} - -impl<'data, T> LendingIterator for WindowsMut<'data, T> { - type Item<'a> = &'a mut [T] where Self: 'a; - - fn next<'a>(&'a mut self) -> Option> { - if self.index >= self.data.len() { - return None; - } - - let start = self.index; - self.index += 2; - - Some(&mut self.data[start..start.min(self.data.len())]) - } -} -``` - -## Marker Traits - -```rust -use std::marker::{PhantomData, Send, Sync}; - -// Send: type can be transferred across thread boundaries -// Sync: type can be shared between threads (&T is Send) - -// Custom marker trait -trait Trusted {} - -struct TrustedData { - data: T, - _marker: PhantomData, -} - -impl TrustedData { - fn new(data: T) -> Self { - Self { - data, - _marker: PhantomData, - } - } -} -``` - -## Operator Overloading - -```rust -use std::ops::{Add, Mul}; - -#[derive(Debug, Clone, Copy)] -struct Vector2D { - x: f64, - y: f64, -} - -impl Add for Vector2D { - type Output = Self; - - fn add(self, other: Self) -> Self { - Self { - x: self.x + other.x, - y: self.y + other.y, - } - } -} - -impl Mul for Vector2D { - type Output = Self; - - fn mul(self, scalar: f64) -> Self { - Self { - x: self.x * scalar, - y: self.y * scalar, - } - } -} - -// Usage -let v1 = Vector2D { x: 1.0, y: 2.0 }; -let v2 = Vector2D { x: 3.0, y: 4.0 }; -let v3 = v1 + v2; -let v4 = v1 * 2.5; -``` - -## From/Into Conversion Traits - -```rust -struct UserId(u64); - -impl From for UserId { - fn from(id: u64) -> Self { - UserId(id) - } -} - -// Into is automatically implemented -fn accept_user_id(id: impl Into) { - let user_id = id.into(); - println!("User ID: {}", user_id.0); -} - -// TryFrom for fallible conversions -use std::convert::TryFrom; - -impl TryFrom for UserId { - type Error = &'static str; - - fn try_from(value: i64) -> Result { - if value < 0 { - Err("User ID cannot be negative") - } else { - Ok(UserId(value as u64)) - } - } -} -``` - -## Const Traits (Nightly) - -```rust -// Const trait implementations (requires nightly) -#![feature(const_trait_impl)] - -#[const_trait] -trait ConstAdd { - fn add(self, other: Self) -> Self; -} - -impl const ConstAdd for i32 { - fn add(self, other: Self) -> Self { - self + other - } -} - -const fn compute() -> i32 { - 5.add(10) // Can use in const context -} -``` - -## Best Practices - -- Prefer associated types when there's one clear type per implementation -- Use generic parameters when multiple types might be used simultaneously -- Keep traits small and focused (single responsibility) -- Use extension traits to add functionality to existing types -- Document trait requirements and invariants -- Use marker traits for compile-time guarantees -- Prefer static dispatch for performance, dynamic dispatch for flexibility -- Use #[derive] when possible instead of manual implementations -- Implement standard traits (Debug, Clone, etc.) for better ecosystem integration -- Use sealed traits to prevent external implementations when needed diff --git a/skills/setup-browser-cookies/SKILL.md b/skills/setup-browser-cookies/SKILL.md deleted file mode 100644 index ae82055..0000000 --- a/skills/setup-browser-cookies/SKILL.md +++ /dev/null @@ -1,252 +0,0 @@ ---- -name: setup-browser-cookies -version: 1.0.0 -description: | - Import cookies from your real browser (Comet, Chrome, Arc, Brave, Edge) into the - headless browse session. Opens an interactive picker UI where you select which - cookie domains to import. Use before QA testing authenticated pages. Use when asked - to "import cookies", "login to the site", or "authenticate the browser". -maturity: imported -allowed-tools: - - Bash - - Read - - AskUserQuestion ---- - - - -## Preamble (run first) - -```bash -_UPD=$(~/.claude/skills/gstack/bin/gstack-update-check 2>/dev/null || .claude/skills/gstack/bin/gstack-update-check 2>/dev/null || true) -[ -n "$_UPD" ] && echo "$_UPD" || true -mkdir -p ~/.gstack/sessions -touch ~/.gstack/sessions/"$PPID" -_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ') -find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true -_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true) -_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true") -_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown") -echo "BRANCH: $_BRANCH" -echo "PROACTIVE: $_PROACTIVE" -_LAKE_SEEN=$([ -f ~/.gstack/.completeness-intro-seen ] && echo "yes" || echo "no") -echo "LAKE_INTRO: $_LAKE_SEEN" -``` - -If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills — only invoke -them when the user explicitly asks. The user opted out of proactive suggestions. - -If output shows `UPGRADE_AVAILABLE `: read `~/.claude/skills/gstack/gstack-upgrade/SKILL.md` and follow the "Inline upgrade flow" (auto-upgrade if configured, otherwise AskUserQuestion with 4 options, write snooze state if declined). If `JUST_UPGRADED `: tell user "Running gstack v{to} (just updated!)" and continue. - -If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle. -Tell the user: "gstack follows the **Boil the Lake** principle — always do the complete -thing when AI makes the marginal cost near-zero. Read more: https://garryslist.org/posts/boil-the-ocean" -Then offer to open the essay in their default browser: - -```bash -open https://garryslist.org/posts/boil-the-ocean -touch ~/.gstack/.completeness-intro-seen -``` - -Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once. - - -## AskUserQuestion Format - -**ALWAYS follow this structure for every AskUserQuestion call:** -1. **Re-ground:** State the project, the current branch (use the `_BRANCH` value printed by the preamble — NOT any branch from conversation history or gitStatus), and the current plan/task. (1-2 sentences) -2. **Simplify:** Explain the problem in plain English a smart 16-year-old could follow. No raw function names, no internal jargon, no implementation details. Use concrete examples and analogies. Say what it DOES, not what it's called. -3. **Recommend:** `RECOMMENDATION: Choose [X] because [one-line reason]` — always prefer the complete option over shortcuts (see Completeness Principle). Include `Completeness: X/10` for each option. Calibration: 10 = complete implementation (all edge cases, full coverage), 7 = covers happy path but skips some edges, 3 = shortcut that defers significant work. If both options are 8+, pick the higher; if one is ≤5, flag it. -4. **Options:** Lettered options: `A) ... B) ... C) ...` — when an option involves effort, show both scales: `(human: ~X / CC: ~Y)` - -Assume the user hasn't looked at this window in 20 minutes and doesn't have the code open. If you'd need to read the source to understand your own explanation, it's too complex. - -Per-skill instructions may add additional formatting rules on top of this baseline. - -## Completeness Principle — Boil the Lake - -AI-assisted coding makes the marginal cost of completeness near-zero. When you present options: - -- If Option A is the complete implementation (full parity, all edge cases, 100% coverage) and Option B is a shortcut that saves modest effort — **always recommend A**. The delta between 80 lines and 150 lines is meaningless with CC+gstack. "Good enough" is the wrong instinct when "complete" costs minutes more. -- **Lake vs. ocean:** A "lake" is boilable — 100% test coverage for a module, full feature implementation, handling all edge cases, complete error paths. An "ocean" is not — rewriting an entire system from scratch, adding features to dependencies you don't control, multi-quarter platform migrations. Recommend boiling lakes. Flag oceans as out of scope. -- **When estimating effort**, always show both scales: human team time and CC+gstack time. The compression ratio varies by task type — use this reference: - -| Task type | Human team | CC+gstack | Compression | -|-----------|-----------|-----------|-------------| -| Boilerplate / scaffolding | 2 days | 15 min | ~100x | -| Test writing | 1 day | 15 min | ~50x | -| Feature implementation | 1 week | 30 min | ~30x | -| Bug fix + regression test | 4 hours | 15 min | ~20x | -| Architecture / design | 2 days | 4 hours | ~5x | -| Research / exploration | 1 day | 3 hours | ~3x | - -- This principle applies to test coverage, error handling, documentation, edge cases, and feature completeness. Don't skip the last 10% to "save time" — with AI, that 10% costs seconds. - -**Anti-patterns — DON'T do this:** -- BAD: "Choose B — it covers 90% of the value with less code." (If A is only 70 lines more, choose A.) -- BAD: "We can skip edge case handling to save time." (Edge case handling costs minutes with CC.) -- BAD: "Let's defer test coverage to a follow-up PR." (Tests are the cheapest lake to boil.) -- BAD: Quoting only human-team effort: "This would take 2 weeks." (Say: "2 weeks human / ~1 hour CC.") - -## Search Before Building - -Before building infrastructure, unfamiliar patterns, or anything the runtime might have a built-in — **search first.** Read `~/.claude/skills/gstack/ETHOS.md` for the full philosophy. - -**Three layers of knowledge:** -- **Layer 1** (tried and true — in distribution). Don't reinvent the wheel. But the cost of checking is near-zero, and once in a while, questioning the tried-and-true is where brilliance occurs. -- **Layer 2** (new and popular — search for these). But scrutinize: humans are subject to mania. Search results are inputs to your thinking, not answers. -- **Layer 3** (first principles — prize these above all). Original observations derived from reasoning about the specific problem. The most valuable of all. - -**Eureka moment:** When first-principles reasoning reveals conventional wisdom is wrong, name it: -"EUREKA: Everyone does X because [assumption]. But [evidence] shows this is wrong. Y is better because [reasoning]." - -Log eureka moments: -```bash -jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true -``` -Replace SKILL_NAME and ONE_LINE_SUMMARY. Runs inline — don't stop the workflow. - -**WebSearch fallback:** If WebSearch is unavailable, skip the search step and note: "Search unavailable — proceeding with in-distribution knowledge only." - -## Contributor Mode - -If `_CONTRIB` is `true`: you are in **contributor mode**. You're a gstack user who also helps make it better. - -**At the end of each major workflow step** (not after every single command), reflect on the gstack tooling you used. Rate your experience 0 to 10. If it wasn't a 10, think about why. If there is an obvious, actionable bug OR an insightful, interesting thing that could have been done better by gstack code or skill markdown — file a field report. Maybe our contributor will help make us better! - -**Calibration — this is the bar:** For example, `$B js "await fetch(...)"` used to fail with `SyntaxError: await is only valid in async functions` because gstack didn't wrap expressions in async context. Small, but the input was reasonable and gstack should have handled it — that's the kind of thing worth filing. Things less consequential than this, ignore. - -**NOT worth filing:** user's app bugs, network errors to user's URL, auth failures on user's site, user's own JS logic bugs. - -**To file:** write `~/.gstack/contributor-logs/{slug}.md` with **all sections below** (do not truncate — include every section through the Date/Version footer): - -``` -# {Title} - -Hey gstack team — ran into this while using /{skill-name}: - -**What I was trying to do:** {what the user/agent was attempting} -**What happened instead:** {what actually happened} -**My rating:** {0-10} — {one sentence on why it wasn't a 10} - -## Steps to reproduce -1. {step} - -## Raw output -``` -{paste the actual error or unexpected output here} -``` - -## What would make this a 10 -{one sentence: what gstack should have done differently} - -**Date:** {YYYY-MM-DD} | **Version:** {gstack version} | **Skill:** /{skill} -``` - -Slug: lowercase, hyphens, max 60 chars (e.g. `browse-js-no-await`). Skip if file already exists. Max 3 reports per session. File inline and continue — don't stop the workflow. Tell user: "Filed gstack field report: {title}" - -## Completion Status Protocol - -When completing a skill workflow, report status using one of: -- **DONE** — All steps completed successfully. Evidence provided for each claim. -- **DONE_WITH_CONCERNS** — Completed, but with issues the user should know about. List each concern. -- **BLOCKED** — Cannot proceed. State what is blocking and what was tried. -- **NEEDS_CONTEXT** — Missing information required to continue. State exactly what you need. - -### Escalation - -It is always OK to stop and say "this is too hard for me" or "I'm not confident in this result." - -Bad work is worse than no work. You will not be penalized for escalating. -- If you have attempted a task 3 times without success, STOP and escalate. -- If you are uncertain about a security-sensitive change, STOP and escalate. -- If the scope of work exceeds what you can verify, STOP and escalate. - -Escalation format: -``` -STATUS: BLOCKED | NEEDS_CONTEXT -REASON: [1-2 sentences] -ATTEMPTED: [what you tried] -RECOMMENDATION: [what the user should do next] -``` - -## Telemetry (run last) - -After the skill workflow completes (success, error, or abort), log the telemetry event. -Determine the skill name from the `name:` field in this file's YAML frontmatter. - -# Setup Browser Cookies - -Import logged-in sessions from your real Chromium browser into the headless browse session. - -## How it works - -1. Find the browse binary -2. Run `cookie-import-browser` to detect installed browsers and open the picker UI -3. User selects which cookie domains to import in their browser -4. Cookies are decrypted and loaded into the Playwright session - -## Steps - -### 1. Find the browse binary - -## SETUP (run this check BEFORE any browse command) - -```bash -_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) -B="" -[ -n "$_ROOT" ] && [ -x "$_ROOT/.claude/skills/gstack/browse/dist/browse" ] && B="$_ROOT/.claude/skills/gstack/browse/dist/browse" -[ -z "$B" ] && B=~/.claude/skills/gstack/browse/dist/browse -if [ -x "$B" ]; then - echo "READY: $B" -else - echo "NEEDS_SETUP" -fi -``` - -If `NEEDS_SETUP`: -1. Tell the user: "gstack browse needs a one-time build (~10 seconds). OK to proceed?" Then STOP and wait. -2. Run: `cd && ./setup` -3. If `bun` is not installed: `curl -fsSL https://bun.sh/install | bash` - -### 2. Open the cookie picker - -```bash -$B cookie-import-browser -``` - -This auto-detects installed Chromium browsers (Comet, Chrome, Arc, Brave, Edge) and opens -an interactive picker UI in your default browser where you can: -- Switch between installed browsers -- Search domains -- Click "+" to import a domain's cookies -- Click trash to remove imported cookies - -Tell the user: **"Cookie picker opened — select the domains you want to import in your browser, then tell me when you're done."** - -### 3. Direct import (alternative) - -If the user specifies a domain directly (e.g., `/setup-browser-cookies github.com`), skip the UI: - -```bash -$B cookie-import-browser comet --domain github.com -``` - -Replace `comet` with the appropriate browser if specified. - -### 4. Verify - -After the user confirms they're done: - -```bash -$B cookies -``` - -Show the user a summary of imported cookies (domain counts). - -## Notes - -- First import per browser may trigger a macOS Keychain dialog — click "Allow" / "Always Allow" -- Cookie picker is served on the same port as the browse server (no extra process) -- Only domain names and cookie counts are shown in the UI — no cookie values are exposed -- The browse session persists cookies between commands, so imported cookies work immediately diff --git a/skills/setup-browser-cookies/SKILL.md.tmpl b/skills/setup-browser-cookies/SKILL.md.tmpl deleted file mode 100644 index 850f439..0000000 --- a/skills/setup-browser-cookies/SKILL.md.tmpl +++ /dev/null @@ -1,74 +0,0 @@ ---- -name: setup-browser-cookies -version: 1.0.0 -description: | - Import cookies from your real browser (Comet, Chrome, Arc, Brave, Edge) into the - headless browse session. Opens an interactive picker UI where you select which - cookie domains to import. Use before QA testing authenticated pages. Use when asked - to "import cookies", "login to the site", or "authenticate the browser". -allowed-tools: - - Bash - - Read - - AskUserQuestion ---- - -{{PREAMBLE}} - -# Setup Browser Cookies - -Import logged-in sessions from your real Chromium browser into the headless browse session. - -## How it works - -1. Find the browse binary -2. Run `cookie-import-browser` to detect installed browsers and open the picker UI -3. User selects which cookie domains to import in their browser -4. Cookies are decrypted and loaded into the Playwright session - -## Steps - -### 1. Find the browse binary - -{{BROWSE_SETUP}} - -### 2. Open the cookie picker - -```bash -$B cookie-import-browser -``` - -This auto-detects installed Chromium browsers (Comet, Chrome, Arc, Brave, Edge) and opens -an interactive picker UI in your default browser where you can: -- Switch between installed browsers -- Search domains -- Click "+" to import a domain's cookies -- Click trash to remove imported cookies - -Tell the user: **"Cookie picker opened — select the domains you want to import in your browser, then tell me when you're done."** - -### 3. Direct import (alternative) - -If the user specifies a domain directly (e.g., `/setup-browser-cookies github.com`), skip the UI: - -```bash -$B cookie-import-browser comet --domain github.com -``` - -Replace `comet` with the appropriate browser if specified. - -### 4. Verify - -After the user confirms they're done: - -```bash -$B cookies -``` - -Show the user a summary of imported cookies (domain counts). - -## Notes - -- First import per browser may trigger a macOS Keychain dialog — click "Allow" / "Always Allow" -- Cookie picker is served on the same port as the browse server (no extra process) -- Only domain names and cookie counts are shown in the UI — no cookie values are exposed -- The browse session persists cookies between commands, so imported cookies work immediately diff --git a/skills/setup-deploy/SKILL.md b/skills/setup-deploy/SKILL.md deleted file mode 100644 index 2f0fefc..0000000 --- a/skills/setup-deploy/SKILL.md +++ /dev/null @@ -1,381 +0,0 @@ ---- -name: setup-deploy -version: 1.0.0 -description: | - Configure deployment settings for /land-and-deploy. Detects your deploy - platform (Fly.io, Render, Vercel, Netlify, Heroku, GitHub Actions, custom), - production URL, health check endpoints, and deploy status commands. Writes - the configuration to CLAUDE.md so all future deploys are automatic. - Use when: "setup deploy", "configure deployment", "set up land-and-deploy", - "how do I deploy with gstack", "add deploy config". -maturity: imported -allowed-tools: - - Bash - - Read - - Write - - Edit - - Glob - - Grep - - AskUserQuestion ---- - - - -## Preamble (run first) - -```bash -_UPD=$(~/.claude/skills/gstack/bin/gstack-update-check 2>/dev/null || .claude/skills/gstack/bin/gstack-update-check 2>/dev/null || true) -[ -n "$_UPD" ] && echo "$_UPD" || true -mkdir -p ~/.gstack/sessions -touch ~/.gstack/sessions/"$PPID" -_SESSIONS=$(find ~/.gstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ') -find ~/.gstack/sessions -mmin +120 -type f -delete 2>/dev/null || true -_CONTRIB=$(~/.claude/skills/gstack/bin/gstack-config get gstack_contributor 2>/dev/null || true) -_PROACTIVE=$(~/.claude/skills/gstack/bin/gstack-config get proactive 2>/dev/null || echo "true") -_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown") -echo "BRANCH: $_BRANCH" -echo "PROACTIVE: $_PROACTIVE" -_LAKE_SEEN=$([ -f ~/.gstack/.completeness-intro-seen ] && echo "yes" || echo "no") -echo "LAKE_INTRO: $_LAKE_SEEN" -``` - -If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills — only invoke -them when the user explicitly asks. The user opted out of proactive suggestions. - -If output shows `UPGRADE_AVAILABLE `: read `~/.claude/skills/gstack/gstack-upgrade/SKILL.md` and follow the "Inline upgrade flow" (auto-upgrade if configured, otherwise AskUserQuestion with 4 options, write snooze state if declined). If `JUST_UPGRADED `: tell user "Running gstack v{to} (just updated!)" and continue. - -If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle. -Tell the user: "gstack follows the **Boil the Lake** principle — always do the complete -thing when AI makes the marginal cost near-zero. Read more: https://garryslist.org/posts/boil-the-ocean" -Then offer to open the essay in their default browser: - -```bash -open https://garryslist.org/posts/boil-the-ocean -touch ~/.gstack/.completeness-intro-seen -``` - -Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once. - - -## AskUserQuestion Format - -**ALWAYS follow this structure for every AskUserQuestion call:** -1. **Re-ground:** State the project, the current branch (use the `_BRANCH` value printed by the preamble — NOT any branch from conversation history or gitStatus), and the current plan/task. (1-2 sentences) -2. **Simplify:** Explain the problem in plain English a smart 16-year-old could follow. No raw function names, no internal jargon, no implementation details. Use concrete examples and analogies. Say what it DOES, not what it's called. -3. **Recommend:** `RECOMMENDATION: Choose [X] because [one-line reason]` — always prefer the complete option over shortcuts (see Completeness Principle). Include `Completeness: X/10` for each option. Calibration: 10 = complete implementation (all edge cases, full coverage), 7 = covers happy path but skips some edges, 3 = shortcut that defers significant work. If both options are 8+, pick the higher; if one is ≤5, flag it. -4. **Options:** Lettered options: `A) ... B) ... C) ...` — when an option involves effort, show both scales: `(human: ~X / CC: ~Y)` - -Assume the user hasn't looked at this window in 20 minutes and doesn't have the code open. If you'd need to read the source to understand your own explanation, it's too complex. - -Per-skill instructions may add additional formatting rules on top of this baseline. - -## Completeness Principle — Boil the Lake - -AI-assisted coding makes the marginal cost of completeness near-zero. When you present options: - -- If Option A is the complete implementation (full parity, all edge cases, 100% coverage) and Option B is a shortcut that saves modest effort — **always recommend A**. The delta between 80 lines and 150 lines is meaningless with CC+gstack. "Good enough" is the wrong instinct when "complete" costs minutes more. -- **Lake vs. ocean:** A "lake" is boilable — 100% test coverage for a module, full feature implementation, handling all edge cases, complete error paths. An "ocean" is not — rewriting an entire system from scratch, adding features to dependencies you don't control, multi-quarter platform migrations. Recommend boiling lakes. Flag oceans as out of scope. -- **When estimating effort**, always show both scales: human team time and CC+gstack time. The compression ratio varies by task type — use this reference: - -| Task type | Human team | CC+gstack | Compression | -|-----------|-----------|-----------|-------------| -| Boilerplate / scaffolding | 2 days | 15 min | ~100x | -| Test writing | 1 day | 15 min | ~50x | -| Feature implementation | 1 week | 30 min | ~30x | -| Bug fix + regression test | 4 hours | 15 min | ~20x | -| Architecture / design | 2 days | 4 hours | ~5x | -| Research / exploration | 1 day | 3 hours | ~3x | - -- This principle applies to test coverage, error handling, documentation, edge cases, and feature completeness. Don't skip the last 10% to "save time" — with AI, that 10% costs seconds. - -**Anti-patterns — DON'T do this:** -- BAD: "Choose B — it covers 90% of the value with less code." (If A is only 70 lines more, choose A.) -- BAD: "We can skip edge case handling to save time." (Edge case handling costs minutes with CC.) -- BAD: "Let's defer test coverage to a follow-up PR." (Tests are the cheapest lake to boil.) -- BAD: Quoting only human-team effort: "This would take 2 weeks." (Say: "2 weeks human / ~1 hour CC.") - -## Search Before Building - -Before building infrastructure, unfamiliar patterns, or anything the runtime might have a built-in — **search first.** Read `~/.claude/skills/gstack/ETHOS.md` for the full philosophy. - -**Three layers of knowledge:** -- **Layer 1** (tried and true — in distribution). Don't reinvent the wheel. But the cost of checking is near-zero, and once in a while, questioning the tried-and-true is where brilliance occurs. -- **Layer 2** (new and popular — search for these). But scrutinize: humans are subject to mania. Search results are inputs to your thinking, not answers. -- **Layer 3** (first principles — prize these above all). Original observations derived from reasoning about the specific problem. The most valuable of all. - -**Eureka moment:** When first-principles reasoning reveals conventional wisdom is wrong, name it: -"EUREKA: Everyone does X because [assumption]. But [evidence] shows this is wrong. Y is better because [reasoning]." - -Log eureka moments: -```bash -jq -n --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg skill "SKILL_NAME" --arg branch "$(git branch --show-current 2>/dev/null)" --arg insight "ONE_LINE_SUMMARY" '{ts:$ts,skill:$skill,branch:$branch,insight:$insight}' >> ~/.gstack/analytics/eureka.jsonl 2>/dev/null || true -``` -Replace SKILL_NAME and ONE_LINE_SUMMARY. Runs inline — don't stop the workflow. - -**WebSearch fallback:** If WebSearch is unavailable, skip the search step and note: "Search unavailable — proceeding with in-distribution knowledge only." - -## Contributor Mode - -If `_CONTRIB` is `true`: you are in **contributor mode**. You're a gstack user who also helps make it better. - -**At the end of each major workflow step** (not after every single command), reflect on the gstack tooling you used. Rate your experience 0 to 10. If it wasn't a 10, think about why. If there is an obvious, actionable bug OR an insightful, interesting thing that could have been done better by gstack code or skill markdown — file a field report. Maybe our contributor will help make us better! - -**Calibration — this is the bar:** For example, `$B js "await fetch(...)"` used to fail with `SyntaxError: await is only valid in async functions` because gstack didn't wrap expressions in async context. Small, but the input was reasonable and gstack should have handled it — that's the kind of thing worth filing. Things less consequential than this, ignore. - -**NOT worth filing:** user's app bugs, network errors to user's URL, auth failures on user's site, user's own JS logic bugs. - -**To file:** write `~/.gstack/contributor-logs/{slug}.md` with **all sections below** (do not truncate — include every section through the Date/Version footer): - -``` -# {Title} - -Hey gstack team — ran into this while using /{skill-name}: - -**What I was trying to do:** {what the user/agent was attempting} -**What happened instead:** {what actually happened} -**My rating:** {0-10} — {one sentence on why it wasn't a 10} - -## Steps to reproduce -1. {step} - -## Raw output -``` -{paste the actual error or unexpected output here} -``` - -## What would make this a 10 -{one sentence: what gstack should have done differently} - -**Date:** {YYYY-MM-DD} | **Version:** {gstack version} | **Skill:** /{skill} -``` - -Slug: lowercase, hyphens, max 60 chars (e.g. `browse-js-no-await`). Skip if file already exists. Max 3 reports per session. File inline and continue — don't stop the workflow. Tell user: "Filed gstack field report: {title}" - -## Completion Status Protocol - -When completing a skill workflow, report status using one of: -- **DONE** — All steps completed successfully. Evidence provided for each claim. -- **DONE_WITH_CONCERNS** — Completed, but with issues the user should know about. List each concern. -- **BLOCKED** — Cannot proceed. State what is blocking and what was tried. -- **NEEDS_CONTEXT** — Missing information required to continue. State exactly what you need. - -### Escalation - -It is always OK to stop and say "this is too hard for me" or "I'm not confident in this result." - -Bad work is worse than no work. You will not be penalized for escalating. -- If you have attempted a task 3 times without success, STOP and escalate. -- If you are uncertain about a security-sensitive change, STOP and escalate. -- If the scope of work exceeds what you can verify, STOP and escalate. - -Escalation format: -``` -STATUS: BLOCKED | NEEDS_CONTEXT -REASON: [1-2 sentences] -ATTEMPTED: [what you tried] -RECOMMENDATION: [what the user should do next] -``` - -## Telemetry (run last) - -After the skill workflow completes (success, error, or abort), log the telemetry event. -Determine the skill name from the `name:` field in this file's YAML frontmatter. - -# /setup-deploy — Configure Deployment for gstack - -You are helping the user configure their deployment so `/land-and-deploy` works -automatically. Your job is to detect the deploy platform, production URL, health -checks, and deploy status commands — then persist everything to CLAUDE.md. - -After this runs once, `/land-and-deploy` reads CLAUDE.md and skips detection entirely. - -## User-invocable -When the user types `/setup-deploy`, run this skill. - -## Instructions - -### Step 1: Check existing configuration - -```bash -grep -A 20 "## Deploy Configuration" CLAUDE.md 2>/dev/null || echo "NO_CONFIG" -``` - -If configuration already exists, show it and ask: - -- **Context:** Deploy configuration already exists in CLAUDE.md. -- **RECOMMENDATION:** Choose A to update if your setup changed. -- A) Reconfigure from scratch (overwrite existing) -- B) Edit specific fields (show current config, let me change one thing) -- C) Done — configuration looks correct - -If the user picks C, stop. - -### Step 2: Detect platform - -Run the platform detection from the deploy bootstrap: - -```bash -# Platform config files -[ -f fly.toml ] && echo "PLATFORM:fly" && cat fly.toml -[ -f render.yaml ] && echo "PLATFORM:render" && cat render.yaml -[ -f vercel.json ] || [ -d .vercel ] && echo "PLATFORM:vercel" -[ -f netlify.toml ] && echo "PLATFORM:netlify" && cat netlify.toml -[ -f Procfile ] && echo "PLATFORM:heroku" -[ -f railway.json ] || [ -f railway.toml ] && echo "PLATFORM:railway" - -# GitHub Actions deploy workflows -for f in .github/workflows/*.yml .github/workflows/*.yaml; do - [ -f "$f" ] && grep -qiE "deploy|release|production|staging|cd" "$f" 2>/dev/null && echo "DEPLOY_WORKFLOW:$f" -done - -# Project type -[ -f package.json ] && grep -q '"bin"' package.json 2>/dev/null && echo "PROJECT_TYPE:cli" -ls *.gemspec 2>/dev/null && echo "PROJECT_TYPE:library" -``` - -### Step 3: Platform-specific setup - -Based on what was detected, guide the user through platform-specific configuration. - -#### Fly.io - -If `fly.toml` detected: - -1. Extract app name: `grep -m1 "^app" fly.toml | sed 's/app = "\(.*\)"/\1/'` -2. Check if `fly` CLI is installed: `which fly 2>/dev/null` -3. If installed, verify: `fly status --app {app} 2>/dev/null` -4. Infer URL: `https://{app}.fly.dev` -5. Set deploy status command: `fly status --app {app}` -6. Set health check: `https://{app}.fly.dev` (or `/health` if the app has one) - -Ask the user to confirm the production URL. Some Fly apps use custom domains. - -#### Render - -If `render.yaml` detected: - -1. Extract service name and type from render.yaml -2. Check for Render API key: `echo $RENDER_API_KEY | head -c 4` (don't expose the full key) -3. Infer URL: `https://{service-name}.onrender.com` -4. Render deploys automatically on push to the connected branch — no deploy workflow needed -5. Set health check: the inferred URL - -Ask the user to confirm. Render uses auto-deploy from the connected git branch — after -merge to main, Render picks it up automatically. The "deploy wait" in /land-and-deploy -should poll the Render URL until it responds with the new version. - -#### Vercel - -If vercel.json or .vercel detected: - -1. Check for `vercel` CLI: `which vercel 2>/dev/null` -2. If installed: `vercel ls --prod 2>/dev/null | head -3` -3. Vercel deploys automatically on push — preview on PR, production on merge to main -4. Set health check: the production URL from vercel project settings - -#### Netlify - -If netlify.toml detected: - -1. Extract site info from netlify.toml -2. Netlify deploys automatically on push -3. Set health check: the production URL - -#### GitHub Actions only - -If deploy workflows detected but no platform config: - -1. Read the workflow file to understand what it does -2. Extract the deploy target (if mentioned) -3. Ask the user for the production URL - -#### Custom / Manual - -If nothing detected: - -Use AskUserQuestion to gather the information: - -1. **How are deploys triggered?** - - A) Automatically on push to main (Fly, Render, Vercel, Netlify, etc.) - - B) Via GitHub Actions workflow - - C) Via a deploy script or CLI command (describe it) - - D) Manually (SSH, dashboard, etc.) - - E) This project doesn't deploy (library, CLI, tool) - -2. **What's the production URL?** (Free text — the URL where the app runs) - -3. **How can gstack check if a deploy succeeded?** - - A) HTTP health check at a specific URL (e.g., /health, /api/status) - - B) CLI command (e.g., `fly status`, `kubectl rollout status`) - - C) Check the GitHub Actions workflow status - - D) No automated way — just check the URL loads - -4. **Any pre-merge or post-merge hooks?** - - Commands to run before merging (e.g., `bun run build`) - - Commands to run after merge but before deploy verification - -### Step 4: Write configuration - -Read CLAUDE.md (or create it). Find and replace the `## Deploy Configuration` section -if it exists, or append it at the end. - -```markdown -## Deploy Configuration (configured by /setup-deploy) -- Platform: {platform} -- Production URL: {url} -- Deploy workflow: {workflow file or "auto-deploy on push"} -- Deploy status command: {command or "HTTP health check"} -- Merge method: {squash/merge/rebase} -- Project type: {web app / API / CLI / library} -- Post-deploy health check: {health check URL or command} - -### Custom deploy hooks -- Pre-merge: {command or "none"} -- Deploy trigger: {command or "automatic on push to main"} -- Deploy status: {command or "poll production URL"} -- Health check: {URL or command} -``` - -### Step 5: Verify - -After writing, verify the configuration works: - -1. If a health check URL was configured, try it: -```bash -curl -sf "{health-check-url}" -o /dev/null -w "%{http_code}" 2>/dev/null || echo "UNREACHABLE" -``` - -2. If a deploy status command was configured, try it: -```bash -{deploy-status-command} 2>/dev/null | head -5 || echo "COMMAND_FAILED" -``` - -Report results. If anything failed, note it but don't block — the config is still -useful even if the health check is temporarily unreachable. - -### Step 6: Summary - -``` -DEPLOY CONFIGURATION — COMPLETE -════════════════════════════════ -Platform: {platform} -URL: {url} -Health check: {health check} -Status cmd: {status command} -Merge method: {merge method} - -Saved to CLAUDE.md. /land-and-deploy will use these settings automatically. - -Next steps: -- Run /land-and-deploy to merge and deploy your current PR -- Edit the "## Deploy Configuration" section in CLAUDE.md to change settings -- Run /setup-deploy again to reconfigure -``` - -## Important Rules - -- **Never expose secrets.** Don't print full API keys, tokens, or passwords. -- **Confirm with the user.** Always show the detected config and ask for confirmation before writing. -- **CLAUDE.md is the source of truth.** All configuration lives there — not in a separate config file. -- **Idempotent.** Running /setup-deploy multiple times overwrites the previous config cleanly. -- **Platform CLIs are optional.** If `fly` or `vercel` CLI isn't installed, fall back to URL-based health checks. diff --git a/skills/setup-deploy/SKILL.md.tmpl b/skills/setup-deploy/SKILL.md.tmpl deleted file mode 100644 index 982c0e6..0000000 --- a/skills/setup-deploy/SKILL.md.tmpl +++ /dev/null @@ -1,220 +0,0 @@ ---- -name: setup-deploy -version: 1.0.0 -description: | - Configure deployment settings for /land-and-deploy. Detects your deploy - platform (Fly.io, Render, Vercel, Netlify, Heroku, GitHub Actions, custom), - production URL, health check endpoints, and deploy status commands. Writes - the configuration to CLAUDE.md so all future deploys are automatic. - Use when: "setup deploy", "configure deployment", "set up land-and-deploy", - "how do I deploy with gstack", "add deploy config". -allowed-tools: - - Bash - - Read - - Write - - Edit - - Glob - - Grep - - AskUserQuestion ---- - -{{PREAMBLE}} - -# /setup-deploy — Configure Deployment for gstack - -You are helping the user configure their deployment so `/land-and-deploy` works -automatically. Your job is to detect the deploy platform, production URL, health -checks, and deploy status commands — then persist everything to CLAUDE.md. - -After this runs once, `/land-and-deploy` reads CLAUDE.md and skips detection entirely. - -## User-invocable -When the user types `/setup-deploy`, run this skill. - -## Instructions - -### Step 1: Check existing configuration - -```bash -grep -A 20 "## Deploy Configuration" CLAUDE.md 2>/dev/null || echo "NO_CONFIG" -``` - -If configuration already exists, show it and ask: - -- **Context:** Deploy configuration already exists in CLAUDE.md. -- **RECOMMENDATION:** Choose A to update if your setup changed. -- A) Reconfigure from scratch (overwrite existing) -- B) Edit specific fields (show current config, let me change one thing) -- C) Done — configuration looks correct - -If the user picks C, stop. - -### Step 2: Detect platform - -Run the platform detection from the deploy bootstrap: - -```bash -# Platform config files -[ -f fly.toml ] && echo "PLATFORM:fly" && cat fly.toml -[ -f render.yaml ] && echo "PLATFORM:render" && cat render.yaml -[ -f vercel.json ] || [ -d .vercel ] && echo "PLATFORM:vercel" -[ -f netlify.toml ] && echo "PLATFORM:netlify" && cat netlify.toml -[ -f Procfile ] && echo "PLATFORM:heroku" -[ -f railway.json ] || [ -f railway.toml ] && echo "PLATFORM:railway" - -# GitHub Actions deploy workflows -for f in .github/workflows/*.yml .github/workflows/*.yaml; do - [ -f "$f" ] && grep -qiE "deploy|release|production|staging|cd" "$f" 2>/dev/null && echo "DEPLOY_WORKFLOW:$f" -done - -# Project type -[ -f package.json ] && grep -q '"bin"' package.json 2>/dev/null && echo "PROJECT_TYPE:cli" -ls *.gemspec 2>/dev/null && echo "PROJECT_TYPE:library" -``` - -### Step 3: Platform-specific setup - -Based on what was detected, guide the user through platform-specific configuration. - -#### Fly.io - -If `fly.toml` detected: - -1. Extract app name: `grep -m1 "^app" fly.toml | sed 's/app = "\(.*\)"/\1/'` -2. Check if `fly` CLI is installed: `which fly 2>/dev/null` -3. If installed, verify: `fly status --app {app} 2>/dev/null` -4. Infer URL: `https://{app}.fly.dev` -5. Set deploy status command: `fly status --app {app}` -6. Set health check: `https://{app}.fly.dev` (or `/health` if the app has one) - -Ask the user to confirm the production URL. Some Fly apps use custom domains. - -#### Render - -If `render.yaml` detected: - -1. Extract service name and type from render.yaml -2. Check for Render API key: `echo $RENDER_API_KEY | head -c 4` (don't expose the full key) -3. Infer URL: `https://{service-name}.onrender.com` -4. Render deploys automatically on push to the connected branch — no deploy workflow needed -5. Set health check: the inferred URL - -Ask the user to confirm. Render uses auto-deploy from the connected git branch — after -merge to main, Render picks it up automatically. The "deploy wait" in /land-and-deploy -should poll the Render URL until it responds with the new version. - -#### Vercel - -If vercel.json or .vercel detected: - -1. Check for `vercel` CLI: `which vercel 2>/dev/null` -2. If installed: `vercel ls --prod 2>/dev/null | head -3` -3. Vercel deploys automatically on push — preview on PR, production on merge to main -4. Set health check: the production URL from vercel project settings - -#### Netlify - -If netlify.toml detected: - -1. Extract site info from netlify.toml -2. Netlify deploys automatically on push -3. Set health check: the production URL - -#### GitHub Actions only - -If deploy workflows detected but no platform config: - -1. Read the workflow file to understand what it does -2. Extract the deploy target (if mentioned) -3. Ask the user for the production URL - -#### Custom / Manual - -If nothing detected: - -Use AskUserQuestion to gather the information: - -1. **How are deploys triggered?** - - A) Automatically on push to main (Fly, Render, Vercel, Netlify, etc.) - - B) Via GitHub Actions workflow - - C) Via a deploy script or CLI command (describe it) - - D) Manually (SSH, dashboard, etc.) - - E) This project doesn't deploy (library, CLI, tool) - -2. **What's the production URL?** (Free text — the URL where the app runs) - -3. **How can gstack check if a deploy succeeded?** - - A) HTTP health check at a specific URL (e.g., /health, /api/status) - - B) CLI command (e.g., `fly status`, `kubectl rollout status`) - - C) Check the GitHub Actions workflow status - - D) No automated way — just check the URL loads - -4. **Any pre-merge or post-merge hooks?** - - Commands to run before merging (e.g., `bun run build`) - - Commands to run after merge but before deploy verification - -### Step 4: Write configuration - -Read CLAUDE.md (or create it). Find and replace the `## Deploy Configuration` section -if it exists, or append it at the end. - -```markdown -## Deploy Configuration (configured by /setup-deploy) -- Platform: {platform} -- Production URL: {url} -- Deploy workflow: {workflow file or "auto-deploy on push"} -- Deploy status command: {command or "HTTP health check"} -- Merge method: {squash/merge/rebase} -- Project type: {web app / API / CLI / library} -- Post-deploy health check: {health check URL or command} - -### Custom deploy hooks -- Pre-merge: {command or "none"} -- Deploy trigger: {command or "automatic on push to main"} -- Deploy status: {command or "poll production URL"} -- Health check: {URL or command} -``` - -### Step 5: Verify - -After writing, verify the configuration works: - -1. If a health check URL was configured, try it: -```bash -curl -sf "{health-check-url}" -o /dev/null -w "%{http_code}" 2>/dev/null || echo "UNREACHABLE" -``` - -2. If a deploy status command was configured, try it: -```bash -{deploy-status-command} 2>/dev/null | head -5 || echo "COMMAND_FAILED" -``` - -Report results. If anything failed, note it but don't block — the config is still -useful even if the health check is temporarily unreachable. - -### Step 6: Summary - -``` -DEPLOY CONFIGURATION — COMPLETE -════════════════════════════════ -Platform: {platform} -URL: {url} -Health check: {health check} -Status cmd: {status command} -Merge method: {merge method} - -Saved to CLAUDE.md. /land-and-deploy will use these settings automatically. - -Next steps: -- Run /land-and-deploy to merge and deploy your current PR -- Edit the "## Deploy Configuration" section in CLAUDE.md to change settings -- Run /setup-deploy again to reconfigure -``` - -## Important Rules - -- **Never expose secrets.** Don't print full API keys, tokens, or passwords. -- **Confirm with the user.** Always show the detected config and ask for confirmation before writing. -- **CLAUDE.md is the source of truth.** All configuration lives there — not in a separate config file. -- **Idempotent.** Running /setup-deploy multiple times overwrites the previous config cleanly. -- **Platform CLIs are optional.** If `fly` or `vercel` CLI isn't installed, fall back to URL-based health checks. diff --git a/skills/swift-expert/SKILL.md b/skills/swift-expert/SKILL.md deleted file mode 100644 index a48aa0a..0000000 --- a/skills/swift-expert/SKILL.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -name: swift-expert -description: > - Swift/iOS 深度专家。当用户需要 Swift 5.9+/SwiftUI 开发、async/await 并发、Core Data、网络层架构、Swift 测试、App 性能优化,或说 "Swift"、"SwiftUI"、"iOS原生" 时使用此技能。 -allowed-tools: Read, Glob, Grep, Edit, Write, Bash -maturity: imported -last-reviewed: 2026-03-03 -composable: true - enhances: [mobile-expert] ---- - -# Swift Expert - -Senior Swift developer with mastery of Swift 5.9+, Apple's development ecosystem, SwiftUI, async/await concurrency, and protocol-oriented programming. - -## Role Definition - -You are a senior Swift engineer with 10+ years of Apple platform development. You specialize in Swift 5.9+, SwiftUI, async/await concurrency, protocol-oriented design, and server-side Swift. You build type-safe, performant applications following Apple's API design guidelines. - -## When to Use This Skill - -- Building iOS/macOS/watchOS/tvOS applications -- Implementing SwiftUI interfaces and state management -- Setting up async/await concurrency and actors -- Creating protocol-oriented architectures -- Optimizing memory and performance -- Integrating UIKit with SwiftUI - -## Core Workflow - -1. **Architecture Analysis** - Identify platform targets, dependencies, design patterns -2. **Design Protocols** - Create protocol-first APIs with associated types -3. **Implement** - Write type-safe code with async/await and value semantics -4. **Optimize** - Profile with Instruments, ensure thread safety -5. **Test** - Write comprehensive tests with XCTest and async patterns - -## Reference Guide - -Load detailed guidance based on context: - -| Topic | Reference | Load When | -|-------|-----------|-----------| -| SwiftUI | `references/swiftui-patterns.md` | Building views, state management, modifiers | -| Concurrency | `references/async-concurrency.md` | async/await, actors, structured concurrency | -| Protocols | `references/protocol-oriented.md` | Protocol design, generics, type erasure | -| Memory | `references/memory-performance.md` | ARC, weak/unowned, performance optimization | -| Testing | `references/testing-patterns.md` | XCTest, async tests, mocking strategies | - -## Constraints - -### MUST DO -- Use type hints and inference appropriately -- Follow Swift API Design Guidelines -- Use async/await for asynchronous operations -- Ensure Sendable compliance for concurrency -- Use value types (struct/enum) by default -- Document APIs with markup comments -- Use property wrappers for cross-cutting concerns -- Profile with Instruments before optimizing - -### MUST NOT DO -- Use force unwrapping (!) without justification -- Create retain cycles in closures -- Mix synchronous and asynchronous code improperly -- Ignore actor isolation warnings -- Use implicitly unwrapped optionals unnecessarily -- Skip error handling -- Use Objective-C patterns when Swift alternatives exist -- Hardcode platform-specific values - -## Output Templates - -When implementing Swift features, provide: -1. Protocol definitions and type aliases -2. Model types (structs/classes with value semantics) -3. View implementations (SwiftUI) or view controllers -4. Tests demonstrating usage -5. Brief explanation of architectural decisions - -## Knowledge Reference - -Swift 5.9+, SwiftUI, UIKit, async/await, actors, structured concurrency, Combine, property wrappers, result builders, protocol-oriented programming, generics, type erasure, ARC, Instruments, XCTest, Swift Package Manager, Vapor diff --git a/skills/swift-expert/references/async-concurrency.md b/skills/swift-expert/references/async-concurrency.md deleted file mode 100644 index e4002cf..0000000 --- a/skills/swift-expert/references/async-concurrency.md +++ /dev/null @@ -1,360 +0,0 @@ -# Async/Await Concurrency - -## Async/Await Basics - -```swift -// Async function -func fetchUser(id: Int) async throws -> User { - let url = URL(string: "https://api.example.com/users/\(id)")! - let (data, _) = try await URLSession.shared.data(from: url) - return try JSONDecoder().decode(User.self, from: data) -} - -// Calling async functions -func loadUserData() async { - do { - let user = try await fetchUser(id: 123) - print("Loaded: \(user.name)") - } catch { - print("Error: \(error)") - } -} - -// Multiple concurrent operations -func fetchMultipleUsers(ids: [Int]) async throws -> [User] { - try await withThrowingTaskGroup(of: User.self) { group in - for id in ids { - group.addTask { - try await fetchUser(id: id) - } - } - - var users: [User] = [] - for try await user in group { - users.append(user) - } - return users - } -} -``` - -## Actors - -```swift -// Actor for thread-safe state management -actor UserCache { - private var cache: [Int: User] = [:] - private var inProgress: [Int: Task] = [:] - - func user(id: Int) async throws -> User { - // Check cache first - if let cached = cache[id] { - return cached - } - - // Check if already loading - if let task = inProgress[id] { - return try await task.value - } - - // Start new load - let task = Task { - try await fetchUser(id: id) - } - inProgress[id] = task - - do { - let user = try await task.value - cache[id] = user - inProgress.removeValue(forKey: id) - return user - } catch { - inProgress.removeValue(forKey: id) - throw error - } - } - - func clearCache() { - cache.removeAll() - } -} - -// Usage -let cache = UserCache() -let user = try await cache.user(id: 123) -``` - -## MainActor - -```swift -// UI updates must happen on main thread -@MainActor -class ViewModel: ObservableObject { - @Published var users: [User] = [] - @Published var isLoading = false - - func loadUsers() async { - isLoading = true - defer { isLoading = false } - - do { - // This async work happens off main thread - let loadedUsers = try await fetchMultipleUsers(ids: [1, 2, 3]) - - // Property updates happen on main thread automatically - users = loadedUsers - } catch { - print("Error: \(error)") - } - } -} - -// Isolated functions -@MainActor -func updateUI() { - // This always runs on main thread -} - -// Non-isolated functions in MainActor type -@MainActor -class DataManager { - var data: [String] = [] - - // Runs on main thread - func updateData(_ newData: [String]) { - data = newData - } - - // Can run on any thread - nonisolated func processData(_ input: String) -> String { - return input.uppercased() - } -} -``` - -## Structured Concurrency - -```swift -// Task groups for dynamic concurrency -func downloadImages(urls: [URL]) async throws -> [UIImage] { - try await withThrowingTaskGroup(of: (Int, UIImage).self) { group in - for (index, url) in urls.enumerated() { - group.addTask { - let (data, _) = try await URLSession.shared.data(from: url) - guard let image = UIImage(data: data) else { - throw ImageError.invalidData - } - return (index, image) - } - } - - var images = [UIImage?](repeating: nil, count: urls.count) - for try await (index, image) in group { - images[index] = image - } - - return images.compactMap { $0 } - } -} - -// Parallel async-let -func loadDashboard() async throws -> Dashboard { - async let user = fetchUser(id: currentUserID) - async let posts = fetchPosts() - async let notifications = fetchNotifications() - - return try await Dashboard( - user: user, - posts: posts, - notifications: notifications - ) -} -``` - -## Task Management - -```swift -// Detached tasks -func backgroundWork() { - Task.detached(priority: .background) { - // Runs independently, doesn't inherit context - await performHeavyComputation() - } -} - -// Cancellation -class DataLoader { - private var loadTask: Task? - - func startLoading() { - loadTask?.cancel() - - loadTask = Task { - do { - for try await item in itemStream() { - // Check for cancellation - try Task.checkCancellation() - - await process(item) - - // Alternative cancellation check - if Task.isCancelled { - break - } - } - } catch is CancellationError { - print("Task cancelled") - } catch { - print("Error: \(error)") - } - } - } - - func stopLoading() { - loadTask?.cancel() - loadTask = nil - } -} - -// Task priorities -Task(priority: .high) { - await criticalWork() -} - -Task(priority: .low) { - await backgroundWork() -} -``` - -## AsyncSequence - -```swift -// Custom AsyncSequence -struct NumberSequence: AsyncSequence { - typealias Element = Int - let range: Range - - struct AsyncIterator: AsyncIteratorProtocol { - var current: Int - let end: Int - - mutating func next() async -> Int? { - guard current < end else { return nil } - - // Simulate async work - try? await Task.sleep(for: .milliseconds(100)) - - defer { current += 1 } - return current - } - } - - func makeAsyncIterator() -> AsyncIterator { - AsyncIterator(current: range.lowerBound, end: range.upperBound) - } -} - -// Usage -for await number in NumberSequence(range: 0..<10) { - print(number) -} - -// Async stream -func eventStream() -> AsyncStream { - AsyncStream { continuation in - let observer = NotificationCenter.default.addObserver( - forName: .eventOccurred, - object: nil, - queue: nil - ) { notification in - if let event = notification.object as? Event { - continuation.yield(event) - } - } - - continuation.onTermination = { _ in - NotificationCenter.default.removeObserver(observer) - } - } -} -``` - -## Sendable Protocol - -```swift -// Sendable types can be safely passed across concurrency domains -struct User: Sendable { - let id: Int - let name: String -} - -// Non-Sendable by default (has mutable state) -class ViewModel { - var data: [String] = [] -} - -// Make it Sendable with @unchecked (use carefully!) -class SafeViewModel: @unchecked Sendable { - private let lock = NSLock() - private var _data: [String] = [] - - var data: [String] { - lock.lock() - defer { lock.unlock() } - return _data - } - - func setData(_ newData: [String]) { - lock.lock() - defer { lock.unlock() } - _data = newData - } -} - -// Generic with Sendable constraint -func processData(_ data: T) async -> T { - // Can safely pass data across concurrency boundaries - await Task.detached { - return data - }.value -} -``` - -## Continuations - -```swift -// Bridging callback-based APIs to async/await -func fetchDataAsync() async throws -> Data { - try await withCheckedThrowingContinuation { continuation in - fetchDataWithCallback { result in - switch result { - case .success(let data): - continuation.resume(returning: data) - case .failure(let error): - continuation.resume(throwing: error) - } - } - } -} - -// Unsafe continuations for performance-critical code -func unsafeFetchDataAsync() async -> Data { - await withUnsafeContinuation { continuation in - fetchDataWithCallback { data in - continuation.resume(returning: data) - } - } -} -``` - -## Best Practices - -- Use actors for mutable shared state -- Prefer async/await over completion handlers -- Use MainActor for UI-related code -- Leverage structured concurrency (task groups, async-let) -- Check for cancellation in long-running tasks -- Mark types as Sendable when safe -- Use continuations to bridge legacy async code -- Avoid blocking in async contexts -- Use Task.detached sparingly (breaks structured concurrency) diff --git a/skills/swift-expert/references/memory-performance.md b/skills/swift-expert/references/memory-performance.md deleted file mode 100644 index 0707510..0000000 --- a/skills/swift-expert/references/memory-performance.md +++ /dev/null @@ -1,377 +0,0 @@ -# Memory & Performance - -## Automatic Reference Counting (ARC) - -```swift -// Strong references (default) -class Person { - let name: String - var apartment: Apartment? - - init(name: String) { - self.name = name - } - - deinit { - print("\(name) is being deinitialized") - } -} - -class Apartment { - let unit: String - weak var tenant: Person? // Weak to break retain cycle - - init(unit: String) { - self.unit = unit - } - - deinit { - print("Apartment \(unit) is being deinitialized") - } -} - -var john: Person? = Person(name: "John") -var unit4A: Apartment? = Apartment(unit: "4A") - -john?.apartment = unit4A -unit4A?.tenant = john - -// Setting to nil will properly deallocate both -john = nil -unit4A = nil -``` - -## Weak and Unowned References - -```swift -// Weak - optional reference that doesn't keep object alive -class ViewController: UIViewController { - weak var delegate: ViewControllerDelegate? - - func performAction() { - delegate?.didPerformAction() - } -} - -// Unowned - non-optional reference, assumes target outlives owner -class Customer { - let name: String - var card: CreditCard? - - init(name: String) { - self.name = name - } -} - -class CreditCard { - let number: String - unowned let customer: Customer // Customer always outlives card - - init(number: String, customer: Customer) { - self.number = number - self.customer = customer - } -} - -// Unowned optional (Swift 5+) -class Department { - var courses: [Course] = [] -} - -class Course { - unowned var department: Department - unowned var nextCourse: Course? - - init(department: Department) { - self.department = department - } -} -``` - -## Capture Lists in Closures - -```swift -class DataManager { - var data: [String] = [] - - func loadData() { - // Strong reference cycle - DataManager won't be deallocated - NetworkManager.fetch { response in - self.data = response // self is captured strongly - } - - // Weak self - breaks cycle - NetworkManager.fetch { [weak self] response in - guard let self = self else { return } - self.data = response - } - - // Unowned self - when self definitely outlives closure - NetworkManager.fetch { [unowned self] response in - self.data = response // Crashes if self is deallocated - } - - // Capturing specific values - let identifier = UUID() - NetworkManager.fetch { [identifier] response in - print("Request \(identifier) completed") - } - } -} -``` - -## Value Semantics - -```swift -// Structs provide automatic copy-on-write for collections -struct User { - var name: String - var friends: [String] // Copy-on-write -} - -var user1 = User(name: "Alice", friends: ["Bob"]) -var user2 = user1 // Shallow copy -user2.friends.append("Charlie") // Now triggers deep copy - -print(user1.friends) // ["Bob"] -print(user2.friends) // ["Bob", "Charlie"] - -// Custom copy-on-write -final class Storage { - var value: T - init(_ value: T) { self.value = value } -} - -struct MyArray { - private var storage: Storage<[Element]> - - init(_ elements: [Element] = []) { - storage = Storage(elements) - } - - var value: [Element] { - get { storage.value } - set { - if !isKnownUniquelyReferenced(&storage) { - storage = Storage(newValue) - } else { - storage.value = newValue - } - } - } - - mutating func append(_ element: Element) { - if !isKnownUniquelyReferenced(&storage) { - storage = Storage(storage.value) - } - storage.value.append(element) - } -} -``` - -## Performance Optimization - -```swift -// Use lazy properties for expensive computations -class Report { - let data: [DataPoint] - - lazy var summary: String = { - // Expensive computation only when accessed - data.map { $0.description }.joined(separator: "\n") - }() - - init(data: [DataPoint]) { - self.data = data - } -} - -// Avoid repeated type casting -// Bad -for item in items { - if let user = item as? User { - processUser(user) - } -} - -// Good -let users = items.compactMap { $0 as? User } -for user in users { - processUser(user) -} - -// Use contiguous storage -// Slower - pointer indirection for each element -let arrayOfClasses: [MyClass] = [MyClass(), MyClass()] - -// Faster - contiguous memory -let arrayOfStructs: [MyStruct] = [MyStruct(), MyStruct()] - -// Avoid string concatenation in loops -// Bad -var result = "" -for item in items { - result += item.description // Allocates new string each time -} - -// Good -let result = items.map { $0.description }.joined() - -// Or -var result = "" -result.reserveCapacity(estimatedSize) -for item in items { - result.append(item.description) -} -``` - -## Collection Performance - -```swift -// Choose the right collection type -// Array - ordered, random access O(1), append O(1) amortized -let ordered: [Int] = [1, 2, 3] - -// Set - unique elements, contains O(1), no order -let unique: Set = [1, 2, 3] - -// Dictionary - key-value pairs, lookup O(1) -let mapping: [String: Int] = ["a": 1, "b": 2] - -// Use ContiguousArray for performance-critical code -let contiguous = ContiguousArray(repeating: MyStruct(), count: 1000) - -// Reserve capacity for known sizes -var numbers: [Int] = [] -numbers.reserveCapacity(1000) -for i in 0..<1000 { - numbers.append(i) -} - -// Use enumerated() instead of indices -// Bad -for i in 0..(_ value: T) { - // Specialized versions generated -} -``` - -## Memory Warnings - -```swift -class ImageCache { - private var cache: [String: UIImage] = [:] - - init() { - NotificationCenter.default.addObserver( - self, - selector: #selector(clearCache), - name: UIApplication.didReceiveMemoryWarningNotification, - object: nil - ) - } - - @objc private func clearCache() { - cache.removeAll() - } - - deinit { - NotificationCenter.default.removeObserver(self) - } -} -``` - -## Best Practices - -- Use value types (structs) by default -- Use weak references for delegates -- Use unowned when lifetime is guaranteed -- Always use capture lists in closures that reference self -- Profile before optimizing (use Instruments) -- Reserve collection capacity when size is known -- Use lazy properties for expensive computations -- Implement copy-on-write for custom types with reference storage -- Handle memory warnings in iOS apps -- Use autoreleasepool for memory-intensive loops -- Choose appropriate collection types -- Avoid premature optimization - measure first diff --git a/skills/swift-expert/references/protocol-oriented.md b/skills/swift-expert/references/protocol-oriented.md deleted file mode 100644 index ab6e4b5..0000000 --- a/skills/swift-expert/references/protocol-oriented.md +++ /dev/null @@ -1,354 +0,0 @@ -# Protocol-Oriented Programming - -## Protocol Basics - -```swift -// Protocol with requirements -protocol Drawable { - var boundingBox: CGRect { get } - func draw(in context: CGContext) -} - -// Protocol with default implementation -extension Drawable { - func draw(in context: CGContext) { - // Default drawing behavior - context.stroke(boundingBox) - } -} - -// Struct conforming to protocol -struct Circle: Drawable { - let center: CGPoint - let radius: CGFloat - - var boundingBox: CGRect { - CGRect( - x: center.x - radius, - y: center.y - radius, - width: radius * 2, - height: radius * 2 - ) - } -} -``` - -## Associated Types - -```swift -// Protocol with associated type -protocol Container { - associatedtype Item - var count: Int { get } - mutating func append(_ item: Item) - subscript(index: Int) -> Item { get } -} - -// Generic struct conforming -struct Stack: Container { - typealias Item = Element // Can be inferred - private var items: [Element] = [] - - var count: Int { items.count } - - mutating func append(_ item: Element) { - items.append(item) - } - - subscript(index: Int) -> Element { - items[index] - } -} - -// Using where clause with associated types -extension Container where Item: Equatable { - func firstIndex(of item: Item) -> Int? { - for (index, current) in enumerated() where current == item { - return index - } - return nil - } -} -``` - -## Protocol Composition - -```swift -// Multiple protocol conformance -protocol Named { - var name: String { get } -} - -protocol Aged { - var age: Int { get } -} - -// Composing protocols -typealias Person = Named & Aged - -func greet(_ person: some Named & Aged) { - print("Hello \(person.name), age \(person.age)") -} - -// Protocol composition in constraints -func process(_ items: [T]) { - // T must conform to both Codable and Hashable -} -``` - -## Generics with Protocols - -```swift -// Generic function with protocol constraint -func compare(_ a: T, _ b: T) -> T { - return a > b ? a : b -} - -// Generic type with protocol constraint -class Repository { - private var items: [Model.ID: Model] = [:] - - func save(_ model: Model) { - items[model.id] = model - } - - func find(id: Model.ID) -> Model? { - items[id] - } - - func all() -> [Model] { - Array(items.values) - } -} - -// Using opaque return types -func makeCollection() -> some Collection { - return [1, 2, 3, 4, 5] -} - -// Primary associated types (Swift 5.7+) -protocol DataSource { - associatedtype Element - func fetch() async throws -> [Element] -} - -func loadData(from source: some DataSource) async throws -> [T] { - try await source.fetch() -} -``` - -## Type Erasure - -```swift -// Problem: Can't use protocol with associated types as type -// protocol Storage { -// associatedtype Item -// func store(_ item: Item) -// } -// var storage: Storage // Error: protocol can only be used as constraint - -// Solution: Type-erased wrapper -protocol Storage { - associatedtype Item - func store(_ item: Item) - func retrieve() -> Item? -} - -struct AnyStorage: Storage { - typealias Item = T - - private let _store: (T) -> Void - private let _retrieve: () -> T? - - init(_ storage: S) where S.Item == T { - _store = storage.store - _retrieve = storage.retrieve - } - - func store(_ item: T) { - _store(item) - } - - func retrieve() -> T? { - _retrieve() - } -} - -// Now we can use it as a type -class MemoryStorage: Storage { - private var item: T? - - func store(_ item: T) { - self.item = item - } - - func retrieve() -> T? { - item - } -} - -let storage: AnyStorage = AnyStorage(MemoryStorage()) -``` - -## Protocol Inheritance - -```swift -// Protocol inheriting from another -protocol Identifiable { - var id: UUID { get } -} - -protocol Timestampable { - var createdAt: Date { get } - var updatedAt: Date { get } -} - -protocol Entity: Identifiable, Timestampable { - var version: Int { get } -} - -struct User: Entity { - let id: UUID - let createdAt: Date - var updatedAt: Date - var version: Int - var name: String -} -``` - -## Conditional Conformance - -```swift -// Make Array conform to protocol when elements conform -protocol Summarizable { - var summary: String { get } -} - -extension Array: Summarizable where Element: Summarizable { - var summary: String { - map { $0.summary }.joined(separator: ", ") - } -} - -struct Task: Summarizable { - let title: String - var summary: String { title } -} - -let tasks = [Task(title: "Buy milk"), Task(title: "Walk dog")] -print(tasks.summary) // "Buy milk, Walk dog" -``` - -## Protocol Extensions - -```swift -// Adding functionality to all conforming types -protocol Collection { - associatedtype Element - var count: Int { get } - subscript(index: Int) -> Element { get } -} - -extension Collection { - var isEmpty: Bool { - count == 0 - } - - func map(_ transform: (Element) -> T) -> [T] { - var result: [T] = [] - for i in 0.. Element { - var total: Element = 0 - for i in 0.. { - let value: Double - - init(_ value: Double) { - self.value = value - } -} - -extension Temperature where Unit == Celsius { - func toFahrenheit() -> Temperature { - Temperature(value * 9/5 + 32) - } -} - -extension Temperature where Unit == Fahrenheit { - func toCelsius() -> Temperature { - Temperature((value - 32) * 5/9) - } -} - -let celsius = Temperature(100) -let fahrenheit = celsius.toFahrenheit() - -// Witness tables pattern -protocol Encoder { - func encode(_ value: T) throws -> Data -} - -protocol Decoder { - func decode(_ type: T.Type, from data: Data) throws -> T -} - -struct Codec { - let encoder: E - let decoder: D - - func roundtrip(_ value: T) throws -> T { - let data = try encoder.encode(value) - return try decoder.decode(T.self, from: data) - } -} -``` - -## Retroactive Modeling - -```swift -// Adding protocol conformance to types you don't own -extension Int: Identifiable { - public var id: Int { self } -} - -// Now Int can be used where Identifiable is required -let numbers: [Int] = [1, 2, 3] -ForEach(numbers) { number in - Text("\(number)") -} -``` - -## Best Practices - -- Prefer protocols over base classes for abstraction -- Use protocol extensions for default implementations -- Design protocols with single responsibility -- Use associated types for generic protocols -- Apply type erasure when needed for storage -- Leverage conditional conformance -- Use opaque return types (some Protocol) for implementation hiding -- Compose small protocols rather than large ones -- Document protocol requirements and guarantees -- Consider protocol inheritance for layered abstraction diff --git a/skills/swift-expert/references/swiftui-patterns.md b/skills/swift-expert/references/swiftui-patterns.md deleted file mode 100644 index fe987a7..0000000 --- a/skills/swift-expert/references/swiftui-patterns.md +++ /dev/null @@ -1,291 +0,0 @@ -# SwiftUI Patterns - -## State Management - -```swift -import SwiftUI - -// @State for local view state -struct CounterView: View { - @State private var count = 0 - - var body: some View { - VStack { - Text("Count: \(count)") - Button("Increment") { count += 1 } - } - } -} - -// @Binding for two-way data flow -struct ToggleView: View { - @Binding var isOn: Bool - - var body: some View { - Toggle("Enable Feature", isOn: $isOn) - } -} - -// @StateObject for observable objects (view owns it) -class ViewModel: ObservableObject { - @Published var items: [String] = [] - @Published var isLoading = false -} - -struct ContentView: View { - @StateObject private var viewModel = ViewModel() - - var body: some View { - List(viewModel.items, id: \.self) { item in - Text(item) - } - } -} - -// @ObservedObject for passed-in observable objects -struct DetailView: View { - @ObservedObject var viewModel: ViewModel -} - -// @EnvironmentObject for dependency injection -struct AppView: View { - @EnvironmentObject var appState: AppState -} -``` - -## Modern View Composition - -```swift -// View builder for custom containers -struct ConditionalView: View { - let condition: Bool - @ViewBuilder let content: () -> Content - - var body: some View { - if condition { - content() - } else { - EmptyView() - } - } -} - -// Custom ViewModifier -struct CardModifier: ViewModifier { - func body(content: Content) -> some View { - content - .padding() - .background(Color.white) - .cornerRadius(12) - .shadow(radius: 4) - } -} - -extension View { - func cardStyle() -> some View { - modifier(CardModifier()) - } -} - -// Usage -Text("Hello") - .cardStyle() -``` - -## Environment Values - -```swift -// Custom environment key -private struct ThemeKey: EnvironmentKey { - static let defaultValue: Theme = .light -} - -extension EnvironmentValues { - var theme: Theme { - get { self[ThemeKey.self] } - set { self[ThemeKey.self] = newValue } - } -} - -extension View { - func theme(_ theme: Theme) -> some View { - environment(\.theme, theme) - } -} - -// Usage -struct ThemedView: View { - @Environment(\.theme) var theme - - var body: some View { - Text("Themed") - .foregroundColor(theme.textColor) - } -} -``` - -## Preference Keys - -```swift -// Collecting data from child views -struct SizePreferenceKey: PreferenceKey { - static var defaultValue: CGSize = .zero - - static func reduce(value: inout CGSize, nextValue: () -> CGSize) { - value = nextValue() - } -} - -struct MeasurableView: View { - @State private var size: CGSize = .zero - - var body: some View { - Text("Measure me") - .background( - GeometryReader { geometry in - Color.clear - .preference(key: SizePreferenceKey.self, value: geometry.size) - } - ) - .onPreferenceChange(SizePreferenceKey.self) { newSize in - size = newSize - } - } -} -``` - -## Animations - -```swift -// Implicit animations -struct AnimatedView: View { - @State private var scale: CGFloat = 1.0 - - var body: some View { - Circle() - .scaleEffect(scale) - .animation(.spring(response: 0.5, dampingFraction: 0.6), value: scale) - .onTapGesture { - scale = scale == 1.0 ? 1.5 : 1.0 - } - } -} - -// Explicit animations -struct ExplicitAnimationView: View { - @State private var offset: CGFloat = 0 - - var body: some View { - Text("Slide") - .offset(x: offset) - .onTapGesture { - withAnimation(.easeInOut(duration: 0.3)) { - offset = offset == 0 ? 100 : 0 - } - } - } -} - -// Custom transitions -extension AnyTransition { - static var slideAndFade: AnyTransition { - AnyTransition.slide.combined(with: .opacity) - } -} -``` - -## Async/Await Integration - -```swift -struct AsyncDataView: View { - @State private var data: [Item] = [] - @State private var isLoading = false - - var body: some View { - List(data) { item in - Text(item.title) - } - .task { - await loadData() - } - .refreshable { - await loadData() - } - } - - private func loadData() async { - isLoading = true - defer { isLoading = false } - - do { - data = try await API.fetchItems() - } catch { - print("Error: \(error)") - } - } -} -``` - -## Custom Layouts (iOS 16+) - -```swift -struct WaterfallLayout: Layout { - var columns: Int = 2 - var spacing: CGFloat = 8 - - func sizeThatFits( - proposal: ProposedViewSize, - subviews: Subviews, - cache: inout () - ) -> CGSize { - // Calculate total size needed - let columnWidth = (proposal.width! - spacing * CGFloat(columns - 1)) / CGFloat(columns) - var columnHeights = Array(repeating: CGFloat(0), count: columns) - - for subview in subviews { - let column = columnHeights.enumerated().min(by: { $0.element < $1.element })!.offset - let size = subview.sizeThatFits(.init(width: columnWidth, height: nil)) - columnHeights[column] += size.height + spacing - } - - return CGSize( - width: proposal.width!, - height: columnHeights.max()! - spacing - ) - } - - func placeSubviews( - in bounds: CGRect, - proposal: ProposedViewSize, - subviews: Subviews, - cache: inout () - ) { - let columnWidth = (bounds.width - spacing * CGFloat(columns - 1)) / CGFloat(columns) - var columnHeights = Array(repeating: CGFloat(0), count: columns) - - for subview in subviews { - let column = columnHeights.enumerated().min(by: { $0.element < $1.element })!.offset - let x = bounds.minX + CGFloat(column) * (columnWidth + spacing) - let y = bounds.minY + columnHeights[column] - - subview.place( - at: CGPoint(x: x, y: y), - proposal: .init(width: columnWidth, height: nil) - ) - - columnHeights[column] += subview.dimensions(in: .init(width: columnWidth, height: nil)).height + spacing - } - } -} -``` - -## Performance Tips - -- Use `@State` for simple value types -- Use `@StateObject` for reference types you create -- Use `@ObservedObject` for reference types passed in -- Prefer `@Environment` over prop drilling -- Use `equatable()` modifier for expensive views -- Leverage `id()` modifier to control view identity -- Use `task(id:)` to cancel and restart async work -- Avoid computing expensive values in body - use `@State` or computed properties diff --git a/skills/swift-expert/references/testing-patterns.md b/skills/swift-expert/references/testing-patterns.md deleted file mode 100644 index c016962..0000000 --- a/skills/swift-expert/references/testing-patterns.md +++ /dev/null @@ -1,399 +0,0 @@ -# Testing Patterns - -## XCTest Basics - -```swift -import XCTest -@testable import MyApp - -final class UserTests: XCTestCase { - var sut: UserManager! - - override func setUp() { - super.setUp() - sut = UserManager() - } - - override func tearDown() { - sut = nil - super.tearDown() - } - - func testUserCreation() { - // Given - let name = "John Doe" - let email = "john@example.com" - - // When - let user = sut.createUser(name: name, email: email) - - // Then - XCTAssertEqual(user.name, name) - XCTAssertEqual(user.email, email) - XCTAssertNotNil(user.id) - } - - func testValidation() throws { - // Unwrapping optionals in tests - let user = try XCTUnwrap(sut.findUser(id: 123)) - XCTAssertEqual(user.name, "Test User") - } -} -``` - -## Async Testing - -```swift -final class AsyncTests: XCTestCase { - func testAsyncFunction() async throws { - // Test async/await code directly - let result = try await fetchData() - XCTAssertEqual(result.count, 10) - } - - func testAsyncSequence() async throws { - var results: [Int] = [] - - for try await value in numberStream() { - results.append(value) - if results.count >= 5 { - break - } - } - - XCTAssertEqual(results.count, 5) - } - - func testWithTimeout() async throws { - // Test with timeout - try await withTimeout(seconds: 5) { - try await longRunningOperation() - } - } - - func testConcurrentOperations() async throws { - async let result1 = fetchData(id: 1) - async let result2 = fetchData(id: 2) - - let (data1, data2) = try await (result1, result2) - - XCTAssertNotNil(data1) - XCTAssertNotNil(data2) - } -} - -// Helper for timeout -func withTimeout( - seconds: TimeInterval, - operation: @escaping () async throws -> T -) async throws -> T { - try await withThrowingTaskGroup(of: T.self) { group in - group.addTask { - try await operation() - } - - group.addTask { - try await Task.sleep(nanoseconds: UInt64(seconds * 1_000_000_000)) - throw TimeoutError() - } - - let result = try await group.next()! - group.cancelAll() - return result - } -} -``` - -## Mocking - -```swift -// Protocol for dependency injection -protocol DataService { - func fetch(id: Int) async throws -> Data - func save(_ data: Data) async throws -} - -// Production implementation -class APIDataService: DataService { - func fetch(id: Int) async throws -> Data { - // Real API call - } - - func save(_ data: Data) async throws { - // Real save operation - } -} - -// Mock for testing -class MockDataService: DataService { - var fetchCalled = false - var fetchID: Int? - var fetchResult: Data? - var fetchError: Error? - - var saveCalled = false - var savedData: Data? - var saveError: Error? - - func fetch(id: Int) async throws -> Data { - fetchCalled = true - fetchID = id - - if let error = fetchError { - throw error - } - - return fetchResult ?? Data() - } - - func save(_ data: Data) async throws { - saveCalled = true - savedData = data - - if let error = saveError { - throw error - } - } -} - -// Using mock in tests -final class DataManagerTests: XCTestCase { - func testDataFetch() async throws { - // Given - let mockService = MockDataService() - mockService.fetchResult = "test data".data(using: .utf8) - let manager = DataManager(service: mockService) - - // When - let result = try await manager.loadData(id: 123) - - // Then - XCTAssertTrue(mockService.fetchCalled) - XCTAssertEqual(mockService.fetchID, 123) - XCTAssertNotNil(result) - } -} -``` - -## Test Doubles - -```swift -// Spy - records interactions -class SpyDelegate: UserManagerDelegate { - private(set) var didUpdateUserCalled = false - private(set) var updatedUser: User? - private(set) var callCount = 0 - - func didUpdateUser(_ user: User) { - didUpdateUserCalled = true - updatedUser = user - callCount += 1 - } -} - -// Stub - provides predetermined responses -class StubNetworkService: NetworkService { - var stubbedResponse: Result = .success(Data()) - - func fetch(url: URL) async throws -> Data { - try stubbedResponse.get() - } -} - -// Fake - working implementation with shortcuts -class FakeDatabase: Database { - private var storage: [String: Data] = [:] - - func save(key: String, value: Data) { - storage[key] = value - } - - func load(key: String) -> Data? { - storage[key] - } - - func clear() { - storage.removeAll() - } -} -``` - -## Performance Testing - -```swift -final class PerformanceTests: XCTestCase { - func testSortingPerformance() { - let numbers = (0..<10000).shuffled() - - measure { - _ = numbers.sorted() - } - } - - func testCustomMetrics() { - let metrics: [XCTMetric] = [ - XCTClockMetric(), - XCTCPUMetric(), - XCTMemoryMetric(), - XCTStorageMetric() - ] - - let options = XCTMeasureOptions() - options.iterationCount = 10 - - measure(metrics: metrics, options: options) { - performExpensiveOperation() - } - } -} -``` - -## UI Testing - -```swift -final class AppUITests: XCTestCase { - var app: XCUIApplication! - - override func setUp() { - super.setUp() - continueAfterFailure = false - app = XCUIApplication() - app.launch() - } - - func testLoginFlow() { - // Test UI interactions - let emailField = app.textFields["Email"] - emailField.tap() - emailField.typeText("test@example.com") - - let passwordField = app.secureTextFields["Password"] - passwordField.tap() - passwordField.typeText("password123") - - app.buttons["Login"].tap() - - // Verify navigation - XCTAssertTrue(app.navigationBars["Dashboard"].exists) - } - - func testButtonEnabled() { - let button = app.buttons["Submit"] - XCTAssertFalse(button.isEnabled) - - app.textFields["Username"].tap() - app.textFields["Username"].typeText("testuser") - - XCTAssertTrue(button.isEnabled) - } -} -``` - -## Testing Actors - -```swift -final class ActorTests: XCTestCase { - func testActorIsolation() async throws { - actor Counter { - private var value = 0 - - func increment() -> Int { - value += 1 - return value - } - - func reset() { - value = 0 - } - } - - let counter = Counter() - - // Test concurrent access - await withTaskGroup(of: Int.self) { group in - for _ in 0..<100 { - group.addTask { - await counter.increment() - } - } - } - - let finalValue = await counter.increment() - XCTAssertEqual(finalValue, 101) - } -} -``` - -## Snapshot Testing - -```swift -import SnapshotTesting - -final class ViewSnapshotTests: XCTestCase { - func testButtonAppearance() { - let button = UIButton() - button.setTitle("Tap Me", for: .normal) - button.backgroundColor = .blue - button.frame = CGRect(x: 0, y: 0, width: 200, height: 50) - - assertSnapshot(matching: button, as: .image) - } - - func testViewControllerLayout() { - let vc = MyViewController() - assertSnapshot(matching: vc, as: .image(on: .iPhone13)) - } - - func testDarkMode() { - let view = MyView() - assertSnapshot(matching: view, as: .image(traits: .init(userInterfaceStyle: .dark))) - } -} -``` - -## Test Organization - -```swift -// MARK: - Test Cases -extension UserManagerTests { - // MARK: Creation Tests - func testUserCreation() { } - func testUserCreationWithInvalidData() { } - - // MARK: Validation Tests - func testEmailValidation() { } - func testPasswordValidation() { } - - // MARK: Persistence Tests - func testUserSave() { } - func testUserLoad() { } -} - -// MARK: - Test Helpers -extension UserManagerTests { - func makeTestUser() -> User { - User(name: "Test", email: "test@example.com") - } - - func setupMockData() { - // Common test setup - } -} -``` - -## Best Practices - -- Use `@testable import` to test internal types -- One assertion concept per test (can have multiple XCTAssert calls) -- Use Given-When-Then pattern for clarity -- Name tests descriptively: `test_methodName_condition_expectedResult` -- Use setUp/tearDown for common test setup -- Prefer dependency injection for testability -- Use protocols to enable mocking -- Test edge cases and error conditions -- Use async/await for testing async code -- Measure performance with XCTest metrics -- Use UI testing for critical user flows -- Mock external dependencies -- Keep tests fast and independent -- Use test doubles appropriately (mock, stub, spy, fake) diff --git a/skills/ui-ux-pro-max/SKILL.md b/skills/ui-ux-pro-max/SKILL.md deleted file mode 100644 index a2b2053..0000000 --- a/skills/ui-ux-pro-max/SKILL.md +++ /dev/null @@ -1,378 +0,0 @@ ---- -name: ui-ux-pro-max -description: "UI/UX design intelligence. 67 styles, 96 palettes, 57 font pairings, 25 charts, 13 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind, shadcn/ui). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient. Integrations: shadcn/ui MCP for component search and examples." -maturity: stable ---- -# UI/UX Pro Max - Design Intelligence - -Comprehensive design guide for web and mobile applications. Contains 67 styles, 96 color palettes, 57 font pairings, 99 UX guidelines, and 25 chart types across 13 technology stacks. Searchable database with priority-based recommendations. - -## When to Apply - -Reference these guidelines when: -- Designing new UI components or pages -- Choosing color palettes and typography -- Reviewing code for UX issues -- Building landing pages or dashboards -- Implementing accessibility requirements - -## Rule Categories by Priority - -| Priority | Category | Impact | Domain | -|----------|----------|--------|--------| -| 1 | Accessibility | CRITICAL | `ux` | -| 2 | Touch & Interaction | CRITICAL | `ux` | -| 3 | Performance | HIGH | `ux` | -| 4 | Layout & Responsive | HIGH | `ux` | -| 5 | Typography & Color | MEDIUM | `typography`, `color` | -| 6 | Animation | MEDIUM | `ux` | -| 7 | Style Selection | MEDIUM | `style`, `product` | -| 8 | Charts & Data | LOW | `chart` | - -## Quick Reference - -### 1. Accessibility (CRITICAL) - -- `color-contrast` - Minimum 4.5:1 ratio for normal text -- `focus-states` - Visible focus rings on interactive elements -- `alt-text` - Descriptive alt text for meaningful images -- `aria-labels` - aria-label for icon-only buttons -- `keyboard-nav` - Tab order matches visual order -- `form-labels` - Use label with for attribute - -### 2. Touch & Interaction (CRITICAL) - -- `touch-target-size` - Minimum 44x44px touch targets -- `hover-vs-tap` - Use click/tap for primary interactions -- `loading-buttons` - Disable button during async operations -- `error-feedback` - Clear error messages near problem -- `cursor-pointer` - Add cursor-pointer to clickable elements - -### 3. Performance (HIGH) - -- `image-optimization` - Use WebP, srcset, lazy loading -- `reduced-motion` - Check prefers-reduced-motion -- `content-jumping` - Reserve space for async content - -### 4. Layout & Responsive (HIGH) - -- `viewport-meta` - width=device-width initial-scale=1 -- `readable-font-size` - Minimum 16px body text on mobile -- `horizontal-scroll` - Ensure content fits viewport width -- `z-index-management` - Define z-index scale (10, 20, 30, 50) - -### 5. Typography & Color (MEDIUM) - -- `line-height` - Use 1.5-1.75 for body text -- `line-length` - Limit to 65-75 characters per line -- `font-pairing` - Match heading/body font personalities - -### 6. Animation (MEDIUM) - -- `duration-timing` - Use 150-300ms for micro-interactions -- `transform-performance` - Use transform/opacity, not width/height -- `loading-states` - Skeleton screens or spinners - -### 7. Style Selection (MEDIUM) - -- `style-match` - Match style to product type -- `consistency` - Use same style across all pages -- `no-emoji-icons` - Use SVG icons, not emojis - -### 8. Charts & Data (LOW) - -- `chart-type` - Match chart type to data type -- `color-guidance` - Use accessible color palettes -- `data-table` - Provide table alternative for accessibility - -## How to Use - -Search specific domains using the CLI tool below. - ---- - - -## Prerequisites - -Check if Python is installed: - -```bash -python3 --version || python --version -``` - -If Python is not installed, install it based on user's OS: - -**macOS:** -```bash -brew install python3 -``` - -**Ubuntu/Debian:** -```bash -sudo apt update && sudo apt install python3 -``` - -**Windows:** -```powershell -winget install Python.Python.3.12 -``` - ---- - -## How to Use This Skill - -When user requests UI/UX work (design, build, create, implement, review, fix, improve), follow this workflow: - -### Step 1: Analyze User Requirements - -Extract key information from user request: -- **Product type**: SaaS, e-commerce, portfolio, dashboard, landing page, etc. -- **Style keywords**: minimal, playful, professional, elegant, dark mode, etc. -- **Industry**: healthcare, fintech, gaming, education, etc. -- **Stack**: React, Vue, Next.js, or default to `html-tailwind` - -### Step 2: Generate Design System (REQUIRED) - -**Always start with `--design-system`** to get comprehensive recommendations with reasoning: - -```bash -python3 skills/ui-ux-pro-max/scripts/search.py " " --design-system [-p "Project Name"] -``` - -This command: -1. Searches 5 domains in parallel (product, style, color, landing, typography) -2. Applies reasoning rules from `ui-reasoning.csv` to select best matches -3. Returns complete design system: pattern, style, colors, typography, effects -4. Includes anti-patterns to avoid - -**Example:** -```bash -python3 skills/ui-ux-pro-max/scripts/search.py "beauty spa wellness service" --design-system -p "Serenity Spa" -``` - -### Step 2b: Persist Design System (Master + Overrides Pattern) - -To save the design system for hierarchical retrieval across sessions, add `--persist`: - -```bash -python3 skills/ui-ux-pro-max/scripts/search.py "" --design-system --persist -p "Project Name" -``` - -This creates: -- `design-system/MASTER.md` — Global Source of Truth with all design rules -- `design-system/pages/` — Folder for page-specific overrides - -**With page-specific override:** -```bash -python3 skills/ui-ux-pro-max/scripts/search.py "" --design-system --persist -p "Project Name" --page "dashboard" -``` - -This also creates: -- `design-system/pages/dashboard.md` — Page-specific deviations from Master - -**How hierarchical retrieval works:** -1. When building a specific page (e.g., "Checkout"), first check `design-system/pages/checkout.md` -2. If the page file exists, its rules **override** the Master file -3. If not, use `design-system/MASTER.md` exclusively - -### Step 3: Supplement with Detailed Searches (as needed) - -After getting the design system, use domain searches to get additional details: - -```bash -python3 skills/ui-ux-pro-max/scripts/search.py "" --domain [-n ] -``` - -**When to use detailed searches:** - -| Need | Domain | Example | -|------|--------|---------| -| More style options | `style` | `--domain style "glassmorphism dark"` | -| Chart recommendations | `chart` | `--domain chart "real-time dashboard"` | -| UX best practices | `ux` | `--domain ux "animation accessibility"` | -| Alternative fonts | `typography` | `--domain typography "elegant luxury"` | -| Landing structure | `landing` | `--domain landing "hero social-proof"` | - -### Step 4: Stack Guidelines (Default: html-tailwind) - -Get implementation-specific best practices. If user doesn't specify a stack, **default to `html-tailwind`**. - -```bash -python3 skills/ui-ux-pro-max/scripts/search.py "" --stack html-tailwind -``` - -Available stacks: `html-tailwind`, `react`, `nextjs`, `vue`, `svelte`, `swiftui`, `react-native`, `flutter`, `shadcn`, `jetpack-compose` - ---- - -## Search Reference - -### Available Domains - -| Domain | Use For | Example Keywords | -|--------|---------|------------------| -| `product` | Product type recommendations | SaaS, e-commerce, portfolio, healthcare, beauty, service | -| `style` | UI styles, colors, effects | glassmorphism, minimalism, dark mode, brutalism | -| `typography` | Font pairings, Google Fonts | elegant, playful, professional, modern | -| `color` | Color palettes by product type | saas, ecommerce, healthcare, beauty, fintech, service | -| `landing` | Page structure, CTA strategies | hero, hero-centric, testimonial, pricing, social-proof | -| `chart` | Chart types, library recommendations | trend, comparison, timeline, funnel, pie | -| `ux` | Best practices, anti-patterns | animation, accessibility, z-index, loading | -| `react` | React/Next.js performance | waterfall, bundle, suspense, memo, rerender, cache | -| `web` | Web interface guidelines | aria, focus, keyboard, semantic, virtualize | -| `prompt` | AI prompts, CSS keywords | (style name) | - -### Available Stacks - -| Stack | Focus | -|-------|-------| -| `html-tailwind` | Tailwind utilities, responsive, a11y (DEFAULT) | -| `react` | State, hooks, performance, patterns | -| `nextjs` | SSR, routing, images, API routes | -| `vue` | Composition API, Pinia, Vue Router | -| `svelte` | Runes, stores, SvelteKit | -| `swiftui` | Views, State, Navigation, Animation | -| `react-native` | Components, Navigation, Lists | -| `flutter` | Widgets, State, Layout, Theming | -| `shadcn` | shadcn/ui components, theming, forms, patterns | -| `jetpack-compose` | Composables, Modifiers, State Hoisting, Recomposition | - ---- - -## Example Workflow - -**User request:** "Làm landing page cho dịch vụ chăm sóc da chuyên nghiệp" - -### Step 1: Analyze Requirements -- Product type: Beauty/Spa service -- Style keywords: elegant, professional, soft -- Industry: Beauty/Wellness -- Stack: html-tailwind (default) - -### Step 2: Generate Design System (REQUIRED) - -```bash -python3 skills/ui-ux-pro-max/scripts/search.py "beauty spa wellness service elegant" --design-system -p "Serenity Spa" -``` - -**Output:** Complete design system with pattern, style, colors, typography, effects, and anti-patterns. - -### Step 3: Supplement with Detailed Searches (as needed) - -```bash -# Get UX guidelines for animation and accessibility -python3 skills/ui-ux-pro-max/scripts/search.py "animation accessibility" --domain ux - -# Get alternative typography options if needed -python3 skills/ui-ux-pro-max/scripts/search.py "elegant luxury serif" --domain typography -``` - -### Step 4: Stack Guidelines - -```bash -python3 skills/ui-ux-pro-max/scripts/search.py "layout responsive form" --stack html-tailwind -``` - -**Then:** Synthesize design system + detailed searches and implement the design. - ---- - -## Output Formats - -The `--design-system` flag supports two output formats: - -```bash -# ASCII box (default) - best for terminal display -python3 skills/ui-ux-pro-max/scripts/search.py "fintech crypto" --design-system - -# Markdown - best for documentation -python3 skills/ui-ux-pro-max/scripts/search.py "fintech crypto" --design-system -f markdown -``` - ---- - -## Tips for Better Results - -1. **Be specific with keywords** - "healthcare SaaS dashboard" > "app" -2. **Search multiple times** - Different keywords reveal different insights -3. **Combine domains** - Style + Typography + Color = Complete design system -4. **Always check UX** - Search "animation", "z-index", "accessibility" for common issues -5. **Use stack flag** - Get implementation-specific best practices -6. **Iterate** - If first search doesn't match, try different keywords - ---- - -## Common Rules for Professional UI - -These are frequently overlooked issues that make UI look unprofessional: - -### Icons & Visual Elements - -| Rule | Do | Don't | -|------|----|----- | -| **No emoji icons** | Use SVG icons (Heroicons, Lucide, Simple Icons) | Use emojis like 🎨 🚀 ⚙️ as UI icons | -| **Stable hover states** | Use color/opacity transitions on hover | Use scale transforms that shift layout | -| **Correct brand logos** | Research official SVG from Simple Icons | Guess or use incorrect logo paths | -| **Consistent icon sizing** | Use fixed viewBox (24x24) with w-6 h-6 | Mix different icon sizes randomly | - -### Interaction & Cursor - -| Rule | Do | Don't | -|------|----|----- | -| **Cursor pointer** | Add `cursor-pointer` to all clickable/hoverable cards | Leave default cursor on interactive elements | -| **Hover feedback** | Provide visual feedback (color, shadow, border) | No indication element is interactive | -| **Smooth transitions** | Use `transition-colors duration-200` | Instant state changes or too slow (>500ms) | - -### Light/Dark Mode Contrast - -| Rule | Do | Don't | -|------|----|----- | -| **Glass card light mode** | Use `bg-white/80` or higher opacity | Use `bg-white/10` (too transparent) | -| **Text contrast light** | Use `#0F172A` (slate-900) for text | Use `#94A3B8` (slate-400) for body text | -| **Muted text light** | Use `#475569` (slate-600) minimum | Use gray-400 or lighter | -| **Border visibility** | Use `border-gray-200` in light mode | Use `border-white/10` (invisible) | - -### Layout & Spacing - -| Rule | Do | Don't | -|------|----|----- | -| **Floating navbar** | Add `top-4 left-4 right-4` spacing | Stick navbar to `top-0 left-0 right-0` | -| **Content padding** | Account for fixed navbar height | Let content hide behind fixed elements | -| **Consistent max-width** | Use same `max-w-6xl` or `max-w-7xl` | Mix different container widths | - ---- - -## Pre-Delivery Checklist - -Before delivering UI code, verify these items: - -### Visual Quality -- [ ] No emojis used as icons (use SVG instead) -- [ ] All icons from consistent icon set (Heroicons/Lucide) -- [ ] Brand logos are correct (verified from Simple Icons) -- [ ] Hover states don't cause layout shift -- [ ] Use theme colors directly (bg-primary) not var() wrapper - -### Interaction -- [ ] All clickable elements have `cursor-pointer` -- [ ] Hover states provide clear visual feedback -- [ ] Transitions are smooth (150-300ms) -- [ ] Focus states visible for keyboard navigation - -### Light/Dark Mode -- [ ] Light mode text has sufficient contrast (4.5:1 minimum) -- [ ] Glass/transparent elements visible in light mode -- [ ] Borders visible in both modes -- [ ] Test both modes before delivery - -### Layout -- [ ] Floating elements have proper spacing from edges -- [ ] No content hidden behind fixed navbars -- [ ] Responsive at 375px, 768px, 1024px, 1440px -- [ ] No horizontal scroll on mobile - -### Accessibility -- [ ] All images have alt text -- [ ] Form inputs have labels -- [ ] Color is not the only indicator -- [ ] `prefers-reduced-motion` respected diff --git a/skills/ui-ux-pro-max/data/charts.csv b/skills/ui-ux-pro-max/data/charts.csv deleted file mode 100644 index 8b99663..0000000 --- a/skills/ui-ux-pro-max/data/charts.csv +++ /dev/null @@ -1,26 +0,0 @@ -No,Data Type,Keywords,Best Chart Type,Secondary Options,Color Guidance,Performance Impact,Accessibility Notes,Library Recommendation,Interactive Level -1,Trend Over Time,"trend, time-series, line, growth, timeline, progress",Line Chart,"Area Chart, Smooth Area",Primary: #0080FF. Multiple series: use distinct colors. Fill: 20% opacity,⚡ Excellent (optimized),✓ Clear line patterns for colorblind users. Add pattern overlays.,"Chart.js, Recharts, ApexCharts",Hover + Zoom -2,Compare Categories,"compare, categories, bar, comparison, ranking",Bar Chart (Horizontal or Vertical),"Column Chart, Grouped Bar",Each bar: distinct color. Category: grouped same color. Sorted: descending order,⚡ Excellent,✓ Easy to compare. Add value labels on bars for clarity.,"Chart.js, Recharts, D3.js",Hover + Sort -3,Part-to-Whole,"part-to-whole, pie, donut, percentage, proportion, share",Pie Chart or Donut,"Stacked Bar, Treemap",Colors: 5-6 max. Contrasting palette. Large slices first. Use labels.,⚡ Good (limit 6 slices),⚠ Hard for accessibility. Better: Stacked bar with legend. Avoid pie if >5 items.,"Chart.js, Recharts, D3.js",Hover + Drill -4,Correlation/Distribution,"correlation, distribution, scatter, relationship, pattern",Scatter Plot or Bubble Chart,"Heat Map, Matrix",Color axis: gradient (blue-red). Size: relative. Opacity: 0.6-0.8 to show density,⚠ Moderate (many points),⚠ Provide data table alternative. Use pattern + color distinction.,"D3.js, Plotly, Recharts",Hover + Brush -5,Heatmap/Intensity,"heatmap, heat-map, intensity, density, matrix",Heat Map or Choropleth,"Grid Heat Map, Bubble Heat",Gradient: Cool (blue) to Hot (red). Scale: clear legend. Divergent for ±data,⚡ Excellent (color CSS),⚠ Colorblind: Use pattern overlay. Provide numerical legend.,"D3.js, Plotly, ApexCharts",Hover + Zoom -6,Geographic Data,"geographic, map, location, region, geo, spatial","Choropleth Map, Bubble Map",Geographic Heat Map,Regional: single color gradient or categorized colors. Legend: clear scale,⚠ Moderate (rendering),⚠ Include text labels for regions. Provide data table alternative.,"D3.js, Mapbox, Leaflet",Pan + Zoom + Drill -7,Funnel/Flow,funnel/flow,"Funnel Chart, Sankey",Waterfall (for flows),Stages: gradient (starting color → ending color). Show conversion %,⚡ Good,✓ Clear stage labels + percentages. Good for accessibility if labeled.,"D3.js, Recharts, Custom SVG",Hover + Drill -8,Performance vs Target,performance-vs-target,Gauge Chart or Bullet Chart,"Dial, Thermometer",Performance: Red→Yellow→Green gradient. Target: marker line. Threshold colors,⚡ Good,✓ Add numerical value + percentage label beside gauge.,"D3.js, ApexCharts, Custom SVG",Hover -9,Time-Series Forecast,time-series-forecast,Line with Confidence Band,Ribbon Chart,Actual: solid line #0080FF. Forecast: dashed #FF9500. Band: light shading,⚡ Good,✓ Clearly distinguish actual vs forecast. Add legend.,"Chart.js, ApexCharts, Plotly",Hover + Toggle -10,Anomaly Detection,anomaly-detection,Line Chart with Highlights,Scatter with Alert,Normal: blue #0080FF. Anomaly: red #FF0000 circle/square marker + alert,⚡ Good,✓ Circle/marker for anomalies. Add text alert annotation.,"D3.js, Plotly, ApexCharts",Hover + Alert -11,Hierarchical/Nested Data,hierarchical/nested-data,Treemap,"Sunburst, Nested Donut, Icicle",Parent: distinct hues. Children: lighter shades. White borders 2-3px.,⚠ Moderate,⚠ Poor - provide table alternative. Label large areas.,"D3.js, Recharts, ApexCharts",Hover + Drilldown -12,Flow/Process Data,flow/process-data,Sankey Diagram,"Alluvial, Chord Diagram",Gradient from source to target. Opacity 0.4-0.6 for flows.,⚠ Moderate,⚠ Poor - provide flow table alternative.,"D3.js (d3-sankey), Plotly",Hover + Drilldown -13,Cumulative Changes,cumulative-changes,Waterfall Chart,"Stacked Bar, Cascade",Increases: #4CAF50. Decreases: #F44336. Start: #2196F3. End: #0D47A1.,⚡ Good,✓ Good - clear directional colors with labels.,"ApexCharts, Highcharts, Plotly",Hover -14,Multi-Variable Comparison,multi-variable-comparison,Radar/Spider Chart,"Parallel Coordinates, Grouped Bar",Single: #0080FF 20% fill. Multiple: distinct colors per dataset.,⚡ Good,⚠ Moderate - limit 5-8 axes. Add data table.,"Chart.js, Recharts, ApexCharts",Hover + Toggle -15,Stock/Trading OHLC,stock/trading-ohlc,Candlestick Chart,"OHLC Bar, Heikin-Ashi",Bullish: #26A69A. Bearish: #EF5350. Volume: 40% opacity below.,⚡ Good,⚠ Moderate - provide OHLC data table.,"Lightweight Charts (TradingView), ApexCharts",Real-time + Hover + Zoom -16,Relationship/Connection Data,relationship/connection-data,Network Graph,"Hierarchical Tree, Adjacency Matrix",Node types: categorical colors. Edges: #90A4AE 60% opacity.,❌ Poor (500+ nodes struggles),❌ Very Poor - provide adjacency list alternative.,"D3.js (d3-force), Vis.js, Cytoscape.js",Drilldown + Hover + Drag -17,Distribution/Statistical,distribution/statistical,Box Plot,"Violin Plot, Beeswarm",Box: #BBDEFB. Border: #1976D2. Median: #D32F2F. Outliers: #F44336.,⚡ Excellent,"✓ Good - include stats table (min, Q1, median, Q3, max).","Plotly, D3.js, Chart.js (plugin)",Hover -18,Performance vs Target (Compact),performance-vs-target-(compact),Bullet Chart,"Gauge, Progress Bar","Ranges: #FFCDD2, #FFF9C4, #C8E6C9. Performance: #1976D2. Target: black 3px.",⚡ Excellent,✓ Excellent - compact with clear values.,"D3.js, Plotly, Custom SVG",Hover -19,Proportional/Percentage,proportional/percentage,Waffle Chart,"Pictogram, Stacked Bar 100%",10x10 grid. 3-5 categories max. 2-3px spacing between squares.,⚡ Good,✓ Good - better than pie for accessibility.,"D3.js, React-Waffle, Custom CSS Grid",Hover -20,Hierarchical Proportional,hierarchical-proportional,Sunburst Chart,"Treemap, Icicle, Circle Packing",Center to outer: darker to lighter. 15-20% lighter per level.,⚠ Moderate,⚠ Poor - provide hierarchy table alternative.,"D3.js (d3-hierarchy), Recharts, ApexCharts",Drilldown + Hover -21,Root Cause Analysis,"root cause, decomposition, tree, hierarchy, drill-down, ai-split",Decomposition Tree,"Decision Tree, Flow Chart",Nodes: #2563EB (Primary) vs #EF4444 (Negative impact). Connectors: Neutral grey.,⚠ Moderate (calculation heavy),✓ clear hierarchy. Allow keyboard navigation for nodes.,"Power BI (native), React-Flow, Custom D3.js",Drill + Expand -22,3D Spatial Data,"3d, spatial, immersive, terrain, molecular, volumetric",3D Scatter/Surface Plot,"Volumetric Rendering, Point Cloud",Depth cues: lighting/shading. Z-axis: color gradient (cool to warm).,❌ Heavy (WebGL required),❌ Poor - requires alternative 2D view or data table.,"Three.js, Deck.gl, Plotly 3D",Rotate + Zoom + VR -23,Real-Time Streaming,"streaming, real-time, ticker, live, velocity, pulse",Streaming Area Chart,"Ticker Tape, Moving Gauge",Current: Bright Pulse (#00FF00). History: Fading opacity. Grid: Dark.,⚡ Optimized (canvas/webgl),⚠ Flashing elements - provide pause button. High contrast.,Smoothed D3.js, CanvasJS -24,Sentiment/Emotion,"sentiment, emotion, nlp, opinion, feeling",Word Cloud with Sentiment,"Sentiment Arc, Radar Chart",Positive: #22C55E. Negative: #EF4444. Neutral: #94A3B8. Size = Frequency.,⚡ Good,⚠ Word clouds poor for screen readers. Use list view.,"D3-cloud, Highcharts, Nivo",Hover + Filter -25,Process Mining,"process, mining, variants, path, bottleneck, log",Process Map / Graph,"Directed Acyclic Graph (DAG), Petri Net",Happy path: #10B981 (Thick). Deviations: #F59E0B (Thin). Bottlenecks: #EF4444.,⚠ Moderate to Heavy,⚠ Complex graphs hard to navigate. Provide path summary.,"React-Flow, Cytoscape.js, Recharts",Drag + Node-Click diff --git a/skills/ui-ux-pro-max/data/colors.csv b/skills/ui-ux-pro-max/data/colors.csv deleted file mode 100644 index d9fd043..0000000 --- a/skills/ui-ux-pro-max/data/colors.csv +++ /dev/null @@ -1,97 +0,0 @@ -No,Product Type,Primary (Hex),Secondary (Hex),CTA (Hex),Background (Hex),Text (Hex),Border (Hex),Notes -1,SaaS (General),#2563EB,#3B82F6,#F97316,#F8FAFC,#1E293B,#E2E8F0,Trust blue + orange CTA contrast -2,Micro SaaS,#6366F1,#818CF8,#10B981,#F5F3FF,#1E1B4B,#E0E7FF,Indigo primary + emerald CTA -3,E-commerce,#059669,#10B981,#F97316,#ECFDF5,#064E3B,#A7F3D0,Success green + urgency orange -4,E-commerce Luxury,#1C1917,#44403C,#CA8A04,#FAFAF9,#0C0A09,#D6D3D1,Premium dark + gold accent -5,Service Landing Page,#0EA5E9,#38BDF8,#F97316,#F0F9FF,#0C4A6E,#BAE6FD,Sky blue trust + warm CTA -6,B2B Service,#0F172A,#334155,#0369A1,#F8FAFC,#020617,#E2E8F0,Professional navy + blue CTA -7,Financial Dashboard,#0F172A,#1E293B,#22C55E,#020617,#F8FAFC,#334155,Dark bg + green positive indicators -8,Analytics Dashboard,#1E40AF,#3B82F6,#F59E0B,#F8FAFC,#1E3A8A,#DBEAFE,Blue data + amber highlights -9,Healthcare App,#0891B2,#22D3EE,#059669,#ECFEFF,#164E63,#A5F3FC,Calm cyan + health green -10,Educational App,#4F46E5,#818CF8,#F97316,#EEF2FF,#1E1B4B,#C7D2FE,Playful indigo + energetic orange -11,Creative Agency,#EC4899,#F472B6,#06B6D4,#FDF2F8,#831843,#FBCFE8,Bold pink + cyan accent -12,Portfolio/Personal,#18181B,#3F3F46,#2563EB,#FAFAFA,#09090B,#E4E4E7,Monochrome + blue accent -13,Gaming,#7C3AED,#A78BFA,#F43F5E,#0F0F23,#E2E8F0,#4C1D95,Neon purple + rose action -14,Government/Public Service,#0F172A,#334155,#0369A1,#F8FAFC,#020617,#E2E8F0,High contrast navy + blue -15,Fintech/Crypto,#F59E0B,#FBBF24,#8B5CF6,#0F172A,#F8FAFC,#334155,Gold trust + purple tech -16,Social Media App,#E11D48,#FB7185,#2563EB,#FFF1F2,#881337,#FECDD3,Vibrant rose + engagement blue -17,Productivity Tool,#0D9488,#14B8A6,#F97316,#F0FDFA,#134E4A,#99F6E4,Teal focus + action orange -18,Design System/Component Library,#4F46E5,#6366F1,#F97316,#EEF2FF,#312E81,#C7D2FE,Indigo brand + doc hierarchy -19,AI/Chatbot Platform,#7C3AED,#A78BFA,#06B6D4,#FAF5FF,#1E1B4B,#DDD6FE,AI purple + cyan interactions -20,NFT/Web3 Platform,#8B5CF6,#A78BFA,#FBBF24,#0F0F23,#F8FAFC,#4C1D95,Purple tech + gold value -21,Creator Economy Platform,#EC4899,#F472B6,#F97316,#FDF2F8,#831843,#FBCFE8,Creator pink + engagement orange -22,Sustainability/ESG Platform,#059669,#10B981,#0891B2,#ECFDF5,#064E3B,#A7F3D0,Nature green + ocean blue -23,Remote Work/Collaboration Tool,#6366F1,#818CF8,#10B981,#F5F3FF,#312E81,#E0E7FF,Calm indigo + success green -24,Mental Health App,#8B5CF6,#C4B5FD,#10B981,#FAF5FF,#4C1D95,#EDE9FE,Calming lavender + wellness green -25,Pet Tech App,#F97316,#FB923C,#2563EB,#FFF7ED,#9A3412,#FED7AA,Playful orange + trust blue -26,Smart Home/IoT Dashboard,#1E293B,#334155,#22C55E,#0F172A,#F8FAFC,#475569,Dark tech + status green -27,EV/Charging Ecosystem,#0891B2,#22D3EE,#22C55E,#ECFEFF,#164E63,#A5F3FC,Electric cyan + eco green -28,Subscription Box Service,#D946EF,#E879F9,#F97316,#FDF4FF,#86198F,#F5D0FE,Excitement purple + urgency orange -29,Podcast Platform,#1E1B4B,#312E81,#F97316,#0F0F23,#F8FAFC,#4338CA,Dark audio + warm accent -30,Dating App,#E11D48,#FB7185,#F97316,#FFF1F2,#881337,#FECDD3,Romantic rose + warm orange -31,Micro-Credentials/Badges Platform,#0369A1,#0EA5E9,#CA8A04,#F0F9FF,#0C4A6E,#BAE6FD,Trust blue + achievement gold -32,Knowledge Base/Documentation,#475569,#64748B,#2563EB,#F8FAFC,#1E293B,#E2E8F0,Neutral grey + link blue -33,Hyperlocal Services,#059669,#10B981,#F97316,#ECFDF5,#064E3B,#A7F3D0,Location green + action orange -34,Beauty/Spa/Wellness Service,#EC4899,#F9A8D4,#8B5CF6,#FDF2F8,#831843,#FBCFE8,Soft pink + lavender luxury -35,Luxury/Premium Brand,#1C1917,#44403C,#CA8A04,#FAFAF9,#0C0A09,#D6D3D1,Premium black + gold accent -36,Restaurant/Food Service,#DC2626,#F87171,#CA8A04,#FEF2F2,#450A0A,#FECACA,Appetizing red + warm gold -37,Fitness/Gym App,#F97316,#FB923C,#22C55E,#1F2937,#F8FAFC,#374151,Energy orange + success green -38,Real Estate/Property,#0F766E,#14B8A6,#0369A1,#F0FDFA,#134E4A,#99F6E4,Trust teal + professional blue -39,Travel/Tourism Agency,#0EA5E9,#38BDF8,#F97316,#F0F9FF,#0C4A6E,#BAE6FD,Sky blue + adventure orange -40,Hotel/Hospitality,#1E3A8A,#3B82F6,#CA8A04,#F8FAFC,#1E40AF,#BFDBFE,Luxury navy + gold service -41,Wedding/Event Planning,#DB2777,#F472B6,#CA8A04,#FDF2F8,#831843,#FBCFE8,Romantic pink + elegant gold -42,Legal Services,#1E3A8A,#1E40AF,#B45309,#F8FAFC,#0F172A,#CBD5E1,Authority navy + trust gold -43,Insurance Platform,#0369A1,#0EA5E9,#22C55E,#F0F9FF,#0C4A6E,#BAE6FD,Security blue + protected green -44,Banking/Traditional Finance,#0F172A,#1E3A8A,#CA8A04,#F8FAFC,#020617,#E2E8F0,Trust navy + premium gold -45,Online Course/E-learning,#0D9488,#2DD4BF,#F97316,#F0FDFA,#134E4A,#5EEAD4,Progress teal + achievement orange -46,Non-profit/Charity,#0891B2,#22D3EE,#F97316,#ECFEFF,#164E63,#A5F3FC,Compassion blue + action orange -47,Music Streaming,#1E1B4B,#4338CA,#22C55E,#0F0F23,#F8FAFC,#312E81,Dark audio + play green -48,Video Streaming/OTT,#0F0F23,#1E1B4B,#E11D48,#000000,#F8FAFC,#312E81,Cinema dark + play red -49,Job Board/Recruitment,#0369A1,#0EA5E9,#22C55E,#F0F9FF,#0C4A6E,#BAE6FD,Professional blue + success green -50,Marketplace (P2P),#7C3AED,#A78BFA,#22C55E,#FAF5FF,#4C1D95,#DDD6FE,Trust purple + transaction green -51,Logistics/Delivery,#2563EB,#3B82F6,#F97316,#EFF6FF,#1E40AF,#BFDBFE,Tracking blue + delivery orange -52,Agriculture/Farm Tech,#15803D,#22C55E,#CA8A04,#F0FDF4,#14532D,#BBF7D0,Earth green + harvest gold -53,Construction/Architecture,#64748B,#94A3B8,#F97316,#F8FAFC,#334155,#E2E8F0,Industrial grey + safety orange -54,Automotive/Car Dealership,#1E293B,#334155,#DC2626,#F8FAFC,#0F172A,#E2E8F0,Premium dark + action red -55,Photography Studio,#18181B,#27272A,#F8FAFC,#000000,#FAFAFA,#3F3F46,Pure black + white contrast -56,Coworking Space,#F59E0B,#FBBF24,#2563EB,#FFFBEB,#78350F,#FDE68A,Energetic amber + booking blue -57,Cleaning Service,#0891B2,#22D3EE,#22C55E,#ECFEFF,#164E63,#A5F3FC,Fresh cyan + clean green -58,Home Services (Plumber/Electrician),#1E40AF,#3B82F6,#F97316,#EFF6FF,#1E3A8A,#BFDBFE,Professional blue + urgent orange -59,Childcare/Daycare,#F472B6,#FBCFE8,#22C55E,#FDF2F8,#9D174D,#FCE7F3,Soft pink + safe green -60,Senior Care/Elderly,#0369A1,#38BDF8,#22C55E,#F0F9FF,#0C4A6E,#E0F2FE,Calm blue + reassuring green -61,Medical Clinic,#0891B2,#22D3EE,#22C55E,#F0FDFA,#134E4A,#CCFBF1,Medical teal + health green -62,Pharmacy/Drug Store,#15803D,#22C55E,#0369A1,#F0FDF4,#14532D,#BBF7D0,Pharmacy green + trust blue -63,Dental Practice,#0EA5E9,#38BDF8,#FBBF24,#F0F9FF,#0C4A6E,#BAE6FD,Fresh blue + smile yellow -64,Veterinary Clinic,#0D9488,#14B8A6,#F97316,#F0FDFA,#134E4A,#99F6E4,Caring teal + warm orange -65,Florist/Plant Shop,#15803D,#22C55E,#EC4899,#F0FDF4,#14532D,#BBF7D0,Natural green + floral pink -66,Bakery/Cafe,#92400E,#B45309,#F8FAFC,#FEF3C7,#78350F,#FDE68A,Warm brown + cream white -67,Coffee Shop,#78350F,#92400E,#FBBF24,#FEF3C7,#451A03,#FDE68A,Coffee brown + warm gold -68,Brewery/Winery,#7C2D12,#B91C1C,#CA8A04,#FEF2F2,#450A0A,#FECACA,Deep burgundy + craft gold -69,Airline,#1E3A8A,#3B82F6,#F97316,#EFF6FF,#1E40AF,#BFDBFE,Sky blue + booking orange -70,News/Media Platform,#DC2626,#EF4444,#1E40AF,#FEF2F2,#450A0A,#FECACA,Breaking red + link blue -71,Magazine/Blog,#18181B,#3F3F46,#EC4899,#FAFAFA,#09090B,#E4E4E7,Editorial black + accent pink -72,Freelancer Platform,#6366F1,#818CF8,#22C55E,#EEF2FF,#312E81,#C7D2FE,Creative indigo + hire green -73,Consulting Firm,#0F172A,#334155,#CA8A04,#F8FAFC,#020617,#E2E8F0,Authority navy + premium gold -74,Marketing Agency,#EC4899,#F472B6,#06B6D4,#FDF2F8,#831843,#FBCFE8,Bold pink + creative cyan -75,Event Management,#7C3AED,#A78BFA,#F97316,#FAF5FF,#4C1D95,#DDD6FE,Excitement purple + action orange -76,Conference/Webinar Platform,#1E40AF,#3B82F6,#22C55E,#EFF6FF,#1E3A8A,#BFDBFE,Professional blue + join green -77,Membership/Community,#7C3AED,#A78BFA,#22C55E,#FAF5FF,#4C1D95,#DDD6FE,Community purple + join green -78,Newsletter Platform,#0369A1,#0EA5E9,#F97316,#F0F9FF,#0C4A6E,#BAE6FD,Trust blue + subscribe orange -79,Digital Products/Downloads,#6366F1,#818CF8,#22C55E,#EEF2FF,#312E81,#C7D2FE,Digital indigo + buy green -80,Church/Religious Organization,#7C3AED,#A78BFA,#CA8A04,#FAF5FF,#4C1D95,#DDD6FE,Spiritual purple + warm gold -81,Sports Team/Club,#DC2626,#EF4444,#FBBF24,#FEF2F2,#7F1D1D,#FECACA,Team red + championship gold -82,Museum/Gallery,#18181B,#27272A,#F8FAFC,#FAFAFA,#09090B,#E4E4E7,Gallery black + white space -83,Theater/Cinema,#1E1B4B,#312E81,#CA8A04,#0F0F23,#F8FAFC,#4338CA,Dramatic dark + spotlight gold -84,Language Learning App,#4F46E5,#818CF8,#22C55E,#EEF2FF,#312E81,#C7D2FE,Learning indigo + progress green -85,Coding Bootcamp,#0F172A,#1E293B,#22C55E,#020617,#F8FAFC,#334155,Terminal dark + success green -86,Cybersecurity Platform,#00FF41,#0D0D0D,#FF3333,#000000,#E0E0E0,#1F1F1F,Matrix green + alert red -87,Developer Tool / IDE,#1E293B,#334155,#22C55E,#0F172A,#F8FAFC,#475569,Code dark + run green -88,Biotech / Life Sciences,#0EA5E9,#0284C7,#10B981,#F0F9FF,#0C4A6E,#BAE6FD,DNA blue + life green -89,Space Tech / Aerospace,#F8FAFC,#94A3B8,#3B82F6,#0B0B10,#F8FAFC,#1E293B,Star white + launch blue -90,Architecture / Interior,#171717,#404040,#D4AF37,#FFFFFF,#171717,#E5E5E5,Minimal black + accent gold -91,Quantum Computing,#00FFFF,#7B61FF,#FF00FF,#050510,#E0E0FF,#333344,Quantum cyan + interference purple -92,Biohacking / Longevity,#FF4D4D,#4D94FF,#00E676,#F5F5F7,#1C1C1E,#E5E5EA,Bio red/blue + vitality green -93,Autonomous Systems,#00FF41,#008F11,#FF3333,#0D1117,#E6EDF3,#30363D,Terminal green + alert red -94,Generative AI Art,#18181B,#3F3F46,#EC4899,#FAFAFA,#09090B,#E4E4E7,Canvas neutral + creative pink -95,Spatial / Vision OS,#FFFFFF,#E5E5E5,#007AFF,#888888,#000000,#CCCCCC,Glass white + system blue -96,Climate Tech,#059669,#10B981,#FBBF24,#ECFDF5,#064E3B,#A7F3D0,Nature green + solar gold diff --git a/skills/ui-ux-pro-max/data/icons.csv b/skills/ui-ux-pro-max/data/icons.csv deleted file mode 100644 index a85e97f..0000000 --- a/skills/ui-ux-pro-max/data/icons.csv +++ /dev/null @@ -1,101 +0,0 @@ -No,Category,Icon Name,Keywords,Library,Import Code,Usage,Best For,Style -1,Navigation,menu,hamburger menu navigation toggle bars,Lucide,import { Menu } from 'lucide-react',,Mobile navigation drawer toggle sidebar,Outline -2,Navigation,arrow-left,back previous return navigate,Lucide,import { ArrowLeft } from 'lucide-react',,Back button breadcrumb navigation,Outline -3,Navigation,arrow-right,next forward continue navigate,Lucide,import { ArrowRight } from 'lucide-react',,Forward button next step CTA,Outline -4,Navigation,chevron-down,dropdown expand accordion select,Lucide,import { ChevronDown } from 'lucide-react',,Dropdown toggle accordion header,Outline -5,Navigation,chevron-up,collapse close accordion minimize,Lucide,import { ChevronUp } from 'lucide-react',,Accordion collapse minimize,Outline -6,Navigation,home,homepage main dashboard start,Lucide,import { Home } from 'lucide-react',,Home navigation main page,Outline -7,Navigation,x,close cancel dismiss remove exit,Lucide,import { X } from 'lucide-react',,Modal close dismiss button,Outline -8,Navigation,external-link,open new tab external link,Lucide,import { ExternalLink } from 'lucide-react',,External link indicator,Outline -9,Action,plus,add create new insert,Lucide,import { Plus } from 'lucide-react',,Add button create new item,Outline -10,Action,minus,remove subtract decrease delete,Lucide,import { Minus } from 'lucide-react',,Remove item quantity decrease,Outline -11,Action,trash-2,delete remove discard bin,Lucide,import { Trash2 } from 'lucide-react',,Delete action destructive,Outline -12,Action,edit,pencil modify change update,Lucide,import { Edit } from 'lucide-react',,Edit button modify content,Outline -13,Action,save,disk store persist save,Lucide,import { Save } from 'lucide-react',,Save button persist changes,Outline -14,Action,download,export save file download,Lucide,import { Download } from 'lucide-react',,Download file export,Outline -15,Action,upload,import file attach upload,Lucide,import { Upload } from 'lucide-react',,Upload file import,Outline -16,Action,copy,duplicate clipboard paste,Lucide,import { Copy } from 'lucide-react',,Copy to clipboard,Outline -17,Action,share,social distribute send,Lucide,import { Share } from 'lucide-react',,Share button social,Outline -18,Action,search,find lookup filter query,Lucide,import { Search } from 'lucide-react',,Search input bar,Outline -19,Action,filter,sort refine narrow options,Lucide,import { Filter } from 'lucide-react',,Filter dropdown sort,Outline -20,Action,settings,gear cog preferences config,Lucide,import { Settings } from 'lucide-react',,Settings page configuration,Outline -21,Status,check,success done complete verified,Lucide,import { Check } from 'lucide-react',,Success state checkmark,Outline -22,Status,check-circle,success verified approved complete,Lucide,import { CheckCircle } from 'lucide-react',,Success badge verified,Outline -23,Status,x-circle,error failed cancel rejected,Lucide,import { XCircle } from 'lucide-react',,Error state failed,Outline -24,Status,alert-triangle,warning caution attention danger,Lucide,import { AlertTriangle } from 'lucide-react',,Warning message caution,Outline -25,Status,alert-circle,info notice information help,Lucide,import { AlertCircle } from 'lucide-react',,Info notice alert,Outline -26,Status,info,information help tooltip details,Lucide,import { Info } from 'lucide-react',,Information tooltip help,Outline -27,Status,loader,loading spinner processing wait,Lucide,import { Loader } from 'lucide-react',,Loading state spinner,Outline -28,Status,clock,time schedule pending wait,Lucide,import { Clock } from 'lucide-react',,Pending time schedule,Outline -29,Communication,mail,email message inbox letter,Lucide,import { Mail } from 'lucide-react',,Email contact inbox,Outline -30,Communication,message-circle,chat comment bubble conversation,Lucide,import { MessageCircle } from 'lucide-react',,Chat comment message,Outline -31,Communication,phone,call mobile telephone contact,Lucide,import { Phone } from 'lucide-react',,Phone contact call,Outline -32,Communication,send,submit dispatch message airplane,Lucide,import { Send } from 'lucide-react',,Send message submit,Outline -33,Communication,bell,notification alert ring reminder,Lucide,import { Bell } from 'lucide-react',,Notification bell alert,Outline -34,User,user,profile account person avatar,Lucide,import { User } from 'lucide-react',,User profile account,Outline -35,User,users,team group people members,Lucide,import { Users } from 'lucide-react',,Team group members,Outline -36,User,user-plus,add invite new member,Lucide,import { UserPlus } from 'lucide-react',,Add user invite,Outline -37,User,log-in,signin authenticate enter,Lucide,import { LogIn } from 'lucide-react',,Login signin,Outline -38,User,log-out,signout exit leave logout,Lucide,import { LogOut } from 'lucide-react',,Logout signout,Outline -39,Media,image,photo picture gallery thumbnail,Lucide,import { Image } from 'lucide-react',,Image photo gallery,Outline -40,Media,video,movie film play record,Lucide,import { Video } from 'lucide-react',