[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-automattic-update-cache":3,"mdc--cmwopr-key":32,"related-repo-automattic-update-cache":874,"related-org-automattic-update-cache":964},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":22,"repoUrl":23,"updatedAt":24,"license":25,"forks":22,"topics":26,"repo":27,"sourceUrl":30,"mdContent":31},"update-cache","update local agentic analytics data cache","Top up the local data cache with new data, without deleting anything. Use when the user wants to bring the cache up to date, pull the latest days, sync recent data, or top up the cache. The lighter, non-destructive sibling of refresh-cache – offered as an alternative there.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"automattic","Automattic","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fautomattic.png",[12,16,19],{"name":13,"slug":14,"type":15},"Operations","operations","tag",{"name":17,"slug":18,"type":15},"Data Analysis","data-analysis",{"name":20,"slug":21,"type":15},"Caching","caching",1,"https:\u002F\u002Fgithub.com\u002FAutomattic\u002Fagentic-analytics","2026-07-24T06:08:50.338585",null,[],{"repoUrl":23,"stars":22,"forks":22,"topics":28,"description":29},[],"Claude Code plugin for analytics across Parse.ly, GA, and your own data.","https:\u002F\u002Fgithub.com\u002FAutomattic\u002Fagentic-analytics\u002Ftree\u002FHEAD\u002Fskills\u002Fupdate-cache","---\nname: update-cache\ndescription: Top up the local data cache with new data, without deleting anything. Use when the user wants to bring the cache up to date, pull the latest days, sync recent data, or top up the cache. The lighter, non-destructive sibling of refresh-cache – offered as an alternative there.\n---\n\n# Update the data cache\n\nPulls a fresh 60-day window into the local data lake, incrementally – it only fetches days that aren't already on disk. Nothing is deleted. Safe to run any time; already-synced customers pay milliseconds, a fresh or partial lake pays for whatever's missing.\n\nIf the data looks wrong rather than just behind (stale numbers that don't move, a bad prior pull, schema drift), use the refresh-cache skill instead – this flow won't fix corrupted or malformed local data, only fill gaps.\n\n## Output discipline\n\nThis is housekeeping. Be terse. Announce, run, stop. Don't narrate the script output line-by-line – the script prints its own progress.\n\n## Steps\n\n0. **Resolve the plugin root.** Every bash snippet below assumes `$plugin_root` is set in that shell invocation; re-run this line whenever you start a new shell:\n\n   ```bash\n   plugin_root=\"${CLAUDE_PLUGIN_ROOT:-${CURSOR_PLUGIN_ROOT:-\u003Cplugin-root>}}\"\n   plugin_python=\"${AGENTIC_ANALYTICS_VENV:-${AGENTIC_ANALYTICS_DATA_DIR:-$HOME\u002F.local\u002Fshare\u002Fagentic-analytics}\u002Fvenv}\u002Fbin\u002Fpython\"\n   [ -x \"$plugin_python\" ] || plugin_python=\"python3\"\n   ```\n\n   `\u003Cplugin-root>` is the plugin's install directory – the directory two levels above this SKILL.md file. In a dev checkout of the source repo that's `plugin\u002F`. `$plugin_python` is the plugin's isolated venv (created by the init flow at `$AGENTIC_ANALYTICS_DATA_DIR\u002Fvenv`, default `~\u002F.local\u002Fshare\u002Fagentic-analytics\u002Fvenv`); it falls back to `python3` if the venv doesn't exist yet.\n\n1. **Announce.** Output verbatim:\n\n   > Updating the local cache. Nothing will be deleted – only missing days are pulled.\n\n2. **Load bucket config.** Read `${XDG_CONFIG_HOME:-~\u002F.config}\u002Fagentic-analytics\u002Fbucket.json`. It contains:\n\n   - `bucket` – S3 bucket holding the customer's DPL events.\n   - `profile` – AWS profile to authenticate with.\n   - `cache_dir` – a slug identifying the customer's data (e.g. `acme`).\n\n   If the file is missing, tell the user to run the init flow first (`\u002Fagentic-analytics:init` on harnesses with slash commands, or \"set up agentic analytics\" in chat) and stop. Do not guess values.\n\n3. **Pull a fresh 60 days.** Same window the staircase report targets. `pull_parsely_dpl.py` is incremental and idempotent: it checks the lake for each day's parquet partition and only fetches what's missing. It also rebuilds the `dpl_events` catalog view.\n\n   ```bash\n   read target_start target_end \u003C \u003C(python3 -c \"\n   from datetime import date, timedelta\n   start = date.today() - timedelta(days=60)\n   end = date.today() - timedelta(days=1)\n   print(start.strftime('%Y-%m-%d'), end.strftime('%Y-%m-%d'))\n   \")\n   \"$plugin_python\" \"$plugin_root\u002Fscripts\u002Fdb\u002Fpull_parsely_dpl.py\" \\\n     --bucket \u003Cbucket> [--site \u003Csite>] \\\n     --start \"$target_start\" --end \"$target_end\" \\\n     [--profile \u003Cprofile>]\n   ```\n\n   Substitute `\u003Cbucket>` and `\u003Cprofile>` with the values held from step 2. Omit `--site` to update all sites; pass `--site \u003Csite>` to limit the pull to one site. Do NOT add `|| true` here – unlike the report path, a failed pull is the headline result of this flow; surface it.\n\n4. **Report done.** One short line: \"Cache updated. Next report run uses the latest data.\"\n\n   If the pull failed (auth lapse, S3 error), say so plainly. Nothing was deleted, so whatever was already cached is still there and usable – the failure only means new data wasn't added this time.\n\n## Notes\n\n- Only the **currently configured** customer's DPL data is affected.\n- The DuckDB catalog view (`dpl_events`) is rebuilt after the pull so it reflects any newly-synced partitions.\n- This flow never deletes local files. If you suspect the local cache itself is corrupted or inconsistent (not just behind), use refresh-cache instead.\n",{"data":33,"body":34},{"name":4,"description":6},{"type":35,"children":36},"root",[37,46,52,57,64,69,75,830,836,868],{"type":38,"tag":39,"props":40,"children":42},"element","h1",{"id":41},"update-the-data-cache",[43],{"type":44,"value":45},"text","Update the data cache",{"type":38,"tag":47,"props":48,"children":49},"p",{},[50],{"type":44,"value":51},"Pulls a fresh 60-day window into the local data lake, incrementally – it only fetches days that aren't already on disk. Nothing is deleted. Safe to run any time; already-synced customers pay milliseconds, a fresh or partial lake pays for whatever's missing.",{"type":38,"tag":47,"props":53,"children":54},{},[55],{"type":44,"value":56},"If the data looks wrong rather than just behind (stale numbers that don't move, a bad prior pull, schema drift), use the refresh-cache skill instead – this flow won't fix corrupted or malformed local data, only fill gaps.",{"type":38,"tag":58,"props":59,"children":61},"h2",{"id":60},"output-discipline",[62],{"type":44,"value":63},"Output discipline",{"type":38,"tag":47,"props":65,"children":66},{},[67],{"type":44,"value":68},"This is housekeeping. Be terse. Announce, run, stop. Don't narrate the script output line-by-line – the script prints its own progress.",{"type":38,"tag":58,"props":70,"children":72},{"id":71},"steps",[73],{"type":44,"value":74},"Steps",{"type":38,"tag":76,"props":77,"children":79},"ol",{"start":78},0,[80,384,403,479,815],{"type":38,"tag":81,"props":82,"children":83},"li",{},[84,90,92,99,101,334,338,344,346,352,354,359,361,367,369,375,377,382],{"type":38,"tag":85,"props":86,"children":87},"strong",{},[88],{"type":44,"value":89},"Resolve the plugin root.",{"type":44,"value":91}," Every bash snippet below assumes ",{"type":38,"tag":93,"props":94,"children":96},"code",{"className":95},[],[97],{"type":44,"value":98},"$plugin_root",{"type":44,"value":100}," is set in that shell invocation; re-run this line whenever you start a new shell:",{"type":38,"tag":102,"props":103,"children":108},"pre",{"className":104,"code":105,"language":106,"meta":107,"style":107},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","plugin_root=\"${CLAUDE_PLUGIN_ROOT:-${CURSOR_PLUGIN_ROOT:-\u003Cplugin-root>}}\"\nplugin_python=\"${AGENTIC_ANALYTICS_VENV:-${AGENTIC_ANALYTICS_DATA_DIR:-$HOME\u002F.local\u002Fshare\u002Fagentic-analytics}\u002Fvenv}\u002Fbin\u002Fpython\"\n[ -x \"$plugin_python\" ] || plugin_python=\"python3\"\n","bash","",[109],{"type":38,"tag":93,"props":110,"children":111},{"__ignoreMap":107},[112,175,273],{"type":38,"tag":113,"props":114,"children":116},"span",{"class":115,"line":22},"line",[117,123,129,134,139,144,149,154,160,165,170],{"type":38,"tag":113,"props":118,"children":120},{"style":119},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[121],{"type":44,"value":122},"plugin_root",{"type":38,"tag":113,"props":124,"children":126},{"style":125},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[127],{"type":44,"value":128},"=",{"type":38,"tag":113,"props":130,"children":131},{"style":125},[132],{"type":44,"value":133},"\"${",{"type":38,"tag":113,"props":135,"children":136},{"style":119},[137],{"type":44,"value":138},"CLAUDE_PLUGIN_ROOT",{"type":38,"tag":113,"props":140,"children":141},{"style":125},[142],{"type":44,"value":143},":-${",{"type":38,"tag":113,"props":145,"children":146},{"style":119},[147],{"type":44,"value":148},"CURSOR_PLUGIN_ROOT",{"type":38,"tag":113,"props":150,"children":151},{"style":125},[152],{"type":44,"value":153},":-",{"type":38,"tag":113,"props":155,"children":157},{"style":156},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[158],{"type":44,"value":159},"\u003C",{"type":38,"tag":113,"props":161,"children":162},{"style":119},[163],{"type":44,"value":164},"plugin-root",{"type":38,"tag":113,"props":166,"children":167},{"style":156},[168],{"type":44,"value":169},">",{"type":38,"tag":113,"props":171,"children":172},{"style":125},[173],{"type":44,"value":174},"}}\"\n",{"type":38,"tag":113,"props":176,"children":178},{"class":115,"line":177},2,[179,184,188,192,197,201,206,210,215,220,225,230,234,239,243,248,253,258,263,268],{"type":38,"tag":113,"props":180,"children":181},{"style":119},[182],{"type":44,"value":183},"plugin_python",{"type":38,"tag":113,"props":185,"children":186},{"style":125},[187],{"type":44,"value":128},{"type":38,"tag":113,"props":189,"children":190},{"style":125},[191],{"type":44,"value":133},{"type":38,"tag":113,"props":193,"children":194},{"style":119},[195],{"type":44,"value":196},"AGENTIC_ANALYTICS_VENV",{"type":38,"tag":113,"props":198,"children":199},{"style":125},[200],{"type":44,"value":143},{"type":38,"tag":113,"props":202,"children":203},{"style":119},[204],{"type":44,"value":205},"AGENTIC_ANALYTICS_DATA_DIR",{"type":38,"tag":113,"props":207,"children":208},{"style":125},[209],{"type":44,"value":153},{"type":38,"tag":113,"props":211,"children":212},{"style":119},[213],{"type":44,"value":214},"$HOME",{"type":38,"tag":113,"props":216,"children":217},{"style":125},[218],{"type":44,"value":219},"\u002F",{"type":38,"tag":113,"props":221,"children":222},{"style":156},[223],{"type":44,"value":224},".",{"type":38,"tag":113,"props":226,"children":227},{"style":119},[228],{"type":44,"value":229},"local",{"type":38,"tag":113,"props":231,"children":232},{"style":125},[233],{"type":44,"value":219},{"type":38,"tag":113,"props":235,"children":236},{"style":119},[237],{"type":44,"value":238},"share",{"type":38,"tag":113,"props":240,"children":241},{"style":125},[242],{"type":44,"value":219},{"type":38,"tag":113,"props":244,"children":245},{"style":119},[246],{"type":44,"value":247},"agentic-analytics",{"type":38,"tag":113,"props":249,"children":250},{"style":125},[251],{"type":44,"value":252},"}\u002F",{"type":38,"tag":113,"props":254,"children":255},{"style":119},[256],{"type":44,"value":257},"venv",{"type":38,"tag":113,"props":259,"children":260},{"style":125},[261],{"type":44,"value":262},"}",{"type":38,"tag":113,"props":264,"children":265},{"style":156},[266],{"type":44,"value":267},"\u002Fbin\u002Fpython",{"type":38,"tag":113,"props":269,"children":270},{"style":125},[271],{"type":44,"value":272},"\"\n",{"type":38,"tag":113,"props":274,"children":276},{"class":115,"line":275},3,[277,282,287,292,297,302,307,312,317,321,325,330],{"type":38,"tag":113,"props":278,"children":279},{"style":125},[280],{"type":44,"value":281},"[",{"type":38,"tag":113,"props":283,"children":284},{"style":125},[285],{"type":44,"value":286}," -x",{"type":38,"tag":113,"props":288,"children":289},{"style":125},[290],{"type":44,"value":291}," \"",{"type":38,"tag":113,"props":293,"children":294},{"style":119},[295],{"type":44,"value":296},"$plugin_python",{"type":38,"tag":113,"props":298,"children":299},{"style":125},[300],{"type":44,"value":301},"\"",{"type":38,"tag":113,"props":303,"children":304},{"style":125},[305],{"type":44,"value":306}," ]",{"type":38,"tag":113,"props":308,"children":309},{"style":125},[310],{"type":44,"value":311}," ||",{"type":38,"tag":113,"props":313,"children":314},{"style":119},[315],{"type":44,"value":316}," plugin_python",{"type":38,"tag":113,"props":318,"children":319},{"style":125},[320],{"type":44,"value":128},{"type":38,"tag":113,"props":322,"children":323},{"style":125},[324],{"type":44,"value":301},{"type":38,"tag":113,"props":326,"children":327},{"style":156},[328],{"type":44,"value":329},"python3",{"type":38,"tag":113,"props":331,"children":332},{"style":125},[333],{"type":44,"value":272},{"type":38,"tag":335,"props":336,"children":337},"br",{},[],{"type":38,"tag":93,"props":339,"children":341},{"className":340},[],[342],{"type":44,"value":343},"\u003Cplugin-root>",{"type":44,"value":345}," is the plugin's install directory – the directory two levels above this SKILL.md file. In a dev checkout of the source repo that's ",{"type":38,"tag":93,"props":347,"children":349},{"className":348},[],[350],{"type":44,"value":351},"plugin\u002F",{"type":44,"value":353},". ",{"type":38,"tag":93,"props":355,"children":357},{"className":356},[],[358],{"type":44,"value":296},{"type":44,"value":360}," is the plugin's isolated venv (created by the init flow at ",{"type":38,"tag":93,"props":362,"children":364},{"className":363},[],[365],{"type":44,"value":366},"$AGENTIC_ANALYTICS_DATA_DIR\u002Fvenv",{"type":44,"value":368},", default ",{"type":38,"tag":93,"props":370,"children":372},{"className":371},[],[373],{"type":44,"value":374},"~\u002F.local\u002Fshare\u002Fagentic-analytics\u002Fvenv",{"type":44,"value":376},"); it falls back to ",{"type":38,"tag":93,"props":378,"children":380},{"className":379},[],[381],{"type":44,"value":329},{"type":44,"value":383}," if the venv doesn't exist yet.",{"type":38,"tag":81,"props":385,"children":386},{},[387,392,394],{"type":38,"tag":85,"props":388,"children":389},{},[390],{"type":44,"value":391},"Announce.",{"type":44,"value":393}," Output verbatim:",{"type":38,"tag":395,"props":396,"children":397},"blockquote",{},[398],{"type":38,"tag":47,"props":399,"children":400},{},[401],{"type":44,"value":402},"Updating the local cache. Nothing will be deleted – only missing days are pulled.",{"type":38,"tag":81,"props":404,"children":405},{},[406,411,413,419,421,466,469,471,477],{"type":38,"tag":85,"props":407,"children":408},{},[409],{"type":44,"value":410},"Load bucket config.",{"type":44,"value":412}," Read ",{"type":38,"tag":93,"props":414,"children":416},{"className":415},[],[417],{"type":44,"value":418},"${XDG_CONFIG_HOME:-~\u002F.config}\u002Fagentic-analytics\u002Fbucket.json",{"type":44,"value":420},". It contains:",{"type":38,"tag":422,"props":423,"children":424},"ul",{},[425,436,447],{"type":38,"tag":81,"props":426,"children":427},{},[428,434],{"type":38,"tag":93,"props":429,"children":431},{"className":430},[],[432],{"type":44,"value":433},"bucket",{"type":44,"value":435}," – S3 bucket holding the customer's DPL events.",{"type":38,"tag":81,"props":437,"children":438},{},[439,445],{"type":38,"tag":93,"props":440,"children":442},{"className":441},[],[443],{"type":44,"value":444},"profile",{"type":44,"value":446}," – AWS profile to authenticate with.",{"type":38,"tag":81,"props":448,"children":449},{},[450,456,458,464],{"type":38,"tag":93,"props":451,"children":453},{"className":452},[],[454],{"type":44,"value":455},"cache_dir",{"type":44,"value":457}," – a slug identifying the customer's data (e.g. ",{"type":38,"tag":93,"props":459,"children":461},{"className":460},[],[462],{"type":44,"value":463},"acme",{"type":44,"value":465},").",{"type":38,"tag":335,"props":467,"children":468},{},[],{"type":44,"value":470},"If the file is missing, tell the user to run the init flow first (",{"type":38,"tag":93,"props":472,"children":474},{"className":473},[],[475],{"type":44,"value":476},"\u002Fagentic-analytics:init",{"type":44,"value":478}," on harnesses with slash commands, or \"set up agentic analytics\" in chat) and stop. Do not guess values.",{"type":38,"tag":81,"props":480,"children":481},{},[482,487,489,495,497,503,505,770,773,775,781,783,789,791,797,799,805,807,813],{"type":38,"tag":85,"props":483,"children":484},{},[485],{"type":44,"value":486},"Pull a fresh 60 days.",{"type":44,"value":488}," Same window the staircase report targets. ",{"type":38,"tag":93,"props":490,"children":492},{"className":491},[],[493],{"type":44,"value":494},"pull_parsely_dpl.py",{"type":44,"value":496}," is incremental and idempotent: it checks the lake for each day's parquet partition and only fetches what's missing. It also rebuilds the ",{"type":38,"tag":93,"props":498,"children":500},{"className":499},[],[501],{"type":44,"value":502},"dpl_events",{"type":44,"value":504}," catalog view.",{"type":38,"tag":102,"props":506,"children":508},{"className":104,"code":507,"language":106,"meta":107,"style":107},"read target_start target_end \u003C \u003C(python3 -c \"\nfrom datetime import date, timedelta\nstart = date.today() - timedelta(days=60)\nend = date.today() - timedelta(days=1)\nprint(start.strftime('%Y-%m-%d'), end.strftime('%Y-%m-%d'))\n\")\n\"$plugin_python\" \"$plugin_root\u002Fscripts\u002Fdb\u002Fpull_parsely_dpl.py\" \\\n  --bucket \u003Cbucket> [--site \u003Csite>] \\\n  --start \"$target_start\" --end \"$target_end\" \\\n  [--profile \u003Cprofile>]\n",[509],{"type":38,"tag":93,"props":510,"children":511},{"__ignoreMap":107},[512,555,563,571,580,589,598,636,695,739],{"type":38,"tag":113,"props":513,"children":514},{"class":115,"line":22},[515,521,526,531,536,541,546,551],{"type":38,"tag":113,"props":516,"children":518},{"style":517},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[519],{"type":44,"value":520},"read",{"type":38,"tag":113,"props":522,"children":523},{"style":156},[524],{"type":44,"value":525}," target_start",{"type":38,"tag":113,"props":527,"children":528},{"style":156},[529],{"type":44,"value":530}," target_end",{"type":38,"tag":113,"props":532,"children":533},{"style":125},[534],{"type":44,"value":535}," \u003C",{"type":38,"tag":113,"props":537,"children":538},{"style":125},[539],{"type":44,"value":540}," \u003C(",{"type":38,"tag":113,"props":542,"children":544},{"style":543},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[545],{"type":44,"value":329},{"type":38,"tag":113,"props":547,"children":548},{"style":156},[549],{"type":44,"value":550}," -c ",{"type":38,"tag":113,"props":552,"children":553},{"style":125},[554],{"type":44,"value":272},{"type":38,"tag":113,"props":556,"children":557},{"class":115,"line":177},[558],{"type":38,"tag":113,"props":559,"children":560},{"style":156},[561],{"type":44,"value":562},"from datetime import date, timedelta\n",{"type":38,"tag":113,"props":564,"children":565},{"class":115,"line":275},[566],{"type":38,"tag":113,"props":567,"children":568},{"style":156},[569],{"type":44,"value":570},"start = date.today() - timedelta(days=60)\n",{"type":38,"tag":113,"props":572,"children":574},{"class":115,"line":573},4,[575],{"type":38,"tag":113,"props":576,"children":577},{"style":156},[578],{"type":44,"value":579},"end = date.today() - timedelta(days=1)\n",{"type":38,"tag":113,"props":581,"children":583},{"class":115,"line":582},5,[584],{"type":38,"tag":113,"props":585,"children":586},{"style":156},[587],{"type":44,"value":588},"print(start.strftime('%Y-%m-%d'), end.strftime('%Y-%m-%d'))\n",{"type":38,"tag":113,"props":590,"children":592},{"class":115,"line":591},6,[593],{"type":38,"tag":113,"props":594,"children":595},{"style":125},[596],{"type":44,"value":597},"\")\n",{"type":38,"tag":113,"props":599,"children":601},{"class":115,"line":600},7,[602,606,610,614,618,622,627,631],{"type":38,"tag":113,"props":603,"children":604},{"style":543},[605],{"type":44,"value":301},{"type":38,"tag":113,"props":607,"children":608},{"style":119},[609],{"type":44,"value":296},{"type":38,"tag":113,"props":611,"children":612},{"style":543},[613],{"type":44,"value":301},{"type":38,"tag":113,"props":615,"children":616},{"style":125},[617],{"type":44,"value":291},{"type":38,"tag":113,"props":619,"children":620},{"style":119},[621],{"type":44,"value":98},{"type":38,"tag":113,"props":623,"children":624},{"style":156},[625],{"type":44,"value":626},"\u002Fscripts\u002Fdb\u002Fpull_parsely_dpl.py",{"type":38,"tag":113,"props":628,"children":629},{"style":125},[630],{"type":44,"value":301},{"type":38,"tag":113,"props":632,"children":633},{"style":119},[634],{"type":44,"value":635}," \\\n",{"type":38,"tag":113,"props":637,"children":639},{"class":115,"line":638},8,[640,645,649,654,659,663,668,672,677,682,686,691],{"type":38,"tag":113,"props":641,"children":642},{"style":156},[643],{"type":44,"value":644},"  --bucket",{"type":38,"tag":113,"props":646,"children":647},{"style":125},[648],{"type":44,"value":535},{"type":38,"tag":113,"props":650,"children":651},{"style":156},[652],{"type":44,"value":653},"bucke",{"type":38,"tag":113,"props":655,"children":656},{"style":119},[657],{"type":44,"value":658},"t",{"type":38,"tag":113,"props":660,"children":661},{"style":125},[662],{"type":44,"value":169},{"type":38,"tag":113,"props":664,"children":665},{"style":119},[666],{"type":44,"value":667}," [--site ",{"type":38,"tag":113,"props":669,"children":670},{"style":125},[671],{"type":44,"value":159},{"type":38,"tag":113,"props":673,"children":674},{"style":156},[675],{"type":44,"value":676},"sit",{"type":38,"tag":113,"props":678,"children":679},{"style":119},[680],{"type":44,"value":681},"e",{"type":38,"tag":113,"props":683,"children":684},{"style":125},[685],{"type":44,"value":169},{"type":38,"tag":113,"props":687,"children":688},{"style":156},[689],{"type":44,"value":690},"]",{"type":38,"tag":113,"props":692,"children":693},{"style":119},[694],{"type":44,"value":635},{"type":38,"tag":113,"props":696,"children":698},{"class":115,"line":697},9,[699,704,708,713,717,722,726,731,735],{"type":38,"tag":113,"props":700,"children":701},{"style":156},[702],{"type":44,"value":703},"  --start",{"type":38,"tag":113,"props":705,"children":706},{"style":125},[707],{"type":44,"value":291},{"type":38,"tag":113,"props":709,"children":710},{"style":119},[711],{"type":44,"value":712},"$target_start",{"type":38,"tag":113,"props":714,"children":715},{"style":125},[716],{"type":44,"value":301},{"type":38,"tag":113,"props":718,"children":719},{"style":156},[720],{"type":44,"value":721}," --end",{"type":38,"tag":113,"props":723,"children":724},{"style":125},[725],{"type":44,"value":291},{"type":38,"tag":113,"props":727,"children":728},{"style":119},[729],{"type":44,"value":730},"$target_end",{"type":38,"tag":113,"props":732,"children":733},{"style":125},[734],{"type":44,"value":301},{"type":38,"tag":113,"props":736,"children":737},{"style":119},[738],{"type":44,"value":635},{"type":38,"tag":113,"props":740,"children":742},{"class":115,"line":741},10,[743,748,752,757,761,765],{"type":38,"tag":113,"props":744,"children":745},{"style":119},[746],{"type":44,"value":747},"  [--profile ",{"type":38,"tag":113,"props":749,"children":750},{"style":125},[751],{"type":44,"value":159},{"type":38,"tag":113,"props":753,"children":754},{"style":156},[755],{"type":44,"value":756},"profil",{"type":38,"tag":113,"props":758,"children":759},{"style":119},[760],{"type":44,"value":681},{"type":38,"tag":113,"props":762,"children":763},{"style":125},[764],{"type":44,"value":169},{"type":38,"tag":113,"props":766,"children":767},{"style":156},[768],{"type":44,"value":769},"]\n",{"type":38,"tag":335,"props":771,"children":772},{},[],{"type":44,"value":774},"Substitute ",{"type":38,"tag":93,"props":776,"children":778},{"className":777},[],[779],{"type":44,"value":780},"\u003Cbucket>",{"type":44,"value":782}," and ",{"type":38,"tag":93,"props":784,"children":786},{"className":785},[],[787],{"type":44,"value":788},"\u003Cprofile>",{"type":44,"value":790}," with the values held from step 2. Omit ",{"type":38,"tag":93,"props":792,"children":794},{"className":793},[],[795],{"type":44,"value":796},"--site",{"type":44,"value":798}," to update all sites; pass ",{"type":38,"tag":93,"props":800,"children":802},{"className":801},[],[803],{"type":44,"value":804},"--site \u003Csite>",{"type":44,"value":806}," to limit the pull to one site. Do NOT add ",{"type":38,"tag":93,"props":808,"children":810},{"className":809},[],[811],{"type":44,"value":812},"|| true",{"type":44,"value":814}," here – unlike the report path, a failed pull is the headline result of this flow; surface it.",{"type":38,"tag":81,"props":816,"children":817},{},[818,823,825,828],{"type":38,"tag":85,"props":819,"children":820},{},[821],{"type":44,"value":822},"Report done.",{"type":44,"value":824}," One short line: \"Cache updated. Next report run uses the latest data.\"",{"type":38,"tag":335,"props":826,"children":827},{},[],{"type":44,"value":829},"If the pull failed (auth lapse, S3 error), say so plainly. Nothing was deleted, so whatever was already cached is still there and usable – the failure only means new data wasn't added this time.",{"type":38,"tag":58,"props":831,"children":833},{"id":832},"notes",[834],{"type":44,"value":835},"Notes",{"type":38,"tag":422,"props":837,"children":838},{},[839,851,863],{"type":38,"tag":81,"props":840,"children":841},{},[842,844,849],{"type":44,"value":843},"Only the ",{"type":38,"tag":85,"props":845,"children":846},{},[847],{"type":44,"value":848},"currently configured",{"type":44,"value":850}," customer's DPL data is affected.",{"type":38,"tag":81,"props":852,"children":853},{},[854,856,861],{"type":44,"value":855},"The DuckDB catalog view (",{"type":38,"tag":93,"props":857,"children":859},{"className":858},[],[860],{"type":44,"value":502},{"type":44,"value":862},") is rebuilt after the pull so it reflects any newly-synced partitions.",{"type":38,"tag":81,"props":864,"children":865},{},[866],{"type":44,"value":867},"This flow never deletes local files. If you suspect the local cache itself is corrupted or inconsistent (not just behind), use refresh-cache instead.",{"type":38,"tag":869,"props":870,"children":871},"style",{},[872],{"type":44,"value":873},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":875,"total":600},[876,890,906,920,932,946,958],{"slug":877,"name":877,"fn":878,"description":879,"org":880,"tags":881,"stars":22,"repoUrl":23,"updatedAt":889},"clear-configs","remove local agentic analytics configuration files","Remove the local config files written by first-time setup (bucket.json and the agentic-analytics AWS profile). Leaves the events cache alone. Use when the user wants to start setup over, entered the wrong bucket name, or asks to reset\u002Fclear the plugin's configuration.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[882,885,888],{"name":883,"slug":884,"type":15},"AWS","aws",{"name":886,"slug":887,"type":15},"Configuration","configuration",{"name":13,"slug":14,"type":15},"2026-07-24T06:08:49.942979",{"slug":891,"name":891,"fn":892,"description":893,"org":894,"tags":895,"stars":22,"repoUrl":23,"updatedAt":905},"conversions-report","generate conversion attribution reports","Seed for a future standalone conversions report. Currently holds conversion-attribution code lifted out of the staircase report (PR B of the staircase climbing revision); not yet runnable end-to-end. Use when the user asks to build out the standalone conversions report; do not invoke for \"run the conversions report\" until the file is reshaped.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[896,899,902],{"name":897,"slug":898,"type":15},"Analytics","analytics",{"name":900,"slug":901,"type":15},"Reporting","reporting",{"name":903,"slug":904,"type":15},"Sales","sales","2026-05-23T06:06:37.112153",{"slug":907,"name":907,"fn":908,"description":909,"org":910,"tags":911,"stars":22,"repoUrl":23,"updatedAt":919},"getting-started","set up agentic-analytics plugin","Walk the user through first-time setup of the agentic-analytics plugin. Use when the user asks how to get started, how to set up the plugin, where to put their credentials, what the plugin can do for them, or any variant of \"first run\" \u002F \"onboarding\" \u002F \"walk me through this.\"",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[912,913,916],{"name":897,"slug":898,"type":15},{"name":914,"slug":915,"type":15},"Documentation","documentation",{"name":917,"slug":918,"type":15},"Reference","reference","2026-07-24T05:42:05.056763",{"slug":921,"name":921,"fn":922,"description":923,"org":924,"tags":925,"stars":22,"repoUrl":23,"updatedAt":931},"identify-employees","filter internal employee traffic from reports","Detect whether the configured customer's tracker tags employee\u002Finternal pageviews via `extra_data`, and if so, save the filter so reports exclude that traffic. Use when the user asks to identify employees, exclude employee traffic, filter internal users, or says results look skewed by their own staff.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[926,927,930],{"name":897,"slug":898,"type":15},{"name":928,"slug":929,"type":15},"Data Cleaning","data-cleaning",{"name":13,"slug":14,"type":15},"2026-07-24T05:42:07.991328",{"slug":933,"name":933,"fn":934,"description":935,"org":936,"tags":937,"stars":22,"repoUrl":23,"updatedAt":945},"refresh-cache","clear and rebuild local data cache","Blow away the local data cache and rebuild it. Use when the user asks to refresh the cache, rebuild the cache, clear cached data, start clean, recover from a bad pull, or says reports are returning stale or weird-looking numbers. Leaves config alone. Offers the lighter update-cache flow as an alternative before deleting anything.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[938,939,942],{"name":20,"slug":21,"type":15},{"name":940,"slug":941,"type":15},"Debugging","debugging",{"name":943,"slug":944,"type":15},"Performance","performance","2026-07-24T05:42:07.032844",{"slug":947,"name":947,"fn":948,"description":949,"org":950,"tags":951,"stars":22,"repoUrl":23,"updatedAt":957},"staircase-report","generate staircase audience relationship reports","Run the staircase audience-relationship report for a customer. Use when the user asks to run the staircase report, requests it for a specific site, or asks for an audience-tier or relationship-intelligence report.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[952,953,956],{"name":897,"slug":898,"type":15},{"name":954,"slug":955,"type":15},"Customer Success","customer-success",{"name":900,"slug":901,"type":15},"2026-07-24T05:42:06.016457",{"slug":4,"name":4,"fn":5,"description":6,"org":959,"tags":960,"stars":22,"repoUrl":23,"updatedAt":24},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[961,962,963],{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"items":965,"total":1147},[966,987,1006,1018,1035,1048,1062,1077,1094,1105,1118,1134],{"slug":967,"name":967,"fn":968,"description":969,"org":970,"tags":971,"stars":984,"repoUrl":985,"updatedAt":986},"annotate","collect visual feedback with browser annotation tools","Open a browser with visual annotation tools. The user clicks elements on their site and leaves feedback — the agent reads annotations and makes changes. Use this when the user wants to point at specific elements to fix, tweak, or redesign.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[972,975,978,981],{"name":973,"slug":974,"type":15},"Frontend","frontend",{"name":976,"slug":977,"type":15},"Productivity","productivity",{"name":979,"slug":980,"type":15},"UX Copy","ux-copy",{"name":982,"slug":983,"type":15},"UX Design","ux-design",484,"https:\u002F\u002Fgithub.com\u002FAutomattic\u002Fstudio","2026-05-06T05:40:01.516544",{"slug":988,"name":988,"fn":989,"description":990,"org":991,"tags":992,"stars":984,"repoUrl":985,"updatedAt":1005},"block-content","write editable WordPress block markup","Write editable WordPress block markup for local Studio sites, including core\u002Fhtml limits, block-theme layout rules, full-width sections, validation, and skeleton-first page\u002FCSS recipes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[993,996,999,1002],{"name":994,"slug":995,"type":15},"Block Editor","block-editor",{"name":997,"slug":998,"type":15},"CSS","css",{"name":1000,"slug":1001,"type":15},"HTML","html",{"name":1003,"slug":1004,"type":15},"WordPress","wordpress","2026-05-27T07:01:55.629681",{"slug":1007,"name":1007,"fn":1008,"description":1009,"org":1010,"tags":1011,"stars":984,"repoUrl":985,"updatedAt":1017},"hosting-plans-helper","provide WordPress.com hosting plan information","Answer WordPress.com plan, pricing, upgrade, and feature-tier questions (plan names, what each tier unlocks — plugins, themes, custom code, SSH, hosting — and current prices) from authoritative live data. Load before answering ANY plan, pricing, or feature-gating question; never answer these from memory.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1012,1015,1016],{"name":1013,"slug":1014,"type":15},"Pricing","pricing",{"name":917,"slug":918,"type":15},{"name":1003,"slug":1004,"type":15},"2026-07-02T07:42:33.654791",{"slug":1019,"name":1019,"fn":1020,"description":1021,"org":1022,"tags":1023,"stars":984,"repoUrl":985,"updatedAt":1034},"liberate","migrate websites to WordPress","Import and rebuild a website from a closed platform (Wix, Squarespace, Webflow, Shopify, GoDaddy, Hostinger, HubSpot, Weebly) into a Studio WordPress site. Extracts pages\u002Fposts\u002Fproducts + media, then reconstructs the design as editable blocks + WooCommerce OR as a high-fidelity replica theme. Invoke when the user wants to migrate, import, liberate, or rebuild a site from one of these platforms.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1024,1027,1030,1033],{"name":1025,"slug":1026,"type":15},"CMS","cms",{"name":1028,"slug":1029,"type":15},"Migration","migration",{"name":1031,"slug":1032,"type":15},"Web Development","web-development",{"name":1003,"slug":1004,"type":15},"2026-07-09T06:47:33.454311",{"slug":1036,"name":1036,"fn":1037,"description":1038,"org":1039,"tags":1040,"stars":984,"repoUrl":985,"updatedAt":1047},"need-for-speed","run frontend performance audits for WordPress sites","Run a frontend performance audit on a WordPress site and get actionable optimization recommendations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1041,1044,1045,1046],{"name":1042,"slug":1043,"type":15},"Audit","audit",{"name":973,"slug":974,"type":15},{"name":943,"slug":944,"type":15},{"name":1003,"slug":1004,"type":15},"2026-05-06T05:40:06.433267",{"slug":1049,"name":1049,"fn":1050,"description":1051,"org":1052,"tags":1053,"stars":984,"repoUrl":985,"updatedAt":1061},"plugin-recommendations","recommend WordPress plugins for site features","Choose recommended plugins and plugin-provided blocks for features core WordPress blocks do not cover - ecommerce (WooCommerce), forms and newsletters (Jetpack), online courses and quizzes (Sensei LMS), polls, surveys and ratings (Crowdsignal), spam protection (Akismet) - while keeping generated content editable and avoiding raw HTML fallbacks. Any request to sell products or build a shop, store, or storefront requires WooCommerce with products.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1054,1057,1060],{"name":1055,"slug":1056,"type":15},"Content Creation","content-creation",{"name":1058,"slug":1059,"type":15},"Plugin Development","plugin-development",{"name":1003,"slug":1004,"type":15},"2026-05-27T07:01:58.249105",{"slug":1063,"name":1063,"fn":1064,"description":1065,"org":1066,"tags":1067,"stars":984,"repoUrl":985,"updatedAt":1076},"rank-me-up","run on-page SEO audits for WordPress sites","Run an on-page SEO audit on a WordPress site and get actionable recommendations to improve search visibility.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1068,1069,1072,1075],{"name":1042,"slug":1043,"type":15},{"name":1070,"slug":1071,"type":15},"Marketing","marketing",{"name":1073,"slug":1074,"type":15},"SEO","seo",{"name":1003,"slug":1004,"type":15},"2026-05-06T05:40:05.196367",{"slug":1078,"name":1078,"fn":1079,"description":1080,"org":1081,"tags":1082,"stars":984,"repoUrl":985,"updatedAt":1093},"site-spec","gather specifications for new WordPress sites","Gather the site name and layout preference before building a WordPress site. Run this before creating any new site.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1083,1086,1089,1092],{"name":1084,"slug":1085,"type":15},"Design","design",{"name":1087,"slug":1088,"type":15},"Product Management","product-management",{"name":1090,"slug":1091,"type":15},"Specs","specs",{"name":1003,"slug":1004,"type":15},"2026-05-06T05:40:02.739409",{"slug":1095,"name":1095,"fn":1096,"description":1097,"org":1098,"tags":1099,"stars":984,"repoUrl":985,"updatedAt":1104},"studio-cli","manage local WordPress sites with Studio CLI","Use the Studio CLI to manage local WordPress sites, authentication, and preview sites. Invoke this skill when you need to run Studio CLI commands, manage sites, or troubleshoot site issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1100,1103],{"name":1101,"slug":1102,"type":15},"CLI","cli",{"name":1003,"slug":1004,"type":15},"2026-04-06T18:02:57.150231",{"slug":1106,"name":1106,"fn":1107,"description":1108,"org":1109,"tags":1110,"stars":984,"repoUrl":985,"updatedAt":1117},"taxonomist","optimize WordPress category taxonomy","Analyze and optimize a WordPress site's category taxonomy. Exports all posts, uses AI to suggest an improved category structure — merging duplicates, retiring dead categories, creating missing ones, writing descriptions, and re-categorizing posts. Run this when the user wants to clean up or improve their categories.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1111,1114,1115,1116],{"name":1112,"slug":1113,"type":15},"Content Strategy","content-strategy",{"name":928,"slug":929,"type":15},{"name":1073,"slug":1074,"type":15},{"name":1003,"slug":1004,"type":15},"2026-05-06T05:40:03.966799",{"slug":1119,"name":1119,"fn":1120,"description":1121,"org":1122,"tags":1123,"stars":984,"repoUrl":985,"updatedAt":1133},"visual-design","plan and execute visual design direction","Plan and execute high-quality visual direction for site creation, redesign, layout, typography, color, motion, and visual polish.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1124,1127,1128,1131],{"name":1125,"slug":1126,"type":15},"Animation","animation",{"name":1084,"slug":1085,"type":15},{"name":1129,"slug":1130,"type":15},"Typography","typography",{"name":1132,"slug":1119,"type":15},"Visual Design","2026-07-24T05:40:57.887452",{"slug":1135,"name":1135,"fn":1136,"description":1137,"org":1138,"tags":1139,"stars":984,"repoUrl":985,"updatedAt":1146},"visual-polish","verify and polish website visual design","Verify and polish a built or redesigned site by diagnosing rendered-DOM issues against intent and fixing them in a planned, batched screenshot-and-fix loop.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1140,1141,1142,1145],{"name":940,"slug":941,"type":15},{"name":973,"slug":974,"type":15},{"name":1143,"slug":1144,"type":15},"Screenshots","screenshots",{"name":1132,"slug":1119,"type":15},"2026-06-06T07:09:59.809812",81]