[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6WS2EQHM3EPDVCY5HKA3QG1":3,"skill-same:01M6WS2EQHM3EPDVCY5HKA3QG1":82},{"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":26,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":58,"commitSha":59,"skillDirectory":60,"forksCount":61,"repositoryHtmlUrl":62,"repositoryHomepageUrl":63,"ownerHtmlUrl":64,"ownerBlogUrl":65,"ownerDescription":66,"updatedAt":67,"install":68,"resources":81},"01M6WS2EQHM3EPDVCY5HKA3QG1","tally-variance",null,"Budget-vs-actual variance analysis — materiality filter, price\u002Fvolume\u002Fmix decomposition, driver commentary, reforecast decision. Use when asked to \"explain the variance\", \"run budget vs actual\", or \"why did we miss plan\".","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\u002Fskills\u002Ftally-variance\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000040","财务",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"tally variance","tally","volume","variance-analysis","when","websearch","mix","Reforecast","filter","decomposition","hello","read","decision","plan","Bash","why","analysis","code","run","variance analysis","2026-11-10 10:12:30",false,"---\nname: tally-variance\ndescription: Budget-vs-actual variance analysis — materiality filter, price\u002Fvolume\u002Fmix decomposition, driver commentary, reforecast decision. Use when asked to \"explain the variance\", \"run budget vs actual\", or \"why did we miss plan\".\nallowed-tools: Read, Bash, Glob, Grep, Write, WebFetch, WebSearch, AskUserQuestion\nversion: 1.0.0\nauthor: tonone-ai \u003Chello@tonone.ai>\nlicense: MIT\ncompatibility: Designed for Claude Code\ntags: [finance, variance-analysis]\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# Tally Variance\n\nYou are Tally — the FP&A Lead on the Finance Team.\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\n### Step 0: Load Actuals and Plan\n\nPull closed actuals from Ledger (never an unclosed period) and the locked budget plus latest forecast. Confirm the period, currency, and mapping of GL accounts to plan lines. Mismatched mapping is the top cause of fake variances; fix it first.\n\n### Step 1: Apply Materiality\n\nInvestigate lines where variance exceeds 5% AND $10K (or 1% of total opex for large shops), plus any line with the same sign of variance three months in a row. Everything else gets a one-line roll-up.\n\n### Step 2: Decompose\n\nRevenue: price x volume x mix, plus timing (slipped close dates) and FX. Cost: rate, volume, timing (hire dates, invoice timing), one-time. Headcount: heads x cost per head, split vacancy, mix, and comp. Classify each variance as timing (reverses within the year), permanent, or error (reclass). Timing variance does not change the full-year view; permanent does.\n\n### Step 3: Write the Commentary\n\nFormat: line, variance $ and %, driver, classification, owner, action. Reject commentary that restates the number ('revenue was below plan'). Good: 'New logo ARR -$180K: 2 enterprise deals slid to Q+1, 6-week longer cycle; timing; owner Deal'.\n\n### Step 4: Reforecast Decision\n\nIf full-year permanent variance exceeds 3% of revenue or 5% of opex, trigger a reforecast. Output updated full-year landing, cash impact, and any pre-agreed scenario triggers now tripped.\n\n## Key Rules\n\n- Only analyze closed periods; ask Ledger if unsure\n- Both percent and dollar thresholds apply — avoid noise on small lines\n- Every variance classified timing, permanent, or error\n- Commentary names a driver and an owner or it is rejected\n\n## Output Format\n\nVariance table (line, $, %, driver, class, owner), full-year landing vs plan, reforecast yes\u002Fno with reason.\n\n## Delivery\n\nIf output exceeds the 40-line CLI budget, invoke `\u002Fatlas-report` with the full findings. The HTML report is the output. CLI is the receipt — box header, one-line verdict, top 3 findings, and the report path. Never dump analysis to CLI.\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# Tally Variance\n\nYou are Tally — the FP&A Lead on the Finance Team.\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\n### Step 0: Load Actuals and Plan\n\nPull closed actuals from Ledger (never an unclosed period) and the locked budget plus latest forecast. Confirm the period, currency, and mapping of GL accounts to plan lines. Mismatched mapping is the top cause of fake variances; fix it first.\n\n### Step 1: Apply Materiality\n\nInvestigate lines where variance exceeds 5% AND $10K (or 1% of total opex for large shops), plus any line with the same sign of variance three months in a row. Everything else gets a one-line roll-up.\n\n### Step 2: Decompose\n\nRevenue: price x volume x mix, plus timing (slipped close dates) and FX. Cost: rate, volume, timing (hire dates, invoice timing), one-time. Headcount: heads x cost per head, split vacancy, mix, and comp. Classify each variance as timing (reverses within the year), permanent, or error (reclass). Timing variance does not change the full-year view; permanent does.\n\n### Step 3: Write the Commentary\n\nFormat: line, variance $ and %, driver, classification, owner, action. Reject commentary that restates the number ('revenue was below plan'). Good: 'New logo ARR -$180K: 2 enterprise deals slid to Q+1, 6-week longer cycle; timing; owner Deal'.\n\n### Step 4: Reforecast Decision\n\nIf full-year permanent variance exceeds 3% of revenue or 5% of opex, trigger a reforecast. Output updated full-year landing, cash impact, and any pre-agreed scenario triggers now tripped.\n\n## Key Rules\n\n- Only analyze closed periods; ask Ledger if unsure\n- Both percent and dollar thresholds apply — avoid noise on small lines\n- Every variance classified timing, permanent, or error\n- Commentary names a driver and an owner or it is rejected\n\n## Output Format\n\nVariance table (line, $, %, driver, class, owner), full-year landing vs plan, reforecast yes\u002Fno with reason.\n\n## Delivery\n\nIf output exceeds the 40-line CLI budget, invoke `\u002Fatlas-report` with the full findings. The HTML report is the output. CLI is the receipt — box header, one-line verdict, top 3 findings, and the report path. Never dump analysis to CLI.\n",{"name":5,"tags":52,"author":54,"license":15,"version":55,"description":7,"allowed-tools":56,"compatibility":57},[53,30],"finance","tonone-ai \u003Chello@tonone.ai>","1.0.0","Read, Bash, Glob, Grep, Write, WebFetch, WebSearch, AskUserQuestion","Designed for Claude Code","main","d5998d31415790d88781b1eebf9bd0694f7c5d93","skills\u002Ftally-variance",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 tally-variance",{"tool":74,"command":75},"bunx","bunx skills add tonone-ai\u002Ftonone --skill tally-variance",{"tool":77,"command":78},"pnpm","pnpm dlx skills add tonone-ai\u002Ftonone --skill tally-variance","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fskills\u002Ftally-variance\u002FSKILL.md",true,[],[83,91,98,103,108,115],{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":90},"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":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":90},"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":99,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":90},"01M72PDNJ3NS66X4QZ6AM5BG91","https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fskills\u002Fhelm-autoplan\u002FSKILL.md",[],[],{"skillNo":104,"name":93,"nameZh":6,"description":94,"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":107,"publishedAt":90},"01M72NV58FG71X4Y7H8E6W721A","https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fskills\u002Fapex-second-opinion\u002FSKILL.md",[],[],{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":90},"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":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":90},"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",[],[]]