[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6PDTGVDG503T4QNX64KJMAC":3,"skill-same:01M6PDTGVDG503T4QNX64KJMAC":75},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":54,"repositoryHtmlUrl":55,"repositoryHomepageUrl":56,"ownerHtmlUrl":57,"ownerBlogUrl":58,"ownerDescription":59,"updatedAt":60,"install":61,"resources":74},"01M6PDTGVDG503T4QNX64KJMAC","repo-stats-autoupdate",null,"Keeps README badge + inline counts in sync with the real number of skills, agents, graph nodes\u002Fedges, communities, converted pipelines, and test inventory. Runs automatically on every commit via a git pre-commit hook. Use when the README drifts from reality or before publishing a release.","stevesolun\u002Fctx","stevesolun","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1304538?v=4","01M6PDDJQ35XAXMPJQP8YG3P2X","Steve Solun","01M6PDDJVJ663A3CMV7XQN9XAY",590,"MIT","https:\u002F\u002Fgithub.com\u002Fstevesolun\u002Fctx\u002Fblob\u002Fmain\u002Fskills\u002Frepo-stats-autoupdate\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"repo stats autoupdate","stats","repo","README","inline","number","hook","with","false","communities","publishing","use","test","inventory","pre-commit","graph","git","release","sync","commit","2026-11-10 10:12:30",false,"---\nname: repo-stats-autoupdate\ndescription: Keeps README badge + inline counts in sync with the real number of skills, agents, graph nodes\u002Fedges, communities, converted pipelines, and test inventory. Runs automatically on every commit via a git pre-commit hook. Use when the README drifts from reality or before publishing a release.\ntype: maintenance\npriority: 30\nalways_load: false\n---\n\n# repo-stats-autoupdate\n\n## What this skill does\n\nReads the **authoritative sources** for the ctx repo's key numbers and patches `README.md` in place so badges and inline counts never drift:\n\n| Number | Source of truth |\n|---|---|\n| Skills | `~\u002F.claude\u002Fskill-wiki\u002Fgraphify-out\u002Fgraph.json` — count nodes where `type == \"skill\"` |\n| Agents | same file — count nodes where `type == \"agent\"` |\n| Graph nodes | `len(graph[\"nodes\"])` |\n| Graph edges | `len(graph[\"edges\"])`, formatted as `642K` \u002F `1.2M` |\n| Communities | `graph\u002Fcommunities.json` → `total_communities` |\n| Converted pipelines | `~\u002F.claude\u002Fskill-wiki\u002Fconverted\u002F` subdir count |\n| Tests | checked-in README\u002Fdocs inventory by default; set `CTX_UPDATE_REPO_STATS_LIVE_TESTS=1` to refresh from `pytest --collect-only -q` |\n\nFields that can't be resolved (e.g. wiki not deployed) are left untouched — the updater never blocks a commit.\n\n## How to use it\n\n**One-time install (per clone):**\n```bash\ngit config core.hooksPath .githooks\n```\n\nAfter that, every `git commit` runs `.githooks\u002Fpre-commit` which calls the updater and re-stages `README.md` if any number drifted.\n\n**Manual run:**\n```bash\npython src\u002Fupdate_repo_stats.py          # patch README\npython src\u002Fupdate_repo_stats.py --check  # exit 1 if stale (for CI)\nCTX_UPDATE_REPO_STATS_LIVE_TESTS=1 python src\u002Fupdate_repo_stats.py  # refresh test inventory\n```\n\n## When NOT to use it\n\n- When you've deliberately phrased a number descriptively (e.g. \"over 1,700 skills\") — the regex patterns only match exact digits, so prose phrasings are safe, but double-check after big imports.\n- When the wiki isn't deployed locally. The updater degrades gracefully: it prints a warning and skips fields it can't resolve. It does **not** invent numbers.\n\n## Known gaps (intentionally out of scope)\n\n- **Does not rebuild the graph or wiki.** Rebuilding `graph\u002Fwiki-graph.tar.gz` takes minutes and churns a large artifact — too heavy for per-commit. Run `ctx-wiki-graphify`, then `python src\u002Fvalidate_graph_artifacts.py --deep`, and repack the tarball manually when the skill catalog changes materially.\n- **Does not verify graph integrity.** If `graphify-out\u002Fgraph.json` is corrupt, you'll get junk numbers. Run the wiki health check (`python src\u002Fwiki_orchestrator.py --check`) separately.\n\n## Related files\n\n- [src\u002Fupdate_repo_stats.py](..\u002F..\u002Fsrc\u002Fupdate_repo_stats.py) — the worker\n- [.githooks\u002Fpre-commit](..\u002F..\u002F.githooks\u002Fpre-commit) — the per-commit trigger\n- `README.md` — the target being kept in sync\n","# repo-stats-autoupdate\n\n## What this skill does\n\nReads the **authoritative sources** for the ctx repo's key numbers and patches `README.md` in place so badges and inline counts never drift:\n\n| Number | Source of truth |\n|---|---|\n| Skills | `~\u002F.claude\u002Fskill-wiki\u002Fgraphify-out\u002Fgraph.json` — count nodes where `type == \"skill\"` |\n| Agents | same file — count nodes where `type == \"agent\"` |\n| Graph nodes | `len(graph[\"nodes\"])` |\n| Graph edges | `len(graph[\"edges\"])`, formatted as `642K` \u002F `1.2M` |\n| Communities | `graph\u002Fcommunities.json` → `total_communities` |\n| Converted pipelines | `~\u002F.claude\u002Fskill-wiki\u002Fconverted\u002F` subdir count |\n| Tests | checked-in README\u002Fdocs inventory by default; set `CTX_UPDATE_REPO_STATS_LIVE_TESTS=1` to refresh from `pytest --collect-only -q` |\n\nFields that can't be resolved (e.g. wiki not deployed) are left untouched — the updater never blocks a commit.\n\n## How to use it\n\n**One-time install (per clone):**\n```bash\ngit config core.hooksPath .githooks\n```\n\nAfter that, every `git commit` runs `.githooks\u002Fpre-commit` which calls the updater and re-stages `README.md` if any number drifted.\n\n**Manual run:**\n```bash\npython src\u002Fupdate_repo_stats.py          # patch README\npython src\u002Fupdate_repo_stats.py --check  # exit 1 if stale (for CI)\nCTX_UPDATE_REPO_STATS_LIVE_TESTS=1 python src\u002Fupdate_repo_stats.py  # refresh test inventory\n```\n\n## When NOT to use it\n\n- When you've deliberately phrased a number descriptively (e.g. \"over 1,700 skills\") — the regex patterns only match exact digits, so prose phrasings are safe, but double-check after big imports.\n- When the wiki isn't deployed locally. The updater degrades gracefully: it prints a warning and skips fields it can't resolve. It does **not** invent numbers.\n\n## Known gaps (intentionally out of scope)\n\n- **Does not rebuild the graph or wiki.** Rebuilding `graph\u002Fwiki-graph.tar.gz` takes minutes and churns a large artifact — too heavy for per-commit. Run `ctx-wiki-graphify`, then `python src\u002Fvalidate_graph_artifacts.py --deep`, and repack the tarball manually when the skill catalog changes materially.\n- **Does not verify graph integrity.** If `graphify-out\u002Fgraph.json` is corrupt, you'll get junk numbers. Run the wiki health check (`python src\u002Fwiki_orchestrator.py --check`) separately.\n\n## Related files\n\n- [src\u002Fupdate_repo_stats.py](..\u002F..\u002Fsrc\u002Fupdate_repo_stats.py) — the worker\n- [.githooks\u002Fpre-commit](..\u002F..\u002F.githooks\u002Fpre-commit) — the per-commit trigger\n- `README.md` — the target being kept in sync\n",{"name":5,"type":49,"priority":50,"always_load":45,"description":7},"maintenance",30,"main","11b582a7cd4d549f1e83c412e04421bcc9c3fc28","skills\u002Frepo-stats-autoupdate",69,"https:\u002F\u002Fgithub.com\u002Fstevesolun\u002Fctx","https:\u002F\u002Fstevesolun.github.io\u002Fctx\u002F","https:\u002F\u002Fgithub.com\u002Fstevesolun","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fsolunsteve\u002F","High motivated, dedicated, fast learner data scientist and enthusiastic researcher.","2026-10-15 03:55:28",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add stevesolun\u002Fctx --skill repo-stats-autoupdate",{"tool":67,"command":68},"bunx","bunx skills add stevesolun\u002Fctx --skill repo-stats-autoupdate",{"tool":70,"command":71},"pnpm","pnpm dlx skills add stevesolun\u002Fctx --skill repo-stats-autoupdate","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fstevesolun\u002Fctx\u002Fblob\u002Fmain\u002Fskills\u002Frepo-stats-autoupdate\u002FSKILL.md",true,[],[76,101,121,147,168,187],{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":82,"publishedAt":44},"01M6PDTT7F6Z9T6G6H92845RNC","toolbox","Pre\u002Fpost dev toolbox — named bundles of skills\u002Fagents loaded before development work and councils of experts invoked after. Run \u002Ftoolbox or the toolbox.py CLI to list, activate, initialize, export, import, and validate toolboxes. Invoke at the start or end of a dev session, when setting up a new repo, or when sharing toolboxes with a team.","https:\u002F\u002Fgithub.com\u002Fstevesolun\u002Fctx\u002Fblob\u002Fmain\u002Fskills\u002Ftoolbox\u002FSKILL.md",[],[78,83,84,85,86,87,88,89,90,91,92,93,94,95,96,32,97,98,99,100],"cli","development","run","start","team","work","list","initialize","export","up","activate","feature","end","new repo","import","experts","at","invoke",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":108,"publishedAt":44},"01M6PDTNZ10BAW6VY49S40NCBB","skill-router","Alive skill router — reads the current project's stack and loads\u002Funloads skills dynamically. Invoke at session start or when project context changes.","https:\u002F\u002Fgithub.com\u002Fstevesolun\u002Fctx\u002Fblob\u002Fmain\u002Fskills\u002Fskill-router\u002FSKILL.md",[107],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[109,110,86,111,112,113,114,115,116,117,118,119,99,120,100],"router","skill router","Meta","stack","context","session","project context","project","loads","session start","true","changes",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":133,"publishedAt":44},"01M6PDTC3AB7H4NXJFS3SDKQG9","find-skills","Discover installable agent skills from ctx's shipped Skills.sh catalog, the Skills.sh search API, and the npx skills CLI. Use when a user asks whether a skill exists, wants to add\u002Fupdate a skill, or needs a repeatable procedure for finding candidate skills safely.","https:\u002F\u002Fgithub.com\u002Fstevesolun\u002Fctx\u002Fblob\u002Fmain\u002Fskills\u002Ffind-skills\u002FSKILL.md",[127,128],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":129,"categoryName":130,"taxonomyType":131,"taxonomyTypeDesc":132},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[134,135,83,136,137,138,139,140,35,64,141,142,143,144,145,146],"find skills","find","update","search","api","user","catalog","discover","add","skills cli","for","candidate","ctx",{"skillNo":148,"name":149,"nameZh":6,"description":150,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":153,"publishedAt":44},"01M6PDT6ETDH54GGY7K8E29Y9V","no-mistakes","Validate committed feature-branch changes through the no-mistakes pipeline: intent, rebase, review, test, docs, lint, push, PR, and CI. Use when the user asks to run no-mistakes, ship safely, validate before pushing, or gate a change before it reaches upstream.","https:\u002F\u002Fgithub.com\u002Fstevesolun\u002Fctx\u002Fblob\u002Fmain\u002Fimported-skills\u002Fno-mistakes\u002Fskills\u002Fno-mistakes\u002FSKILL.md",[],[154,155,36,156,157,158,85,159,160,161,162,163,164,165,35,166,167,94,119,120],"no mistakes","review","change","validate","pr","lint","push","ci","pipeline","ship","rebase","branch","intent","upstream",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":176,"publishedAt":44},"01M6PDT18DD3HETZF1CF39CT8J","zoom-out","Tell the agent to zoom out and give broader context or a higher-level perspective. Use when you're unfamiliar with a section of code or need to understand how it fits into the bigger picture.","https:\u002F\u002Fgithub.com\u002Fstevesolun\u002Fctx\u002Fblob\u002Fmain\u002Fimported-skills\u002Fmattpocock\u002Fzoom-out\u002FSKILL.md",[174,175],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":129,"categoryName":130,"taxonomyType":131,"taxonomyTypeDesc":132},[177,178,179,180,113,35,181,182,31,183,184,119,185,186],"zoom out","zoom","code","how","it","understand","you","re","perspective","section",{"skillNo":188,"name":189,"nameZh":6,"description":190,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":191,"categories":192,"keywords":199,"publishedAt":44},"01M6PDSV6V3XBA35MHAJQNKSFE","writing-shape","Take a markdown file of raw material and shape it into an article through a conversational session — drafting candidate openings, growing the piece paragraph by paragraph, arguing about format (lists, tables, callouts, quotes) at each step. Use when the user has a pile of notes, fragments, or a rough draft and wants help turning it into something publishable.","https:\u002F\u002Fgithub.com\u002Fstevesolun\u002Fctx\u002Fblob\u002Fmain\u002Fimported-skills\u002Fmattpocock\u002Fwriting-shape\u002FSKILL.md",[193,196],{"categoryNo":194,"categoryName":195,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":197,"categoryName":198,"taxonomyType":131,"taxonomyTypeDesc":132},"01JBSEEDCAT000000000000036","内容创作者",[200,201,202,203,204,205,206,207,139,114,35,208,209,210,211,181,212,213,99,145],"writing","writing shape","shape","notes","help","file","markdown","format","take","draft","article","material","about","quotes"]