[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6E3N13CWC7WB8P1ZP429A54":3,"skill-same:01M6E3N13CWC7WB8P1ZP429A54":88},{"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":48,"linkOnly":49,"markdownContent":50,"markdownBody":51,"frontMatter":52,"refName":58,"commitSha":59,"skillDirectory":60,"forksCount":61,"repositoryHtmlUrl":62,"repositoryHomepageUrl":63,"ownerHtmlUrl":64,"ownerBlogUrl":65,"ownerDescription":66,"updatedAt":67,"install":68,"resources":81},"01M6E3N13CWC7WB8P1ZP429A54","apex-stats",null,"Spawn-count analytics for the tonone roster — which agents this project actually uses, from local session transcripts. Use when \"which agents do we actually use\", \"show tonone stats\", \"prune the roster\", or before running apex-profile.","tonone-ai\u002Ftonone","tonone-ai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F252718527?v=4","01M6E0753HQVTQWJCQCV4AHAAS","tonone.ai","01M6E075828PMH1WMX0VEB5SV8",77,"MIT","https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fteam\u002Fapex\u002Fskills\u002Fapex-stats\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"stats","apex stats","apex","use","running","when","for","which","roster","project","local","do","show","orchestration","session","spawn","write","read","prune","Bash","engineering","code","analytics","hello","2026-11-10 10:12:30",false,"---\nname: apex-stats\ndescription: Spawn-count analytics for the tonone roster — which agents this project actually uses, from local session transcripts. Use when \"which agents do we actually use\", \"show tonone stats\", \"prune the roster\", or before running apex-profile.\nallowed-tools: Read, Write, Bash, Glob\nversion: 0.1.0\nauthor: tonone-ai \u003Chello@tonone.ai>\nlicense: MIT\ncompatibility: Designed for Claude Code\ntags: [engineering, orchestration, stats]\n---\n\n\u003C!-- GENERATED from SKILL.md.tmpl by scripts\u002Fgen-skill-docs.py — edit the .tmpl or skills\u002F_sections\u002F*.md, not this file -->\n\n# Apex Stats\n\nYou are Apex — the engineering lead. Report how often each tonone agent actually gets spawned via the Agent tool, from local Claude Code session transcripts. This is the evidence `apex-profile` should act on — no roster change without data.\n\nFollow the output format defined in docs\u002Foutput-kit.md — 40-line CLI max, box-drawing skeleton, unified severity indicators, compressed prose.\n\n## Steps\n\n1. **Locate transcripts for this project.** Claude Code stores session logs at `~\u002F.claude\u002Fprojects\u002F\u003Cmangled-path>\u002F*.jsonl`, one line per event, where `\u003Cmangled-path>` is the project's absolute path with `\u002F` replaced by `-`.\n\n   ```bash\n   PROJECT_DIR=\"$HOME\u002F.claude\u002Fprojects\u002F$(pwd | tr '\u002F' '-')\"\n   ls \"$PROJECT_DIR\"\u002F*.jsonl 2>\u002Fdev\u002Fnull | wc -l\n   ```\n\n   If empty, say so and stop — nothing to analyze yet.\n\n2. **Tally Agent-tool spawns.** Each spawn is a `tool_use` block with `\"name\":\"Agent\"` and an `input.subagent_type`. Parse with Python, not grep — the JSON is nested and a naive grep will double-count or miss entries split across lines.\n\n   ```bash\n   python3 - \"$PROJECT_DIR\" \u003C\u003C'PYEOF'\n   import json, sys, pathlib, collections\n\n   project_dir = pathlib.Path(sys.argv[1])\n   counts = collections.Counter()\n\n   for f in project_dir.glob(\"*.jsonl\"):\n       for line in f.read_text(errors=\"ignore\").splitlines():\n           try:\n               ev = json.loads(line)\n           except json.JSONDecodeError:\n               continue\n           content = ev.get(\"message\", {}).get(\"content\", [])\n           if not isinstance(content, list):\n               continue\n           for block in content:\n               if isinstance(block, dict) and block.get(\"type\") == \"tool_use\" and block.get(\"name\") == \"Agent\":\n                   sub = block.get(\"input\", {}).get(\"subagent_type\", \"unknown\")\n                   counts[sub] += 1\n\n   tonone = {k: v for k, v in counts.items() if k.startswith(\"tonone:\")}\n   generic = {k: v for k, v in counts.items() if not k.startswith(\"tonone:\")}\n\n   print(json.dumps({\"tonone\": tonone, \"generic\": generic}, indent=2))\n   PYEOF\n   ```\n\n3. **Diff against the full roster.** Compare `tonone` keys (strip `tonone:` prefix) against every file in `agents\u002F*.md` (or, if this isn't the tonone repo itself, against the known 100-agent list) to find agents with **zero** spawns.\n\n4. **Report** (40-line budget — if the full breakdown is long, write it to `.agent-logs\u002Freports\u002Fapex-stats-\u003Cdate>.json` and summarize):\n   - Top 8-10 tonone agents by spawn count\n   - Generic vs tonone split (`general-purpose`, `Explore`, `fork`, etc. vs `tonone:*`) — this ratio is the signal that matters most\n   - Zero-spawn tonone agents (candidates for `apex-profile` exclusion), capped at a list of names, not full descriptions\n   - One line pointing at `\u002Fapex-profile` to act on the result\n\n   If output exceeds the 40-line CLI budget, invoke `\u002Fatlas-report` with the full breakdown. The HTML report is the output. CLI is the receipt — box header, one-line verdict, and the report path.\n\n## Notes\n\n- Counts are **local to this machine** — no telemetry, no upload. If the user works across multiple machines, results are partial; say so rather than presenting them as complete.\n- A zero-spawn count isn't proof an agent is useless — it's proof it hasn't been used _here, yet_. Frame the prune suggestion as a candidate, not a verdict.\n- Don't silently cap the zero-spawn list without saying how many were dropped — if there are 60 zero-spawn agents, say \"60 unused, top 10 shown\" rather than just showing 10.\n","\u003C!-- GENERATED from SKILL.md.tmpl by scripts\u002Fgen-skill-docs.py — edit the .tmpl or skills\u002F_sections\u002F*.md, not this file -->\n\n# Apex Stats\n\nYou are Apex — the engineering lead. Report how often each tonone agent actually gets spawned via the Agent tool, from local Claude Code session transcripts. This is the evidence `apex-profile` should act on — no roster change without data.\n\nFollow the output format defined in docs\u002Foutput-kit.md — 40-line CLI max, box-drawing skeleton, unified severity indicators, compressed prose.\n\n## Steps\n\n1. **Locate transcripts for this project.** Claude Code stores session logs at `~\u002F.claude\u002Fprojects\u002F\u003Cmangled-path>\u002F*.jsonl`, one line per event, where `\u003Cmangled-path>` is the project's absolute path with `\u002F` replaced by `-`.\n\n   ```bash\n   PROJECT_DIR=\"$HOME\u002F.claude\u002Fprojects\u002F$(pwd | tr '\u002F' '-')\"\n   ls \"$PROJECT_DIR\"\u002F*.jsonl 2>\u002Fdev\u002Fnull | wc -l\n   ```\n\n   If empty, say so and stop — nothing to analyze yet.\n\n2. **Tally Agent-tool spawns.** Each spawn is a `tool_use` block with `\"name\":\"Agent\"` and an `input.subagent_type`. Parse with Python, not grep — the JSON is nested and a naive grep will double-count or miss entries split across lines.\n\n   ```bash\n   python3 - \"$PROJECT_DIR\" \u003C\u003C'PYEOF'\n   import json, sys, pathlib, collections\n\n   project_dir = pathlib.Path(sys.argv[1])\n   counts = collections.Counter()\n\n   for f in project_dir.glob(\"*.jsonl\"):\n       for line in f.read_text(errors=\"ignore\").splitlines():\n           try:\n               ev = json.loads(line)\n           except json.JSONDecodeError:\n               continue\n           content = ev.get(\"message\", {}).get(\"content\", [])\n           if not isinstance(content, list):\n               continue\n           for block in content:\n               if isinstance(block, dict) and block.get(\"type\") == \"tool_use\" and block.get(\"name\") == \"Agent\":\n                   sub = block.get(\"input\", {}).get(\"subagent_type\", \"unknown\")\n                   counts[sub] += 1\n\n   tonone = {k: v for k, v in counts.items() if k.startswith(\"tonone:\")}\n   generic = {k: v for k, v in counts.items() if not k.startswith(\"tonone:\")}\n\n   print(json.dumps({\"tonone\": tonone, \"generic\": generic}, indent=2))\n   PYEOF\n   ```\n\n3. **Diff against the full roster.** Compare `tonone` keys (strip `tonone:` prefix) against every file in `agents\u002F*.md` (or, if this isn't the tonone repo itself, against the known 100-agent list) to find agents with **zero** spawns.\n\n4. **Report** (40-line budget — if the full breakdown is long, write it to `.agent-logs\u002Freports\u002Fapex-stats-\u003Cdate>.json` and summarize):\n   - Top 8-10 tonone agents by spawn count\n   - Generic vs tonone split (`general-purpose`, `Explore`, `fork`, etc. vs `tonone:*`) — this ratio is the signal that matters most\n   - Zero-spawn tonone agents (candidates for `apex-profile` exclusion), capped at a list of names, not full descriptions\n   - One line pointing at `\u002Fapex-profile` to act on the result\n\n   If output exceeds the 40-line CLI budget, invoke `\u002Fatlas-report` with the full breakdown. The HTML report is the output. CLI is the receipt — box header, one-line verdict, and the report path.\n\n## Notes\n\n- Counts are **local to this machine** — no telemetry, no upload. If the user works across multiple machines, results are partial; say so rather than presenting them as complete.\n- A zero-spawn count isn't proof an agent is useless — it's proof it hasn't been used _here, yet_. Frame the prune suggestion as a candidate, not a verdict.\n- Don't silently cap the zero-spawn list without saying how many were dropped — if there are 60 zero-spawn agents, say \"60 unused, top 10 shown\" rather than just showing 10.\n",{"name":5,"tags":53,"author":54,"license":15,"version":55,"description":7,"allowed-tools":56,"compatibility":57},[44,37,24],"tonone-ai \u003Chello@tonone.ai>","0.1.0","Read, Write, Bash, Glob","Designed for Claude Code","main","d5998d31415790d88781b1eebf9bd0694f7c5d93","team\u002Fapex\u002Fskills\u002Fapex-stats",11,"https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone","https:\u002F\u002Fsecond.tonone.ai","https:\u002F\u002Fgithub.com\u002Ftonone-ai","https:\u002F\u002Ftonone.ai","Founded by @thisisfatih","2026-11-11 05:05:57",{"source":8,"skillName":5,"commands":69,"prompt":79,"zipAvailable":80},[70,73,76],{"tool":71,"command":72},"npx","npx skills add tonone-ai\u002Ftonone --skill apex-stats",{"tool":74,"command":75},"bunx","bunx skills add tonone-ai\u002Ftonone --skill apex-stats",{"tool":77,"command":78},"pnpm","pnpm dlx skills add tonone-ai\u002Ftonone --skill apex-stats","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fteam\u002Fapex\u002Fskills\u002Fapex-stats\u002FSKILL.md",true,[82],{"path":83,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":86,"sourceHtmlUrl":87},"SKILL.md.tmpl","OTHER","其他",3886,"https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fteam\u002Fapex\u002Fskills\u002Fapex-stats\u002FSKILL.md.tmpl",[89,97,104,109,114,121],{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":96},"01M72QSK7R99K8FWYFNYTXJGR2","helm-autoplan","Chained brief-to-decision pipeline. Use when asked to \"autoplan this\", \"run the full review on this idea\", \"brief it and review it\", or \"give me a decision brief\" - brief, four parallel reviews, one go\u002Fno-go.","https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fteam\u002Fhelm\u002Fskills\u002Fhelm-autoplan\u002FSKILL.md",[],[],"2026-11-10 22:39:42",{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":96},"01M72Q6V4CB8E877RT5KJRSSB7","apex-second-opinion","Optional cross-model review of a diff or plan through an external CLI (codex, gemini, llm) already on PATH, with redaction and per-run consent. Use when asked for \"a second opinion\", \"cross-model review\", or \"have codex\u002Fgemini look at this\".","https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fteam\u002Fapex\u002Fskills\u002Fapex-second-opinion\u002FSKILL.md",[],[],{"skillNo":105,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":96},"01M72PDNJ3NS66X4QZ6AM5BG91","https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fskills\u002Fhelm-autoplan\u002FSKILL.md",[],[],{"skillNo":110,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"publishedAt":96},"01M72NV58FG71X4Y7H8E6W721A","https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fskills\u002Fapex-second-opinion\u002FSKILL.md",[],[],{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":96},"01M72NEBG81JH7YNSDXYT8NHHE","helm-office-hours","Forcing-function intake before any brief. Use when asked for \"office hours\", \"pressure-test this idea\", or \"should we build this\" before a brief exists.","https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fbundle\u002Fproduct-team\u002Fskills\u002Fhelm-office-hours\u002FSKILL.md",[],[],{"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":127,"publishedAt":96},"01M72NE7AS597YW6999C56CESR","helm-init","Short interview that writes PRODUCT.md, the durable product truth other skills read. Use when asked to \"init product\", \"write PRODUCT.md\", or \"set up product context\". Prefills from README and repo, asks max 6 questions.","https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fbundle\u002Fproduct-team\u002Fskills\u002Fhelm-init\u002FSKILL.md",[],[]]