[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-posthog-working-with-skills":3,"mdc--b4btkm-key":37,"related-org-posthog-working-with-skills":4132,"related-repo-posthog-working-with-skills":4305},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"working-with-skills","manage and refactor PostHog agent skills","Best practices for agents managing PostHog skills via the MCP `llma-skill-*` tools — how to discover, read, create, update, and refactor skills efficiently, especially large skills with many bundled files. Use whenever you are about to call any `llma-skill-*` tool, asked to author or edit a shared skill, or troubleshoot why a skill write was rejected. Pairs with `skills-store` (which covers the raw tool surface) by adding the decision-tree, efficiency, and pitfall guidance.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"posthog","PostHog","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fposthog.png",[12,14,17,20,23],{"name":9,"slug":8,"type":13},"tag",{"name":15,"slug":16,"type":13},"Documentation","documentation",{"name":18,"slug":19,"type":13},"MCP","mcp",{"name":21,"slug":22,"type":13},"Agents","agents",{"name":24,"slug":25,"type":13},"Engineering","engineering",56,"https:\u002F\u002Fgithub.com\u002FPostHog\u002Fskills","2026-05-09T05:45:38.204925",null,4,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],"PostHog skills (under construction)","https:\u002F\u002Fgithub.com\u002FPostHog\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fomnibus\u002Fworking-with-skills","---\nname: working-with-skills\ndescription: >-\n  Best practices for agents managing PostHog skills via the MCP `llma-skill-*` tools —\n  how to discover, read, create, update, and refactor skills efficiently, especially\n  large skills with many bundled files. Use whenever you are about to call any\n  `llma-skill-*` tool, asked to author or edit a shared skill, or troubleshoot\n  why a skill write was rejected. Pairs with `skills-store` (which covers the\n  raw tool surface) by adding the decision-tree, efficiency, and pitfall guidance.\n---\n\n# Working with PostHog skills\n\nThis skill teaches agents how to use the `llma-skill-*` MCP tools well — minimum\ncontext, minimum round-trips, minimum mistakes. If you are not yet familiar with\nthe tool surface itself, read the `skills-store` skill first for the catalog.\nThis document is about _how to choose between the tools_ and _how to scale the\nworkflow_ when skills get big.\n\n## Operating principles\n\n1. **Progressive disclosure is non-negotiable.** Lists return descriptions, get\n   returns body + manifest, file-get returns one file. Never preload bundled\n   files \"just in case\" — every preloaded script is wasted context for the\n   actual task.\n2. **Pick the smallest write primitive that does the job.** A targeted `edits`\n   or `file_edits` is cheaper, safer, and clearer in version history than a\n   full body or full bundle replacement.\n3. **Reads are cheap; concurrent overwrites are not.** Always have a recent\n   `version` from `llma-skill-get` (or from the response of the previous write)\n   before calling any write tool, and pass it as `base_version`.\n4. **Authoring follows the [Agent Skills spec](https:\u002F\u002Fagentskills.io\u002Fspecification).**\n   Keep `name` kebab-case, descriptions trigger-rich, body short, bulky\n   material in bundled files.\n\n## Decision tree: which tool do I call?\n\n```text\nNeed to know what's available?\n  └─► llma-skill-list                    (names + descriptions only)\n\nNeed to use \u002F inspect a specific skill?\n  └─► llma-skill-get                     (body + file manifest, NO file contents)\n        └─► llma-skill-file-get          (one file, on demand, only as referenced)\n\nAuthoring a brand new skill?\n  └─► llma-skill-create                  (body + all initial files in one call)\n\nEditing an existing skill?\n  ├─ Body change?\n  │    ├─ Substantial rewrite ............. update(body=...)\n  │    └─ Surgical tweak .................. update(edits=[{old, new}, ...])\n  ├─ Bundled file content change?\n  │    └─ update(file_edits=[{path, edits:[...]}, ...])\n  ├─ Add \u002F remove \u002F rename a file?\n  │    ├─ Add ............................. llma-skill-file-create\n  │    ├─ Delete .......................... llma-skill-file-delete\n  │    └─ Rename .......................... llma-skill-file-rename\n  └─ Wholesale bundle reset (rare!) ....... update(files=[...])  # replaces ALL files\n\nWant a fork as the starting point?\n  └─► llma-skill-duplicate               (then update the copy)\n\nDone with a skill entirely?\n  └─► llma-skill-archive                 (hides ALL versions; cannot be undone)\n```\n\nIf you find yourself reaching for `update(body=...)` plus a sprawling `files=[...]`\nto change one paragraph and one script, stop — that's two narrower calls\n(`update(edits=[...])` plus `update(file_edits=[...])`) or even a single\n`update` carrying both `edits` and `file_edits`.\n\n## Discover before you fetch\n\n```json\nposthog:llma-skill-list\n{ \"search\": \"fractal\" }\n```\n\n`llma-skill-list` is the right tool to \"find a skill\" — it returns names and\ndescriptions only. Reading the descriptions is the entire point: pick the right\nskill before pulling any body. If `search` doesn't narrow it enough, list\nwithout it and scan, but do not start fetching candidate bodies blindly.\n\n`llma-skill-get` should be called **once per skill per task**, not per question.\nCache the body in your working memory; fetch again only if you suspect the\nskill changed under you (e.g. a `409` on write — see \"Concurrency\" below).\n\n## Reading a large skill efficiently\n\nBig skills (long body, many bundled files) are the case where lazy loading\nmatters most.\n\n1. `llma-skill-get(skill_name=...)` — read `body` + `files[]` manifest.\n2. Scan the body's table of contents \u002F headings. The body should already tell\n   you which file goes with which task — that's why bodies stay short and\n   reference files by path.\n3. For each file the body explicitly points at for _the current task_, call\n   `llma-skill-file-get(file_path=...)`. Skip everything else.\n4. If the body references \"see scripts\u002FX for the rare case Y\" and you are not\n   in case Y, do not fetch `scripts\u002FX`.\n\nWhen in doubt, fewer files. You can always fetch one more on the next turn.\n\n## Authoring a new skill\n\nUse a single `llma-skill-create` call with body **and** initial files — the\nskill lands at `version: 1` complete. Do not create the skill empty and then\nmake N follow-up `llma-skill-file-create` calls; that's N extra versions and N\nextra round-trips for no benefit.\n\n```json\nposthog:llma-skill-create\n{\n  \"name\": \"my-skill\",\n  \"description\": \"What it does AND when to use it. Include trigger keywords.\",\n  \"body\": \"# my-skill\\n\\n## When to use\\n...\\n## Workflow\\n...\",\n  \"license\": \"MIT\",\n  \"compatibility\": \"Requires Python 3.10+\",\n  \"allowed_tools\": [\"Bash\", \"Write\"],\n  \"metadata\": { \"author\": \"me\", \"category\": \"...\" },\n  \"files\": [\n    { \"path\": \"scripts\u002Ffoo.py\", \"content\": \"...\", \"content_type\": \"text\u002Fx-python\" },\n    { \"path\": \"references\u002Fprimer.md\", \"content\": \"...\", \"content_type\": \"text\u002Fmarkdown\" }\n  ]\n}\n```\n\n### Authoring rules of thumb\n\n- **`description` is the discovery surface.** It is the only thing\n  `llma-skill-list` returns. Make it trigger-rich (what the user might say) and\n  scope-honest (what the skill does and does not do).\n- **`name`** — kebab-case, max 64 chars, no leading\u002Ftrailing\u002Fconsecutive\n  hyphens. The spec validator rejects anything else.\n- **Body ≤ ~500 lines.** Long preambles, exhaustive SQL, full example payloads,\n  and runnable code belong in `references\u002F`, `assets\u002F`, or `scripts\u002F`. The body\n  should _route_ to those files, not inline them.\n- **File layout convention** — `scripts\u002F` for executable code, `references\u002F`\n  for prose docs and examples, `assets\u002F` for templates \u002F data. Agents can rely\n  on this for orientation when they only have the manifest.\n- **`allowed_tools`** lists the MCP \u002F built-in tools the skill expects to be\n  callable. Be honest — under-declaring causes silent failures, over-declaring\n  is a security smell.\n\n## Updating an existing skill\n\nThe single most common mistake is using `update(body=..., files=[...])` for a\nsmall change. That works, but it round-trips the entire skill, makes the diff\nunreadable in version history, and risks dropping files if `files` was\nincomplete. Use the smallest primitive instead.\n\n### Always read first, capture `version`\n\n```json\nposthog:llma-skill-get\n{ \"skill_name\": \"my-skill\" }\n```\n\nNote the returned `version` — pass it as `base_version` on every write. After a\nsuccessful write, the response contains the new `version`; chain further writes\nwith that.\n\n### Body: full replacement vs incremental edits\n\nFull replacement when you are restructuring the body:\n\n```json\nposthog:llma-skill-update\n{ \"skill_name\": \"my-skill\", \"body\": \"# my-skill\\n\\nNew body...\", \"base_version\": 7 }\n```\n\nIncremental edits when you are tweaking a few lines (preferred for small\nchanges — easier to review, lower error surface):\n\n```json\nposthog:llma-skill-update\n{\n  \"skill_name\": \"my-skill\",\n  \"edits\": [\n    { \"old\": \"Use Pillow for rendering.\", \"new\": \"Use Pillow ≥10.0 for rendering.\" },\n    { \"old\": \"## Old section title\", \"new\": \"## New section title\" }\n  ],\n  \"base_version\": 7\n}\n```\n\nEach `edits[].old` must match exactly once in the current body, and `body` and\n`edits` are mutually exclusive in one call.\n\n### Bundled file content edits\n\n`file_edits` patches one or more existing files in place — non-targeted files\ncarry forward unchanged. This is the right primitive when you are tweaking\nscript logic or fixing a typo in a reference doc:\n\n```json\nposthog:llma-skill-update\n{\n  \"skill_name\": \"my-skill\",\n  \"file_edits\": [\n    {\n      \"path\": \"scripts\u002Ffoo.py\",\n      \"edits\": [{ \"old\": \"ITERATIONS = 100\", \"new\": \"ITERATIONS = 250\" }]\n    },\n    {\n      \"path\": \"references\u002Fprimer.md\",\n      \"edits\": [{ \"old\": \"## Outdated header\", \"new\": \"## Updated header\" }]\n    }\n  ],\n  \"base_version\": 7\n}\n```\n\n`file_edits` cannot **add**, **remove**, or **rename** files — only patch\nexisting ones. For structural changes, use the per-file tools.\n\n### Combining edits in a single call\n\nYou can combine `edits` (body) and `file_edits` (existing files) in one\n`llma-skill-update` call to publish a single coherent version when a change\nspans both:\n\n```json\nposthog:llma-skill-update\n{\n  \"skill_name\": \"my-skill\",\n  \"edits\": [{ \"old\": \"## Configuration\", \"new\": \"## Setup\" }],\n  \"file_edits\": [\n    { \"path\": \"scripts\u002Frun.py\", \"edits\": [{ \"old\": \"DEBUG = False\", \"new\": \"DEBUG = True\" }] }\n  ],\n  \"base_version\": 7\n}\n```\n\n### File-path parameter naming (read this before guessing)\n\nThe same concept — a bundled file's path — is named differently depending on\n**where it travels in the request**, and this trips up agents working from\nmemory. There is one rule:\n\n- **`file_path`** — when the path is part of the **URL** (`llma-skill-file-get`,\n  `llma-skill-file-delete`). These read\u002Fdelete one file addressed by its path.\n- **`path`** — when the path is a **body field**: `llma-skill-file-create`, the\n  `files=[{path, content, content_type}]` array, and `file_edits=[{path, edits}]`.\n- **`old_path` \u002F `new_path`** — body fields on `llma-skill-file-rename`.\n\nMnemonic: `path` is the field name on a file _object_ (it sits next to\n`content`), so everything that carries a file object uses `path`; the two\ntools that address a file by URL use `file_path`. When unsure, check the\ntool's input schema rather than guessing — passing `path` to file-get yields a\n`\u002Ffiles\u002Fundefined\u002F` 404.\n\n### Adding, removing, renaming files\n\nEach is its own call, each publishes a new version:\n\n```json\nposthog:llma-skill-file-create\n{ \"skill_name\": \"my-skill\", \"path\": \"scripts\u002Fjulia.py\", \"content\": \"...\", \"base_version\": 7 }\n```\n\n```json\nposthog:llma-skill-file-delete\n{ \"skill_name\": \"my-skill\", \"file_path\": \"scripts\u002Fold.py\", \"base_version\": 8 }\n```\n\n```json\nposthog:llma-skill-file-rename\n{ \"skill_name\": \"my-skill\", \"old_path\": \"scripts\u002Fjulia.py\", \"new_path\": \"scripts\u002Fjulia_set.py\", \"base_version\": 9 }\n```\n\n`llma-skill-file-rename` is a true move — it carries the existing content\nforward without resending it. Always prefer it over delete + create when the\ncontent is unchanged.\n\n### When to use `update(files=[...])` (rare)\n\nPassing `files` to `llma-skill-update` **replaces the entire bundle** —\nanything not in the array is dropped. This is the right tool only when you are\nintentionally wiping and reseeding the bundle (e.g. importing a fresh local\nSKILL.md tree). For almost every other case, prefer `file_edits` plus per-file\nCRUD.\n\n## Working with large multi-file skills\n\nSkills with many files (10+) require extra discipline:\n\n- **Treat the manifest as the index.** `llma-skill-get`'s `files[]` is your map.\n  Match each task step to one file and fetch only that one.\n- **Group structural changes into a sequence, not a fork.** If you are renaming\n  three files, do them sequentially: `rename → rename → rename`, each chained\n  via the previous response's `version`. That gives you three small reviewable\n  versions instead of one giant `update(files=[...])` blob.\n- **Keep edits localised.** A single `llma-skill-update` with `file_edits`\n  targeting five files is fine. A single `update(files=[...])` carrying ten\n  full file bodies is almost always a sign you should have used `file_edits`.\n- **Refactor the body itself first.** If the body has grown past ~500 lines,\n  the right next step is usually to split content into new bundled files\n  before adding more material.\n\n## Concurrency: `base_version`\n\nEvery write tool accepts `base_version`. Always pass it.\n\n- The server compares `base_version` to the current latest version. If they\n  match, the write succeeds and the new version is `base_version + 1`.\n- If they differ, the write is rejected (someone else updated the skill).\n  Re-run `llma-skill-get`, reconcile your changes against the new body, and\n  retry with the fresh `version`.\n- After a successful write, the response includes the new `version`. Chain\n  further edits with that — do not re-`get` between back-to-back writes you\n  control.\n\nSkipping `base_version` does _not_ speed things up — it just turns a clean\n\"someone else won the race\" error into a silent overwrite of their work.\n\n## Common pitfalls\n\n- **Calling `llma-skill-list` with no search and then fetching every body** —\n  defeats progressive disclosure. Read the descriptions first.\n- **Pre-fetching every bundled file after `llma-skill-get`** — same mistake on\n  the inner level. Fetch on demand from the body's directives.\n- **Using `update(body=..., files=[...])` for a one-line fix** — round-trips\n  the entire skill, makes diffs unreadable, and risks dropping files. Use\n  `edits` \u002F `file_edits`.\n- **Using `update(files=[...])` when you meant to add one file** — drops every\n  file you didn't include. Use `llma-skill-file-create` instead.\n- **Delete + create instead of rename** — loses content history and costs an\n  extra version bump.\n- **Stale `base_version` after chained writes** — read the `version` from the\n  previous write's response, not from your initial `get`.\n- **Leaving `base_version` off** — accepts a silent overwrite. Always include\n  it once you've done a `get`.\n- **Empty \u002F vague `description`** — the skill becomes effectively undiscoverable\n  via `llma-skill-list` search. Treat the description as the trigger contract.\n- **Long body + no bundled files** — when a body crosses ~500 lines, refactor\n  into `references\u002F` and `scripts\u002F` rather than letting it grow.\n- **Mixing `body` and `edits` in one update call** — they're mutually exclusive.\n  Pick one.\n- **Guessing `path` vs `file_path`** — file-get and file-delete take `file_path`\n  (it's in the URL); create, rename (`old_path`\u002F`new_path`), `files`, and\n  `file_edits` take `path` (it's a body field). See \"File-path parameter\n  naming\" above.\n\n## Archiving a skill\n\n`llma-skill-archive` hides **every** active version of a skill by name. It is\nnot version-scoped and **cannot be undone** — the skill drops out of\n`llma-skill-list` and `llma-skill-get` for the whole team.\n\n```json\nposthog:llma-skill-archive\n{ \"skill_name\": \"my-skill\" }\n```\n\nBefore archiving, `llma-skill-get` the skill if you need to inspect or copy it\nfirst. Archiving is the right tool for retiring a skill entirely; to remove a\nsingle bundled file use `llma-skill-file-delete`, and to roll back content\npublish a new version rather than archiving.\n\n## Porting a local SKILL.md tree into PostHog\n\nWhen migrating a local skill folder (e.g. `my-skill\u002FSKILL.md` plus\n`scripts\u002F`, `references\u002F`, `assets\u002F`):\n\n1. Read the local `SKILL.md`. Its frontmatter maps to `name`, `description`,\n   `license`, `compatibility`, `allowed_tools`, `metadata`. The body after the\n   frontmatter becomes `body`.\n2. Walk the bundled subdirs and gather every file as\n   `{ path, content, content_type }`.\n3. Call `posthog:llma-skill-create` once with everything — the skill lands at\n   `version: 1` complete. Do not split this into a create + N file-create\n   calls.\n\nAfter the create, the skill is live for everyone via `llma-skill-get`.\n\n## When a skill is the wrong answer\n\nNot every persistent prompt belongs in the skills store:\n\n- One-off task instructions belong in the conversation, not in a skill.\n- Personal scratchpads belong in agent memory or local files.\n- Code is not a skill — if it's something a service runs, it belongs in the\n  repo.\n\nA good skill is reusable, discoverable by description, and worth the cost of\nkeeping it correct over time.\n",{"data":38,"body":39},{"name":4,"description":6},{"type":40,"children":41},"root",[42,51,89,96,200,206,218,275,281,352,370,395,401,406,473,478,484,520,1186,1193,1317,1323,1343,1354,1409,1435,1441,1446,1567,1572,1838,1865,1871,1881,2280,2309,2315,2342,2679,2685,2697,2807,2862,2868,2873,3016,3128,3272,3282,3296,3329,3335,3340,3445,3456,3468,3528,3547,3553,3835,3841,3879,3933,3952,3958,3990,4081,4092,4098,4103,4121,4126],{"type":43,"tag":44,"props":45,"children":47},"element","h1",{"id":46},"working-with-posthog-skills",[48],{"type":49,"value":50},"text","Working with PostHog skills",{"type":43,"tag":52,"props":53,"children":54},"p",{},[55,57,64,66,72,74,80,82,87],{"type":49,"value":56},"This skill teaches agents how to use the ",{"type":43,"tag":58,"props":59,"children":61},"code",{"className":60},[],[62],{"type":49,"value":63},"llma-skill-*",{"type":49,"value":65}," MCP tools well — minimum\ncontext, minimum round-trips, minimum mistakes. If you are not yet familiar with\nthe tool surface itself, read the ",{"type":43,"tag":58,"props":67,"children":69},{"className":68},[],[70],{"type":49,"value":71},"skills-store",{"type":49,"value":73}," skill first for the catalog.\nThis document is about ",{"type":43,"tag":75,"props":76,"children":77},"em",{},[78],{"type":49,"value":79},"how to choose between the tools",{"type":49,"value":81}," and ",{"type":43,"tag":75,"props":83,"children":84},{},[85],{"type":49,"value":86},"how to scale the\nworkflow",{"type":49,"value":88}," when skills get big.",{"type":43,"tag":90,"props":91,"children":93},"h2",{"id":92},"operating-principles",[94],{"type":49,"value":95},"Operating principles",{"type":43,"tag":97,"props":98,"children":99},"ol",{},[100,112,138,172],{"type":43,"tag":101,"props":102,"children":103},"li",{},[104,110],{"type":43,"tag":105,"props":106,"children":107},"strong",{},[108],{"type":49,"value":109},"Progressive disclosure is non-negotiable.",{"type":49,"value":111}," Lists return descriptions, get\nreturns body + manifest, file-get returns one file. Never preload bundled\nfiles \"just in case\" — every preloaded script is wasted context for the\nactual task.",{"type":43,"tag":101,"props":113,"children":114},{},[115,120,122,128,130,136],{"type":43,"tag":105,"props":116,"children":117},{},[118],{"type":49,"value":119},"Pick the smallest write primitive that does the job.",{"type":49,"value":121}," A targeted ",{"type":43,"tag":58,"props":123,"children":125},{"className":124},[],[126],{"type":49,"value":127},"edits",{"type":49,"value":129},"\nor ",{"type":43,"tag":58,"props":131,"children":133},{"className":132},[],[134],{"type":49,"value":135},"file_edits",{"type":49,"value":137}," is cheaper, safer, and clearer in version history than a\nfull body or full bundle replacement.",{"type":43,"tag":101,"props":139,"children":140},{},[141,146,148,154,156,162,164,170],{"type":43,"tag":105,"props":142,"children":143},{},[144],{"type":49,"value":145},"Reads are cheap; concurrent overwrites are not.",{"type":49,"value":147}," Always have a recent\n",{"type":43,"tag":58,"props":149,"children":151},{"className":150},[],[152],{"type":49,"value":153},"version",{"type":49,"value":155}," from ",{"type":43,"tag":58,"props":157,"children":159},{"className":158},[],[160],{"type":49,"value":161},"llma-skill-get",{"type":49,"value":163}," (or from the response of the previous write)\nbefore calling any write tool, and pass it as ",{"type":43,"tag":58,"props":165,"children":167},{"className":166},[],[168],{"type":49,"value":169},"base_version",{"type":49,"value":171},".",{"type":43,"tag":101,"props":173,"children":174},{},[175,190,192,198],{"type":43,"tag":105,"props":176,"children":177},{},[178,180,189],{"type":49,"value":179},"Authoring follows the ",{"type":43,"tag":181,"props":182,"children":186},"a",{"href":183,"rel":184},"https:\u002F\u002Fagentskills.io\u002Fspecification",[185],"nofollow",[187],{"type":49,"value":188},"Agent Skills spec",{"type":49,"value":171},{"type":49,"value":191},"\nKeep ",{"type":43,"tag":58,"props":193,"children":195},{"className":194},[],[196],{"type":49,"value":197},"name",{"type":49,"value":199}," kebab-case, descriptions trigger-rich, body short, bulky\nmaterial in bundled files.",{"type":43,"tag":90,"props":201,"children":203},{"id":202},"decision-tree-which-tool-do-i-call",[204],{"type":49,"value":205},"Decision tree: which tool do I call?",{"type":43,"tag":207,"props":208,"children":213},"pre",{"className":209,"code":211,"language":49,"meta":212},[210],"language-text","Need to know what's available?\n  └─► llma-skill-list                    (names + descriptions only)\n\nNeed to use \u002F inspect a specific skill?\n  └─► llma-skill-get                     (body + file manifest, NO file contents)\n        └─► llma-skill-file-get          (one file, on demand, only as referenced)\n\nAuthoring a brand new skill?\n  └─► llma-skill-create                  (body + all initial files in one call)\n\nEditing an existing skill?\n  ├─ Body change?\n  │    ├─ Substantial rewrite ............. update(body=...)\n  │    └─ Surgical tweak .................. update(edits=[{old, new}, ...])\n  ├─ Bundled file content change?\n  │    └─ update(file_edits=[{path, edits:[...]}, ...])\n  ├─ Add \u002F remove \u002F rename a file?\n  │    ├─ Add ............................. llma-skill-file-create\n  │    ├─ Delete .......................... llma-skill-file-delete\n  │    └─ Rename .......................... llma-skill-file-rename\n  └─ Wholesale bundle reset (rare!) ....... update(files=[...])  # replaces ALL files\n\nWant a fork as the starting point?\n  └─► llma-skill-duplicate               (then update the copy)\n\nDone with a skill entirely?\n  └─► llma-skill-archive                 (hides ALL versions; cannot be undone)\n","",[214],{"type":43,"tag":58,"props":215,"children":216},{"__ignoreMap":212},[217],{"type":49,"value":211},{"type":43,"tag":52,"props":219,"children":220},{},[221,223,229,231,237,239,245,247,253,255,261,263,268,269,274],{"type":49,"value":222},"If you find yourself reaching for ",{"type":43,"tag":58,"props":224,"children":226},{"className":225},[],[227],{"type":49,"value":228},"update(body=...)",{"type":49,"value":230}," plus a sprawling ",{"type":43,"tag":58,"props":232,"children":234},{"className":233},[],[235],{"type":49,"value":236},"files=[...]",{"type":49,"value":238},"\nto change one paragraph and one script, stop — that's two narrower calls\n(",{"type":43,"tag":58,"props":240,"children":242},{"className":241},[],[243],{"type":49,"value":244},"update(edits=[...])",{"type":49,"value":246}," plus ",{"type":43,"tag":58,"props":248,"children":250},{"className":249},[],[251],{"type":49,"value":252},"update(file_edits=[...])",{"type":49,"value":254},") or even a single\n",{"type":43,"tag":58,"props":256,"children":258},{"className":257},[],[259],{"type":49,"value":260},"update",{"type":49,"value":262}," carrying both ",{"type":43,"tag":58,"props":264,"children":266},{"className":265},[],[267],{"type":49,"value":127},{"type":49,"value":81},{"type":43,"tag":58,"props":270,"children":272},{"className":271},[],[273],{"type":49,"value":135},{"type":49,"value":171},{"type":43,"tag":90,"props":276,"children":278},{"id":277},"discover-before-you-fetch",[279],{"type":49,"value":280},"Discover before you fetch",{"type":43,"tag":207,"props":282,"children":286},{"className":283,"code":284,"language":285,"meta":212,"style":212},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","posthog:llma-skill-list\n{ \"search\": \"fractal\" }\n","json",[287],{"type":43,"tag":58,"props":288,"children":289},{"__ignoreMap":212},[290,302],{"type":43,"tag":291,"props":292,"children":295},"span",{"class":293,"line":294},"line",1,[296],{"type":43,"tag":291,"props":297,"children":299},{"style":298},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[300],{"type":49,"value":301},"posthog:llma-skill-list\n",{"type":43,"tag":291,"props":303,"children":305},{"class":293,"line":304},2,[306,312,317,323,328,333,337,343,347],{"type":43,"tag":291,"props":307,"children":309},{"style":308},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[310],{"type":49,"value":311},"{",{"type":43,"tag":291,"props":313,"children":314},{"style":308},[315],{"type":49,"value":316}," \"",{"type":43,"tag":291,"props":318,"children":320},{"style":319},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[321],{"type":49,"value":322},"search",{"type":43,"tag":291,"props":324,"children":325},{"style":308},[326],{"type":49,"value":327},"\"",{"type":43,"tag":291,"props":329,"children":330},{"style":308},[331],{"type":49,"value":332},":",{"type":43,"tag":291,"props":334,"children":335},{"style":308},[336],{"type":49,"value":316},{"type":43,"tag":291,"props":338,"children":340},{"style":339},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[341],{"type":49,"value":342},"fractal",{"type":43,"tag":291,"props":344,"children":345},{"style":308},[346],{"type":49,"value":327},{"type":43,"tag":291,"props":348,"children":349},{"style":308},[350],{"type":49,"value":351}," }\n",{"type":43,"tag":52,"props":353,"children":354},{},[355,361,363,368],{"type":43,"tag":58,"props":356,"children":358},{"className":357},[],[359],{"type":49,"value":360},"llma-skill-list",{"type":49,"value":362}," is the right tool to \"find a skill\" — it returns names and\ndescriptions only. Reading the descriptions is the entire point: pick the right\nskill before pulling any body. If ",{"type":43,"tag":58,"props":364,"children":366},{"className":365},[],[367],{"type":49,"value":322},{"type":49,"value":369}," doesn't narrow it enough, list\nwithout it and scan, but do not start fetching candidate bodies blindly.",{"type":43,"tag":52,"props":371,"children":372},{},[373,378,380,385,387,393],{"type":43,"tag":58,"props":374,"children":376},{"className":375},[],[377],{"type":49,"value":161},{"type":49,"value":379}," should be called ",{"type":43,"tag":105,"props":381,"children":382},{},[383],{"type":49,"value":384},"once per skill per task",{"type":49,"value":386},", not per question.\nCache the body in your working memory; fetch again only if you suspect the\nskill changed under you (e.g. a ",{"type":43,"tag":58,"props":388,"children":390},{"className":389},[],[391],{"type":49,"value":392},"409",{"type":49,"value":394}," on write — see \"Concurrency\" below).",{"type":43,"tag":90,"props":396,"children":398},{"id":397},"reading-a-large-skill-efficiently",[399],{"type":49,"value":400},"Reading a large skill efficiently",{"type":43,"tag":52,"props":402,"children":403},{},[404],{"type":49,"value":405},"Big skills (long body, many bundled files) are the case where lazy loading\nmatters most.",{"type":43,"tag":97,"props":407,"children":408},{},[409,436,441,461],{"type":43,"tag":101,"props":410,"children":411},{},[412,418,420,426,428,434],{"type":43,"tag":58,"props":413,"children":415},{"className":414},[],[416],{"type":49,"value":417},"llma-skill-get(skill_name=...)",{"type":49,"value":419}," — read ",{"type":43,"tag":58,"props":421,"children":423},{"className":422},[],[424],{"type":49,"value":425},"body",{"type":49,"value":427}," + ",{"type":43,"tag":58,"props":429,"children":431},{"className":430},[],[432],{"type":49,"value":433},"files[]",{"type":49,"value":435}," manifest.",{"type":43,"tag":101,"props":437,"children":438},{},[439],{"type":49,"value":440},"Scan the body's table of contents \u002F headings. The body should already tell\nyou which file goes with which task — that's why bodies stay short and\nreference files by path.",{"type":43,"tag":101,"props":442,"children":443},{},[444,446,451,453,459],{"type":49,"value":445},"For each file the body explicitly points at for ",{"type":43,"tag":75,"props":447,"children":448},{},[449],{"type":49,"value":450},"the current task",{"type":49,"value":452},", call\n",{"type":43,"tag":58,"props":454,"children":456},{"className":455},[],[457],{"type":49,"value":458},"llma-skill-file-get(file_path=...)",{"type":49,"value":460},". Skip everything else.",{"type":43,"tag":101,"props":462,"children":463},{},[464,466,472],{"type":49,"value":465},"If the body references \"see scripts\u002FX for the rare case Y\" and you are not\nin case Y, do not fetch ",{"type":43,"tag":58,"props":467,"children":469},{"className":468},[],[470],{"type":49,"value":471},"scripts\u002FX",{"type":49,"value":171},{"type":43,"tag":52,"props":474,"children":475},{},[476],{"type":49,"value":477},"When in doubt, fewer files. You can always fetch one more on the next turn.",{"type":43,"tag":90,"props":479,"children":481},{"id":480},"authoring-a-new-skill",[482],{"type":49,"value":483},"Authoring a new skill",{"type":43,"tag":52,"props":485,"children":486},{},[487,489,495,497,502,504,510,512,518],{"type":49,"value":488},"Use a single ",{"type":43,"tag":58,"props":490,"children":492},{"className":491},[],[493],{"type":49,"value":494},"llma-skill-create",{"type":49,"value":496}," call with body ",{"type":43,"tag":105,"props":498,"children":499},{},[500],{"type":49,"value":501},"and",{"type":49,"value":503}," initial files — the\nskill lands at ",{"type":43,"tag":58,"props":505,"children":507},{"className":506},[],[508],{"type":49,"value":509},"version: 1",{"type":49,"value":511}," complete. Do not create the skill empty and then\nmake N follow-up ",{"type":43,"tag":58,"props":513,"children":515},{"className":514},[],[516],{"type":49,"value":517},"llma-skill-file-create",{"type":49,"value":519}," calls; that's N extra versions and N\nextra round-trips for no benefit.",{"type":43,"tag":207,"props":521,"children":523},{"className":283,"code":522,"language":285,"meta":212,"style":212},"posthog:llma-skill-create\n{\n  \"name\": \"my-skill\",\n  \"description\": \"What it does AND when to use it. Include trigger keywords.\",\n  \"body\": \"# my-skill\\n\\n## When to use\\n...\\n## Workflow\\n...\",\n  \"license\": \"MIT\",\n  \"compatibility\": \"Requires Python 3.10+\",\n  \"allowed_tools\": [\"Bash\", \"Write\"],\n  \"metadata\": { \"author\": \"me\", \"category\": \"...\" },\n  \"files\": [\n    { \"path\": \"scripts\u002Ffoo.py\", \"content\": \"...\", \"content_type\": \"text\u002Fx-python\" },\n    { \"path\": \"references\u002Fprimer.md\", \"content\": \"...\", \"content_type\": \"text\u002Fmarkdown\" }\n  ]\n}\n",[524],{"type":43,"tag":58,"props":525,"children":526},{"__ignoreMap":212},[527,535,543,582,619,693,731,769,831,926,952,1062,1168,1177],{"type":43,"tag":291,"props":528,"children":529},{"class":293,"line":294},[530],{"type":43,"tag":291,"props":531,"children":532},{"style":298},[533],{"type":49,"value":534},"posthog:llma-skill-create\n",{"type":43,"tag":291,"props":536,"children":537},{"class":293,"line":304},[538],{"type":43,"tag":291,"props":539,"children":540},{"style":308},[541],{"type":49,"value":542},"{\n",{"type":43,"tag":291,"props":544,"children":546},{"class":293,"line":545},3,[547,552,556,560,564,568,573,577],{"type":43,"tag":291,"props":548,"children":549},{"style":308},[550],{"type":49,"value":551},"  \"",{"type":43,"tag":291,"props":553,"children":554},{"style":319},[555],{"type":49,"value":197},{"type":43,"tag":291,"props":557,"children":558},{"style":308},[559],{"type":49,"value":327},{"type":43,"tag":291,"props":561,"children":562},{"style":308},[563],{"type":49,"value":332},{"type":43,"tag":291,"props":565,"children":566},{"style":308},[567],{"type":49,"value":316},{"type":43,"tag":291,"props":569,"children":570},{"style":339},[571],{"type":49,"value":572},"my-skill",{"type":43,"tag":291,"props":574,"children":575},{"style":308},[576],{"type":49,"value":327},{"type":43,"tag":291,"props":578,"children":579},{"style":308},[580],{"type":49,"value":581},",\n",{"type":43,"tag":291,"props":583,"children":584},{"class":293,"line":30},[585,589,594,598,602,606,611,615],{"type":43,"tag":291,"props":586,"children":587},{"style":308},[588],{"type":49,"value":551},{"type":43,"tag":291,"props":590,"children":591},{"style":319},[592],{"type":49,"value":593},"description",{"type":43,"tag":291,"props":595,"children":596},{"style":308},[597],{"type":49,"value":327},{"type":43,"tag":291,"props":599,"children":600},{"style":308},[601],{"type":49,"value":332},{"type":43,"tag":291,"props":603,"children":604},{"style":308},[605],{"type":49,"value":316},{"type":43,"tag":291,"props":607,"children":608},{"style":339},[609],{"type":49,"value":610},"What it does AND when to use it. Include trigger keywords.",{"type":43,"tag":291,"props":612,"children":613},{"style":308},[614],{"type":49,"value":327},{"type":43,"tag":291,"props":616,"children":617},{"style":308},[618],{"type":49,"value":581},{"type":43,"tag":291,"props":620,"children":622},{"class":293,"line":621},5,[623,627,631,635,639,643,648,653,658,663,668,672,677,681,685,689],{"type":43,"tag":291,"props":624,"children":625},{"style":308},[626],{"type":49,"value":551},{"type":43,"tag":291,"props":628,"children":629},{"style":319},[630],{"type":49,"value":425},{"type":43,"tag":291,"props":632,"children":633},{"style":308},[634],{"type":49,"value":327},{"type":43,"tag":291,"props":636,"children":637},{"style":308},[638],{"type":49,"value":332},{"type":43,"tag":291,"props":640,"children":641},{"style":308},[642],{"type":49,"value":316},{"type":43,"tag":291,"props":644,"children":645},{"style":339},[646],{"type":49,"value":647},"# my-skill",{"type":43,"tag":291,"props":649,"children":650},{"style":298},[651],{"type":49,"value":652},"\\n\\n",{"type":43,"tag":291,"props":654,"children":655},{"style":339},[656],{"type":49,"value":657},"## When to use",{"type":43,"tag":291,"props":659,"children":660},{"style":298},[661],{"type":49,"value":662},"\\n",{"type":43,"tag":291,"props":664,"children":665},{"style":339},[666],{"type":49,"value":667},"...",{"type":43,"tag":291,"props":669,"children":670},{"style":298},[671],{"type":49,"value":662},{"type":43,"tag":291,"props":673,"children":674},{"style":339},[675],{"type":49,"value":676},"## Workflow",{"type":43,"tag":291,"props":678,"children":679},{"style":298},[680],{"type":49,"value":662},{"type":43,"tag":291,"props":682,"children":683},{"style":339},[684],{"type":49,"value":667},{"type":43,"tag":291,"props":686,"children":687},{"style":308},[688],{"type":49,"value":327},{"type":43,"tag":291,"props":690,"children":691},{"style":308},[692],{"type":49,"value":581},{"type":43,"tag":291,"props":694,"children":696},{"class":293,"line":695},6,[697,701,706,710,714,718,723,727],{"type":43,"tag":291,"props":698,"children":699},{"style":308},[700],{"type":49,"value":551},{"type":43,"tag":291,"props":702,"children":703},{"style":319},[704],{"type":49,"value":705},"license",{"type":43,"tag":291,"props":707,"children":708},{"style":308},[709],{"type":49,"value":327},{"type":43,"tag":291,"props":711,"children":712},{"style":308},[713],{"type":49,"value":332},{"type":43,"tag":291,"props":715,"children":716},{"style":308},[717],{"type":49,"value":316},{"type":43,"tag":291,"props":719,"children":720},{"style":339},[721],{"type":49,"value":722},"MIT",{"type":43,"tag":291,"props":724,"children":725},{"style":308},[726],{"type":49,"value":327},{"type":43,"tag":291,"props":728,"children":729},{"style":308},[730],{"type":49,"value":581},{"type":43,"tag":291,"props":732,"children":734},{"class":293,"line":733},7,[735,739,744,748,752,756,761,765],{"type":43,"tag":291,"props":736,"children":737},{"style":308},[738],{"type":49,"value":551},{"type":43,"tag":291,"props":740,"children":741},{"style":319},[742],{"type":49,"value":743},"compatibility",{"type":43,"tag":291,"props":745,"children":746},{"style":308},[747],{"type":49,"value":327},{"type":43,"tag":291,"props":749,"children":750},{"style":308},[751],{"type":49,"value":332},{"type":43,"tag":291,"props":753,"children":754},{"style":308},[755],{"type":49,"value":316},{"type":43,"tag":291,"props":757,"children":758},{"style":339},[759],{"type":49,"value":760},"Requires Python 3.10+",{"type":43,"tag":291,"props":762,"children":763},{"style":308},[764],{"type":49,"value":327},{"type":43,"tag":291,"props":766,"children":767},{"style":308},[768],{"type":49,"value":581},{"type":43,"tag":291,"props":770,"children":772},{"class":293,"line":771},8,[773,777,782,786,790,795,799,804,808,813,817,822,826],{"type":43,"tag":291,"props":774,"children":775},{"style":308},[776],{"type":49,"value":551},{"type":43,"tag":291,"props":778,"children":779},{"style":319},[780],{"type":49,"value":781},"allowed_tools",{"type":43,"tag":291,"props":783,"children":784},{"style":308},[785],{"type":49,"value":327},{"type":43,"tag":291,"props":787,"children":788},{"style":308},[789],{"type":49,"value":332},{"type":43,"tag":291,"props":791,"children":792},{"style":308},[793],{"type":49,"value":794}," [",{"type":43,"tag":291,"props":796,"children":797},{"style":308},[798],{"type":49,"value":327},{"type":43,"tag":291,"props":800,"children":801},{"style":339},[802],{"type":49,"value":803},"Bash",{"type":43,"tag":291,"props":805,"children":806},{"style":308},[807],{"type":49,"value":327},{"type":43,"tag":291,"props":809,"children":810},{"style":308},[811],{"type":49,"value":812},",",{"type":43,"tag":291,"props":814,"children":815},{"style":308},[816],{"type":49,"value":316},{"type":43,"tag":291,"props":818,"children":819},{"style":339},[820],{"type":49,"value":821},"Write",{"type":43,"tag":291,"props":823,"children":824},{"style":308},[825],{"type":49,"value":327},{"type":43,"tag":291,"props":827,"children":828},{"style":308},[829],{"type":49,"value":830},"],\n",{"type":43,"tag":291,"props":832,"children":834},{"class":293,"line":833},9,[835,839,844,848,852,857,861,867,871,875,879,884,888,892,896,901,905,909,913,917,921],{"type":43,"tag":291,"props":836,"children":837},{"style":308},[838],{"type":49,"value":551},{"type":43,"tag":291,"props":840,"children":841},{"style":319},[842],{"type":49,"value":843},"metadata",{"type":43,"tag":291,"props":845,"children":846},{"style":308},[847],{"type":49,"value":327},{"type":43,"tag":291,"props":849,"children":850},{"style":308},[851],{"type":49,"value":332},{"type":43,"tag":291,"props":853,"children":854},{"style":308},[855],{"type":49,"value":856}," {",{"type":43,"tag":291,"props":858,"children":859},{"style":308},[860],{"type":49,"value":316},{"type":43,"tag":291,"props":862,"children":864},{"style":863},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[865],{"type":49,"value":866},"author",{"type":43,"tag":291,"props":868,"children":869},{"style":308},[870],{"type":49,"value":327},{"type":43,"tag":291,"props":872,"children":873},{"style":308},[874],{"type":49,"value":332},{"type":43,"tag":291,"props":876,"children":877},{"style":308},[878],{"type":49,"value":316},{"type":43,"tag":291,"props":880,"children":881},{"style":339},[882],{"type":49,"value":883},"me",{"type":43,"tag":291,"props":885,"children":886},{"style":308},[887],{"type":49,"value":327},{"type":43,"tag":291,"props":889,"children":890},{"style":308},[891],{"type":49,"value":812},{"type":43,"tag":291,"props":893,"children":894},{"style":308},[895],{"type":49,"value":316},{"type":43,"tag":291,"props":897,"children":898},{"style":863},[899],{"type":49,"value":900},"category",{"type":43,"tag":291,"props":902,"children":903},{"style":308},[904],{"type":49,"value":327},{"type":43,"tag":291,"props":906,"children":907},{"style":308},[908],{"type":49,"value":332},{"type":43,"tag":291,"props":910,"children":911},{"style":308},[912],{"type":49,"value":316},{"type":43,"tag":291,"props":914,"children":915},{"style":339},[916],{"type":49,"value":667},{"type":43,"tag":291,"props":918,"children":919},{"style":308},[920],{"type":49,"value":327},{"type":43,"tag":291,"props":922,"children":923},{"style":308},[924],{"type":49,"value":925}," },\n",{"type":43,"tag":291,"props":927,"children":929},{"class":293,"line":928},10,[930,934,939,943,947],{"type":43,"tag":291,"props":931,"children":932},{"style":308},[933],{"type":49,"value":551},{"type":43,"tag":291,"props":935,"children":936},{"style":319},[937],{"type":49,"value":938},"files",{"type":43,"tag":291,"props":940,"children":941},{"style":308},[942],{"type":49,"value":327},{"type":43,"tag":291,"props":944,"children":945},{"style":308},[946],{"type":49,"value":332},{"type":43,"tag":291,"props":948,"children":949},{"style":308},[950],{"type":49,"value":951}," [\n",{"type":43,"tag":291,"props":953,"children":955},{"class":293,"line":954},11,[956,961,965,970,974,978,982,987,991,995,999,1004,1008,1012,1016,1020,1024,1028,1032,1037,1041,1045,1049,1054,1058],{"type":43,"tag":291,"props":957,"children":958},{"style":308},[959],{"type":49,"value":960},"    {",{"type":43,"tag":291,"props":962,"children":963},{"style":308},[964],{"type":49,"value":316},{"type":43,"tag":291,"props":966,"children":967},{"style":863},[968],{"type":49,"value":969},"path",{"type":43,"tag":291,"props":971,"children":972},{"style":308},[973],{"type":49,"value":327},{"type":43,"tag":291,"props":975,"children":976},{"style":308},[977],{"type":49,"value":332},{"type":43,"tag":291,"props":979,"children":980},{"style":308},[981],{"type":49,"value":316},{"type":43,"tag":291,"props":983,"children":984},{"style":339},[985],{"type":49,"value":986},"scripts\u002Ffoo.py",{"type":43,"tag":291,"props":988,"children":989},{"style":308},[990],{"type":49,"value":327},{"type":43,"tag":291,"props":992,"children":993},{"style":308},[994],{"type":49,"value":812},{"type":43,"tag":291,"props":996,"children":997},{"style":308},[998],{"type":49,"value":316},{"type":43,"tag":291,"props":1000,"children":1001},{"style":863},[1002],{"type":49,"value":1003},"content",{"type":43,"tag":291,"props":1005,"children":1006},{"style":308},[1007],{"type":49,"value":327},{"type":43,"tag":291,"props":1009,"children":1010},{"style":308},[1011],{"type":49,"value":332},{"type":43,"tag":291,"props":1013,"children":1014},{"style":308},[1015],{"type":49,"value":316},{"type":43,"tag":291,"props":1017,"children":1018},{"style":339},[1019],{"type":49,"value":667},{"type":43,"tag":291,"props":1021,"children":1022},{"style":308},[1023],{"type":49,"value":327},{"type":43,"tag":291,"props":1025,"children":1026},{"style":308},[1027],{"type":49,"value":812},{"type":43,"tag":291,"props":1029,"children":1030},{"style":308},[1031],{"type":49,"value":316},{"type":43,"tag":291,"props":1033,"children":1034},{"style":863},[1035],{"type":49,"value":1036},"content_type",{"type":43,"tag":291,"props":1038,"children":1039},{"style":308},[1040],{"type":49,"value":327},{"type":43,"tag":291,"props":1042,"children":1043},{"style":308},[1044],{"type":49,"value":332},{"type":43,"tag":291,"props":1046,"children":1047},{"style":308},[1048],{"type":49,"value":316},{"type":43,"tag":291,"props":1050,"children":1051},{"style":339},[1052],{"type":49,"value":1053},"text\u002Fx-python",{"type":43,"tag":291,"props":1055,"children":1056},{"style":308},[1057],{"type":49,"value":327},{"type":43,"tag":291,"props":1059,"children":1060},{"style":308},[1061],{"type":49,"value":925},{"type":43,"tag":291,"props":1063,"children":1065},{"class":293,"line":1064},12,[1066,1070,1074,1078,1082,1086,1090,1095,1099,1103,1107,1111,1115,1119,1123,1127,1131,1135,1139,1143,1147,1151,1155,1160,1164],{"type":43,"tag":291,"props":1067,"children":1068},{"style":308},[1069],{"type":49,"value":960},{"type":43,"tag":291,"props":1071,"children":1072},{"style":308},[1073],{"type":49,"value":316},{"type":43,"tag":291,"props":1075,"children":1076},{"style":863},[1077],{"type":49,"value":969},{"type":43,"tag":291,"props":1079,"children":1080},{"style":308},[1081],{"type":49,"value":327},{"type":43,"tag":291,"props":1083,"children":1084},{"style":308},[1085],{"type":49,"value":332},{"type":43,"tag":291,"props":1087,"children":1088},{"style":308},[1089],{"type":49,"value":316},{"type":43,"tag":291,"props":1091,"children":1092},{"style":339},[1093],{"type":49,"value":1094},"references\u002Fprimer.md",{"type":43,"tag":291,"props":1096,"children":1097},{"style":308},[1098],{"type":49,"value":327},{"type":43,"tag":291,"props":1100,"children":1101},{"style":308},[1102],{"type":49,"value":812},{"type":43,"tag":291,"props":1104,"children":1105},{"style":308},[1106],{"type":49,"value":316},{"type":43,"tag":291,"props":1108,"children":1109},{"style":863},[1110],{"type":49,"value":1003},{"type":43,"tag":291,"props":1112,"children":1113},{"style":308},[1114],{"type":49,"value":327},{"type":43,"tag":291,"props":1116,"children":1117},{"style":308},[1118],{"type":49,"value":332},{"type":43,"tag":291,"props":1120,"children":1121},{"style":308},[1122],{"type":49,"value":316},{"type":43,"tag":291,"props":1124,"children":1125},{"style":339},[1126],{"type":49,"value":667},{"type":43,"tag":291,"props":1128,"children":1129},{"style":308},[1130],{"type":49,"value":327},{"type":43,"tag":291,"props":1132,"children":1133},{"style":308},[1134],{"type":49,"value":812},{"type":43,"tag":291,"props":1136,"children":1137},{"style":308},[1138],{"type":49,"value":316},{"type":43,"tag":291,"props":1140,"children":1141},{"style":863},[1142],{"type":49,"value":1036},{"type":43,"tag":291,"props":1144,"children":1145},{"style":308},[1146],{"type":49,"value":327},{"type":43,"tag":291,"props":1148,"children":1149},{"style":308},[1150],{"type":49,"value":332},{"type":43,"tag":291,"props":1152,"children":1153},{"style":308},[1154],{"type":49,"value":316},{"type":43,"tag":291,"props":1156,"children":1157},{"style":339},[1158],{"type":49,"value":1159},"text\u002Fmarkdown",{"type":43,"tag":291,"props":1161,"children":1162},{"style":308},[1163],{"type":49,"value":327},{"type":43,"tag":291,"props":1165,"children":1166},{"style":308},[1167],{"type":49,"value":351},{"type":43,"tag":291,"props":1169,"children":1171},{"class":293,"line":1170},13,[1172],{"type":43,"tag":291,"props":1173,"children":1174},{"style":308},[1175],{"type":49,"value":1176},"  ]\n",{"type":43,"tag":291,"props":1178,"children":1180},{"class":293,"line":1179},14,[1181],{"type":43,"tag":291,"props":1182,"children":1183},{"style":308},[1184],{"type":49,"value":1185},"}\n",{"type":43,"tag":1187,"props":1188,"children":1190},"h3",{"id":1189},"authoring-rules-of-thumb",[1191],{"type":49,"value":1192},"Authoring rules of thumb",{"type":43,"tag":1194,"props":1195,"children":1196},"ul",{},[1197,1219,1232,1273,1304],{"type":43,"tag":101,"props":1198,"children":1199},{},[1200,1210,1212,1217],{"type":43,"tag":105,"props":1201,"children":1202},{},[1203,1208],{"type":43,"tag":58,"props":1204,"children":1206},{"className":1205},[],[1207],{"type":49,"value":593},{"type":49,"value":1209}," is the discovery surface.",{"type":49,"value":1211}," It is the only thing\n",{"type":43,"tag":58,"props":1213,"children":1215},{"className":1214},[],[1216],{"type":49,"value":360},{"type":49,"value":1218}," returns. Make it trigger-rich (what the user might say) and\nscope-honest (what the skill does and does not do).",{"type":43,"tag":101,"props":1220,"children":1221},{},[1222,1230],{"type":43,"tag":105,"props":1223,"children":1224},{},[1225],{"type":43,"tag":58,"props":1226,"children":1228},{"className":1227},[],[1229],{"type":49,"value":197},{"type":49,"value":1231}," — kebab-case, max 64 chars, no leading\u002Ftrailing\u002Fconsecutive\nhyphens. The spec validator rejects anything else.",{"type":43,"tag":101,"props":1233,"children":1234},{},[1235,1240,1242,1248,1250,1256,1258,1264,1266,1271],{"type":43,"tag":105,"props":1236,"children":1237},{},[1238],{"type":49,"value":1239},"Body ≤ ~500 lines.",{"type":49,"value":1241}," Long preambles, exhaustive SQL, full example payloads,\nand runnable code belong in ",{"type":43,"tag":58,"props":1243,"children":1245},{"className":1244},[],[1246],{"type":49,"value":1247},"references\u002F",{"type":49,"value":1249},", ",{"type":43,"tag":58,"props":1251,"children":1253},{"className":1252},[],[1254],{"type":49,"value":1255},"assets\u002F",{"type":49,"value":1257},", or ",{"type":43,"tag":58,"props":1259,"children":1261},{"className":1260},[],[1262],{"type":49,"value":1263},"scripts\u002F",{"type":49,"value":1265},". The body\nshould ",{"type":43,"tag":75,"props":1267,"children":1268},{},[1269],{"type":49,"value":1270},"route",{"type":49,"value":1272}," to those files, not inline them.",{"type":43,"tag":101,"props":1274,"children":1275},{},[1276,1281,1283,1288,1290,1295,1297,1302],{"type":43,"tag":105,"props":1277,"children":1278},{},[1279],{"type":49,"value":1280},"File layout convention",{"type":49,"value":1282}," — ",{"type":43,"tag":58,"props":1284,"children":1286},{"className":1285},[],[1287],{"type":49,"value":1263},{"type":49,"value":1289}," for executable code, ",{"type":43,"tag":58,"props":1291,"children":1293},{"className":1292},[],[1294],{"type":49,"value":1247},{"type":49,"value":1296},"\nfor prose docs and examples, ",{"type":43,"tag":58,"props":1298,"children":1300},{"className":1299},[],[1301],{"type":49,"value":1255},{"type":49,"value":1303}," for templates \u002F data. Agents can rely\non this for orientation when they only have the manifest.",{"type":43,"tag":101,"props":1305,"children":1306},{},[1307,1315],{"type":43,"tag":105,"props":1308,"children":1309},{},[1310],{"type":43,"tag":58,"props":1311,"children":1313},{"className":1312},[],[1314],{"type":49,"value":781},{"type":49,"value":1316}," lists the MCP \u002F built-in tools the skill expects to be\ncallable. Be honest — under-declaring causes silent failures, over-declaring\nis a security smell.",{"type":43,"tag":90,"props":1318,"children":1320},{"id":1319},"updating-an-existing-skill",[1321],{"type":49,"value":1322},"Updating an existing skill",{"type":43,"tag":52,"props":1324,"children":1325},{},[1326,1328,1334,1336,1341],{"type":49,"value":1327},"The single most common mistake is using ",{"type":43,"tag":58,"props":1329,"children":1331},{"className":1330},[],[1332],{"type":49,"value":1333},"update(body=..., files=[...])",{"type":49,"value":1335}," for a\nsmall change. That works, but it round-trips the entire skill, makes the diff\nunreadable in version history, and risks dropping files if ",{"type":43,"tag":58,"props":1337,"children":1339},{"className":1338},[],[1340],{"type":49,"value":938},{"type":49,"value":1342}," was\nincomplete. Use the smallest primitive instead.",{"type":43,"tag":1187,"props":1344,"children":1346},{"id":1345},"always-read-first-capture-version",[1347,1349],{"type":49,"value":1348},"Always read first, capture ",{"type":43,"tag":58,"props":1350,"children":1352},{"className":1351},[],[1353],{"type":49,"value":153},{"type":43,"tag":207,"props":1355,"children":1357},{"className":283,"code":1356,"language":285,"meta":212,"style":212},"posthog:llma-skill-get\n{ \"skill_name\": \"my-skill\" }\n",[1358],{"type":43,"tag":58,"props":1359,"children":1360},{"__ignoreMap":212},[1361,1369],{"type":43,"tag":291,"props":1362,"children":1363},{"class":293,"line":294},[1364],{"type":43,"tag":291,"props":1365,"children":1366},{"style":298},[1367],{"type":49,"value":1368},"posthog:llma-skill-get\n",{"type":43,"tag":291,"props":1370,"children":1371},{"class":293,"line":304},[1372,1376,1380,1385,1389,1393,1397,1401,1405],{"type":43,"tag":291,"props":1373,"children":1374},{"style":308},[1375],{"type":49,"value":311},{"type":43,"tag":291,"props":1377,"children":1378},{"style":308},[1379],{"type":49,"value":316},{"type":43,"tag":291,"props":1381,"children":1382},{"style":319},[1383],{"type":49,"value":1384},"skill_name",{"type":43,"tag":291,"props":1386,"children":1387},{"style":308},[1388],{"type":49,"value":327},{"type":43,"tag":291,"props":1390,"children":1391},{"style":308},[1392],{"type":49,"value":332},{"type":43,"tag":291,"props":1394,"children":1395},{"style":308},[1396],{"type":49,"value":316},{"type":43,"tag":291,"props":1398,"children":1399},{"style":339},[1400],{"type":49,"value":572},{"type":43,"tag":291,"props":1402,"children":1403},{"style":308},[1404],{"type":49,"value":327},{"type":43,"tag":291,"props":1406,"children":1407},{"style":308},[1408],{"type":49,"value":351},{"type":43,"tag":52,"props":1410,"children":1411},{},[1412,1414,1419,1421,1426,1428,1433],{"type":49,"value":1413},"Note the returned ",{"type":43,"tag":58,"props":1415,"children":1417},{"className":1416},[],[1418],{"type":49,"value":153},{"type":49,"value":1420}," — pass it as ",{"type":43,"tag":58,"props":1422,"children":1424},{"className":1423},[],[1425],{"type":49,"value":169},{"type":49,"value":1427}," on every write. After a\nsuccessful write, the response contains the new ",{"type":43,"tag":58,"props":1429,"children":1431},{"className":1430},[],[1432],{"type":49,"value":153},{"type":49,"value":1434},"; chain further writes\nwith that.",{"type":43,"tag":1187,"props":1436,"children":1438},{"id":1437},"body-full-replacement-vs-incremental-edits",[1439],{"type":49,"value":1440},"Body: full replacement vs incremental edits",{"type":43,"tag":52,"props":1442,"children":1443},{},[1444],{"type":49,"value":1445},"Full replacement when you are restructuring the body:",{"type":43,"tag":207,"props":1447,"children":1449},{"className":283,"code":1448,"language":285,"meta":212,"style":212},"posthog:llma-skill-update\n{ \"skill_name\": \"my-skill\", \"body\": \"# my-skill\\n\\nNew body...\", \"base_version\": 7 }\n",[1450],{"type":43,"tag":58,"props":1451,"children":1452},{"__ignoreMap":212},[1453,1461],{"type":43,"tag":291,"props":1454,"children":1455},{"class":293,"line":294},[1456],{"type":43,"tag":291,"props":1457,"children":1458},{"style":298},[1459],{"type":49,"value":1460},"posthog:llma-skill-update\n",{"type":43,"tag":291,"props":1462,"children":1463},{"class":293,"line":304},[1464,1468,1472,1476,1480,1484,1488,1492,1496,1500,1504,1508,1512,1516,1520,1524,1528,1533,1537,1541,1545,1549,1553,1557,1563],{"type":43,"tag":291,"props":1465,"children":1466},{"style":308},[1467],{"type":49,"value":311},{"type":43,"tag":291,"props":1469,"children":1470},{"style":308},[1471],{"type":49,"value":316},{"type":43,"tag":291,"props":1473,"children":1474},{"style":319},[1475],{"type":49,"value":1384},{"type":43,"tag":291,"props":1477,"children":1478},{"style":308},[1479],{"type":49,"value":327},{"type":43,"tag":291,"props":1481,"children":1482},{"style":308},[1483],{"type":49,"value":332},{"type":43,"tag":291,"props":1485,"children":1486},{"style":308},[1487],{"type":49,"value":316},{"type":43,"tag":291,"props":1489,"children":1490},{"style":339},[1491],{"type":49,"value":572},{"type":43,"tag":291,"props":1493,"children":1494},{"style":308},[1495],{"type":49,"value":327},{"type":43,"tag":291,"props":1497,"children":1498},{"style":308},[1499],{"type":49,"value":812},{"type":43,"tag":291,"props":1501,"children":1502},{"style":308},[1503],{"type":49,"value":316},{"type":43,"tag":291,"props":1505,"children":1506},{"style":319},[1507],{"type":49,"value":425},{"type":43,"tag":291,"props":1509,"children":1510},{"style":308},[1511],{"type":49,"value":327},{"type":43,"tag":291,"props":1513,"children":1514},{"style":308},[1515],{"type":49,"value":332},{"type":43,"tag":291,"props":1517,"children":1518},{"style":308},[1519],{"type":49,"value":316},{"type":43,"tag":291,"props":1521,"children":1522},{"style":339},[1523],{"type":49,"value":647},{"type":43,"tag":291,"props":1525,"children":1526},{"style":298},[1527],{"type":49,"value":652},{"type":43,"tag":291,"props":1529,"children":1530},{"style":339},[1531],{"type":49,"value":1532},"New body...",{"type":43,"tag":291,"props":1534,"children":1535},{"style":308},[1536],{"type":49,"value":327},{"type":43,"tag":291,"props":1538,"children":1539},{"style":308},[1540],{"type":49,"value":812},{"type":43,"tag":291,"props":1542,"children":1543},{"style":308},[1544],{"type":49,"value":316},{"type":43,"tag":291,"props":1546,"children":1547},{"style":319},[1548],{"type":49,"value":169},{"type":43,"tag":291,"props":1550,"children":1551},{"style":308},[1552],{"type":49,"value":327},{"type":43,"tag":291,"props":1554,"children":1555},{"style":308},[1556],{"type":49,"value":332},{"type":43,"tag":291,"props":1558,"children":1560},{"style":1559},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1561],{"type":49,"value":1562}," 7",{"type":43,"tag":291,"props":1564,"children":1565},{"style":308},[1566],{"type":49,"value":351},{"type":43,"tag":52,"props":1568,"children":1569},{},[1570],{"type":49,"value":1571},"Incremental edits when you are tweaking a few lines (preferred for small\nchanges — easier to review, lower error surface):",{"type":43,"tag":207,"props":1573,"children":1575},{"className":283,"code":1574,"language":285,"meta":212,"style":212},"posthog:llma-skill-update\n{\n  \"skill_name\": \"my-skill\",\n  \"edits\": [\n    { \"old\": \"Use Pillow for rendering.\", \"new\": \"Use Pillow ≥10.0 for rendering.\" },\n    { \"old\": \"## Old section title\", \"new\": \"## New section title\" }\n  ],\n  \"base_version\": 7\n}\n",[1576],{"type":43,"tag":58,"props":1577,"children":1578},{"__ignoreMap":212},[1579,1586,1593,1628,1651,1726,1799,1807,1831],{"type":43,"tag":291,"props":1580,"children":1581},{"class":293,"line":294},[1582],{"type":43,"tag":291,"props":1583,"children":1584},{"style":298},[1585],{"type":49,"value":1460},{"type":43,"tag":291,"props":1587,"children":1588},{"class":293,"line":304},[1589],{"type":43,"tag":291,"props":1590,"children":1591},{"style":308},[1592],{"type":49,"value":542},{"type":43,"tag":291,"props":1594,"children":1595},{"class":293,"line":545},[1596,1600,1604,1608,1612,1616,1620,1624],{"type":43,"tag":291,"props":1597,"children":1598},{"style":308},[1599],{"type":49,"value":551},{"type":43,"tag":291,"props":1601,"children":1602},{"style":319},[1603],{"type":49,"value":1384},{"type":43,"tag":291,"props":1605,"children":1606},{"style":308},[1607],{"type":49,"value":327},{"type":43,"tag":291,"props":1609,"children":1610},{"style":308},[1611],{"type":49,"value":332},{"type":43,"tag":291,"props":1613,"children":1614},{"style":308},[1615],{"type":49,"value":316},{"type":43,"tag":291,"props":1617,"children":1618},{"style":339},[1619],{"type":49,"value":572},{"type":43,"tag":291,"props":1621,"children":1622},{"style":308},[1623],{"type":49,"value":327},{"type":43,"tag":291,"props":1625,"children":1626},{"style":308},[1627],{"type":49,"value":581},{"type":43,"tag":291,"props":1629,"children":1630},{"class":293,"line":30},[1631,1635,1639,1643,1647],{"type":43,"tag":291,"props":1632,"children":1633},{"style":308},[1634],{"type":49,"value":551},{"type":43,"tag":291,"props":1636,"children":1637},{"style":319},[1638],{"type":49,"value":127},{"type":43,"tag":291,"props":1640,"children":1641},{"style":308},[1642],{"type":49,"value":327},{"type":43,"tag":291,"props":1644,"children":1645},{"style":308},[1646],{"type":49,"value":332},{"type":43,"tag":291,"props":1648,"children":1649},{"style":308},[1650],{"type":49,"value":951},{"type":43,"tag":291,"props":1652,"children":1653},{"class":293,"line":621},[1654,1658,1662,1667,1671,1675,1679,1684,1688,1692,1696,1701,1705,1709,1713,1718,1722],{"type":43,"tag":291,"props":1655,"children":1656},{"style":308},[1657],{"type":49,"value":960},{"type":43,"tag":291,"props":1659,"children":1660},{"style":308},[1661],{"type":49,"value":316},{"type":43,"tag":291,"props":1663,"children":1664},{"style":863},[1665],{"type":49,"value":1666},"old",{"type":43,"tag":291,"props":1668,"children":1669},{"style":308},[1670],{"type":49,"value":327},{"type":43,"tag":291,"props":1672,"children":1673},{"style":308},[1674],{"type":49,"value":332},{"type":43,"tag":291,"props":1676,"children":1677},{"style":308},[1678],{"type":49,"value":316},{"type":43,"tag":291,"props":1680,"children":1681},{"style":339},[1682],{"type":49,"value":1683},"Use Pillow for rendering.",{"type":43,"tag":291,"props":1685,"children":1686},{"style":308},[1687],{"type":49,"value":327},{"type":43,"tag":291,"props":1689,"children":1690},{"style":308},[1691],{"type":49,"value":812},{"type":43,"tag":291,"props":1693,"children":1694},{"style":308},[1695],{"type":49,"value":316},{"type":43,"tag":291,"props":1697,"children":1698},{"style":863},[1699],{"type":49,"value":1700},"new",{"type":43,"tag":291,"props":1702,"children":1703},{"style":308},[1704],{"type":49,"value":327},{"type":43,"tag":291,"props":1706,"children":1707},{"style":308},[1708],{"type":49,"value":332},{"type":43,"tag":291,"props":1710,"children":1711},{"style":308},[1712],{"type":49,"value":316},{"type":43,"tag":291,"props":1714,"children":1715},{"style":339},[1716],{"type":49,"value":1717},"Use Pillow ≥10.0 for rendering.",{"type":43,"tag":291,"props":1719,"children":1720},{"style":308},[1721],{"type":49,"value":327},{"type":43,"tag":291,"props":1723,"children":1724},{"style":308},[1725],{"type":49,"value":925},{"type":43,"tag":291,"props":1727,"children":1728},{"class":293,"line":695},[1729,1733,1737,1741,1745,1749,1753,1758,1762,1766,1770,1774,1778,1782,1786,1791,1795],{"type":43,"tag":291,"props":1730,"children":1731},{"style":308},[1732],{"type":49,"value":960},{"type":43,"tag":291,"props":1734,"children":1735},{"style":308},[1736],{"type":49,"value":316},{"type":43,"tag":291,"props":1738,"children":1739},{"style":863},[1740],{"type":49,"value":1666},{"type":43,"tag":291,"props":1742,"children":1743},{"style":308},[1744],{"type":49,"value":327},{"type":43,"tag":291,"props":1746,"children":1747},{"style":308},[1748],{"type":49,"value":332},{"type":43,"tag":291,"props":1750,"children":1751},{"style":308},[1752],{"type":49,"value":316},{"type":43,"tag":291,"props":1754,"children":1755},{"style":339},[1756],{"type":49,"value":1757},"## Old section title",{"type":43,"tag":291,"props":1759,"children":1760},{"style":308},[1761],{"type":49,"value":327},{"type":43,"tag":291,"props":1763,"children":1764},{"style":308},[1765],{"type":49,"value":812},{"type":43,"tag":291,"props":1767,"children":1768},{"style":308},[1769],{"type":49,"value":316},{"type":43,"tag":291,"props":1771,"children":1772},{"style":863},[1773],{"type":49,"value":1700},{"type":43,"tag":291,"props":1775,"children":1776},{"style":308},[1777],{"type":49,"value":327},{"type":43,"tag":291,"props":1779,"children":1780},{"style":308},[1781],{"type":49,"value":332},{"type":43,"tag":291,"props":1783,"children":1784},{"style":308},[1785],{"type":49,"value":316},{"type":43,"tag":291,"props":1787,"children":1788},{"style":339},[1789],{"type":49,"value":1790},"## New section title",{"type":43,"tag":291,"props":1792,"children":1793},{"style":308},[1794],{"type":49,"value":327},{"type":43,"tag":291,"props":1796,"children":1797},{"style":308},[1798],{"type":49,"value":351},{"type":43,"tag":291,"props":1800,"children":1801},{"class":293,"line":733},[1802],{"type":43,"tag":291,"props":1803,"children":1804},{"style":308},[1805],{"type":49,"value":1806},"  ],\n",{"type":43,"tag":291,"props":1808,"children":1809},{"class":293,"line":771},[1810,1814,1818,1822,1826],{"type":43,"tag":291,"props":1811,"children":1812},{"style":308},[1813],{"type":49,"value":551},{"type":43,"tag":291,"props":1815,"children":1816},{"style":319},[1817],{"type":49,"value":169},{"type":43,"tag":291,"props":1819,"children":1820},{"style":308},[1821],{"type":49,"value":327},{"type":43,"tag":291,"props":1823,"children":1824},{"style":308},[1825],{"type":49,"value":332},{"type":43,"tag":291,"props":1827,"children":1828},{"style":1559},[1829],{"type":49,"value":1830}," 7\n",{"type":43,"tag":291,"props":1832,"children":1833},{"class":293,"line":833},[1834],{"type":43,"tag":291,"props":1835,"children":1836},{"style":308},[1837],{"type":49,"value":1185},{"type":43,"tag":52,"props":1839,"children":1840},{},[1841,1843,1849,1851,1856,1858,1863],{"type":49,"value":1842},"Each ",{"type":43,"tag":58,"props":1844,"children":1846},{"className":1845},[],[1847],{"type":49,"value":1848},"edits[].old",{"type":49,"value":1850}," must match exactly once in the current body, and ",{"type":43,"tag":58,"props":1852,"children":1854},{"className":1853},[],[1855],{"type":49,"value":425},{"type":49,"value":1857}," and\n",{"type":43,"tag":58,"props":1859,"children":1861},{"className":1860},[],[1862],{"type":49,"value":127},{"type":49,"value":1864}," are mutually exclusive in one call.",{"type":43,"tag":1187,"props":1866,"children":1868},{"id":1867},"bundled-file-content-edits",[1869],{"type":49,"value":1870},"Bundled file content edits",{"type":43,"tag":52,"props":1872,"children":1873},{},[1874,1879],{"type":43,"tag":58,"props":1875,"children":1877},{"className":1876},[],[1878],{"type":49,"value":135},{"type":49,"value":1880}," patches one or more existing files in place — non-targeted files\ncarry forward unchanged. This is the right primitive when you are tweaking\nscript logic or fixing a typo in a reference doc:",{"type":43,"tag":207,"props":1882,"children":1884},{"className":283,"code":1883,"language":285,"meta":212,"style":212},"posthog:llma-skill-update\n{\n  \"skill_name\": \"my-skill\",\n  \"file_edits\": [\n    {\n      \"path\": \"scripts\u002Ffoo.py\",\n      \"edits\": [{ \"old\": \"ITERATIONS = 100\", \"new\": \"ITERATIONS = 250\" }]\n    },\n    {\n      \"path\": \"references\u002Fprimer.md\",\n      \"edits\": [{ \"old\": \"## Outdated header\", \"new\": \"## Updated header\" }]\n    }\n  ],\n  \"base_version\": 7\n}\n",[1885],{"type":43,"tag":58,"props":1886,"children":1887},{"__ignoreMap":212},[1888,1895,1902,1937,1960,1968,2004,2095,2103,2110,2145,2234,2242,2249,2272],{"type":43,"tag":291,"props":1889,"children":1890},{"class":293,"line":294},[1891],{"type":43,"tag":291,"props":1892,"children":1893},{"style":298},[1894],{"type":49,"value":1460},{"type":43,"tag":291,"props":1896,"children":1897},{"class":293,"line":304},[1898],{"type":43,"tag":291,"props":1899,"children":1900},{"style":308},[1901],{"type":49,"value":542},{"type":43,"tag":291,"props":1903,"children":1904},{"class":293,"line":545},[1905,1909,1913,1917,1921,1925,1929,1933],{"type":43,"tag":291,"props":1906,"children":1907},{"style":308},[1908],{"type":49,"value":551},{"type":43,"tag":291,"props":1910,"children":1911},{"style":319},[1912],{"type":49,"value":1384},{"type":43,"tag":291,"props":1914,"children":1915},{"style":308},[1916],{"type":49,"value":327},{"type":43,"tag":291,"props":1918,"children":1919},{"style":308},[1920],{"type":49,"value":332},{"type":43,"tag":291,"props":1922,"children":1923},{"style":308},[1924],{"type":49,"value":316},{"type":43,"tag":291,"props":1926,"children":1927},{"style":339},[1928],{"type":49,"value":572},{"type":43,"tag":291,"props":1930,"children":1931},{"style":308},[1932],{"type":49,"value":327},{"type":43,"tag":291,"props":1934,"children":1935},{"style":308},[1936],{"type":49,"value":581},{"type":43,"tag":291,"props":1938,"children":1939},{"class":293,"line":30},[1940,1944,1948,1952,1956],{"type":43,"tag":291,"props":1941,"children":1942},{"style":308},[1943],{"type":49,"value":551},{"type":43,"tag":291,"props":1945,"children":1946},{"style":319},[1947],{"type":49,"value":135},{"type":43,"tag":291,"props":1949,"children":1950},{"style":308},[1951],{"type":49,"value":327},{"type":43,"tag":291,"props":1953,"children":1954},{"style":308},[1955],{"type":49,"value":332},{"type":43,"tag":291,"props":1957,"children":1958},{"style":308},[1959],{"type":49,"value":951},{"type":43,"tag":291,"props":1961,"children":1962},{"class":293,"line":621},[1963],{"type":43,"tag":291,"props":1964,"children":1965},{"style":308},[1966],{"type":49,"value":1967},"    {\n",{"type":43,"tag":291,"props":1969,"children":1970},{"class":293,"line":695},[1971,1976,1980,1984,1988,1992,1996,2000],{"type":43,"tag":291,"props":1972,"children":1973},{"style":308},[1974],{"type":49,"value":1975},"      \"",{"type":43,"tag":291,"props":1977,"children":1978},{"style":863},[1979],{"type":49,"value":969},{"type":43,"tag":291,"props":1981,"children":1982},{"style":308},[1983],{"type":49,"value":327},{"type":43,"tag":291,"props":1985,"children":1986},{"style":308},[1987],{"type":49,"value":332},{"type":43,"tag":291,"props":1989,"children":1990},{"style":308},[1991],{"type":49,"value":316},{"type":43,"tag":291,"props":1993,"children":1994},{"style":339},[1995],{"type":49,"value":986},{"type":43,"tag":291,"props":1997,"children":1998},{"style":308},[1999],{"type":49,"value":327},{"type":43,"tag":291,"props":2001,"children":2002},{"style":308},[2003],{"type":49,"value":581},{"type":43,"tag":291,"props":2005,"children":2006},{"class":293,"line":733},[2007,2011,2015,2019,2023,2028,2032,2036,2040,2044,2048,2053,2057,2061,2065,2069,2073,2077,2081,2086,2090],{"type":43,"tag":291,"props":2008,"children":2009},{"style":308},[2010],{"type":49,"value":1975},{"type":43,"tag":291,"props":2012,"children":2013},{"style":863},[2014],{"type":49,"value":127},{"type":43,"tag":291,"props":2016,"children":2017},{"style":308},[2018],{"type":49,"value":327},{"type":43,"tag":291,"props":2020,"children":2021},{"style":308},[2022],{"type":49,"value":332},{"type":43,"tag":291,"props":2024,"children":2025},{"style":308},[2026],{"type":49,"value":2027}," [{",{"type":43,"tag":291,"props":2029,"children":2030},{"style":308},[2031],{"type":49,"value":316},{"type":43,"tag":291,"props":2033,"children":2034},{"style":1559},[2035],{"type":49,"value":1666},{"type":43,"tag":291,"props":2037,"children":2038},{"style":308},[2039],{"type":49,"value":327},{"type":43,"tag":291,"props":2041,"children":2042},{"style":308},[2043],{"type":49,"value":332},{"type":43,"tag":291,"props":2045,"children":2046},{"style":308},[2047],{"type":49,"value":316},{"type":43,"tag":291,"props":2049,"children":2050},{"style":339},[2051],{"type":49,"value":2052},"ITERATIONS = 100",{"type":43,"tag":291,"props":2054,"children":2055},{"style":308},[2056],{"type":49,"value":327},{"type":43,"tag":291,"props":2058,"children":2059},{"style":308},[2060],{"type":49,"value":812},{"type":43,"tag":291,"props":2062,"children":2063},{"style":308},[2064],{"type":49,"value":316},{"type":43,"tag":291,"props":2066,"children":2067},{"style":1559},[2068],{"type":49,"value":1700},{"type":43,"tag":291,"props":2070,"children":2071},{"style":308},[2072],{"type":49,"value":327},{"type":43,"tag":291,"props":2074,"children":2075},{"style":308},[2076],{"type":49,"value":332},{"type":43,"tag":291,"props":2078,"children":2079},{"style":308},[2080],{"type":49,"value":316},{"type":43,"tag":291,"props":2082,"children":2083},{"style":339},[2084],{"type":49,"value":2085},"ITERATIONS = 250",{"type":43,"tag":291,"props":2087,"children":2088},{"style":308},[2089],{"type":49,"value":327},{"type":43,"tag":291,"props":2091,"children":2092},{"style":308},[2093],{"type":49,"value":2094}," }]\n",{"type":43,"tag":291,"props":2096,"children":2097},{"class":293,"line":771},[2098],{"type":43,"tag":291,"props":2099,"children":2100},{"style":308},[2101],{"type":49,"value":2102},"    },\n",{"type":43,"tag":291,"props":2104,"children":2105},{"class":293,"line":833},[2106],{"type":43,"tag":291,"props":2107,"children":2108},{"style":308},[2109],{"type":49,"value":1967},{"type":43,"tag":291,"props":2111,"children":2112},{"class":293,"line":928},[2113,2117,2121,2125,2129,2133,2137,2141],{"type":43,"tag":291,"props":2114,"children":2115},{"style":308},[2116],{"type":49,"value":1975},{"type":43,"tag":291,"props":2118,"children":2119},{"style":863},[2120],{"type":49,"value":969},{"type":43,"tag":291,"props":2122,"children":2123},{"style":308},[2124],{"type":49,"value":327},{"type":43,"tag":291,"props":2126,"children":2127},{"style":308},[2128],{"type":49,"value":332},{"type":43,"tag":291,"props":2130,"children":2131},{"style":308},[2132],{"type":49,"value":316},{"type":43,"tag":291,"props":2134,"children":2135},{"style":339},[2136],{"type":49,"value":1094},{"type":43,"tag":291,"props":2138,"children":2139},{"style":308},[2140],{"type":49,"value":327},{"type":43,"tag":291,"props":2142,"children":2143},{"style":308},[2144],{"type":49,"value":581},{"type":43,"tag":291,"props":2146,"children":2147},{"class":293,"line":954},[2148,2152,2156,2160,2164,2168,2172,2176,2180,2184,2188,2193,2197,2201,2205,2209,2213,2217,2221,2226,2230],{"type":43,"tag":291,"props":2149,"children":2150},{"style":308},[2151],{"type":49,"value":1975},{"type":43,"tag":291,"props":2153,"children":2154},{"style":863},[2155],{"type":49,"value":127},{"type":43,"tag":291,"props":2157,"children":2158},{"style":308},[2159],{"type":49,"value":327},{"type":43,"tag":291,"props":2161,"children":2162},{"style":308},[2163],{"type":49,"value":332},{"type":43,"tag":291,"props":2165,"children":2166},{"style":308},[2167],{"type":49,"value":2027},{"type":43,"tag":291,"props":2169,"children":2170},{"style":308},[2171],{"type":49,"value":316},{"type":43,"tag":291,"props":2173,"children":2174},{"style":1559},[2175],{"type":49,"value":1666},{"type":43,"tag":291,"props":2177,"children":2178},{"style":308},[2179],{"type":49,"value":327},{"type":43,"tag":291,"props":2181,"children":2182},{"style":308},[2183],{"type":49,"value":332},{"type":43,"tag":291,"props":2185,"children":2186},{"style":308},[2187],{"type":49,"value":316},{"type":43,"tag":291,"props":2189,"children":2190},{"style":339},[2191],{"type":49,"value":2192},"## Outdated header",{"type":43,"tag":291,"props":2194,"children":2195},{"style":308},[2196],{"type":49,"value":327},{"type":43,"tag":291,"props":2198,"children":2199},{"style":308},[2200],{"type":49,"value":812},{"type":43,"tag":291,"props":2202,"children":2203},{"style":308},[2204],{"type":49,"value":316},{"type":43,"tag":291,"props":2206,"children":2207},{"style":1559},[2208],{"type":49,"value":1700},{"type":43,"tag":291,"props":2210,"children":2211},{"style":308},[2212],{"type":49,"value":327},{"type":43,"tag":291,"props":2214,"children":2215},{"style":308},[2216],{"type":49,"value":332},{"type":43,"tag":291,"props":2218,"children":2219},{"style":308},[2220],{"type":49,"value":316},{"type":43,"tag":291,"props":2222,"children":2223},{"style":339},[2224],{"type":49,"value":2225},"## Updated header",{"type":43,"tag":291,"props":2227,"children":2228},{"style":308},[2229],{"type":49,"value":327},{"type":43,"tag":291,"props":2231,"children":2232},{"style":308},[2233],{"type":49,"value":2094},{"type":43,"tag":291,"props":2235,"children":2236},{"class":293,"line":1064},[2237],{"type":43,"tag":291,"props":2238,"children":2239},{"style":308},[2240],{"type":49,"value":2241},"    }\n",{"type":43,"tag":291,"props":2243,"children":2244},{"class":293,"line":1170},[2245],{"type":43,"tag":291,"props":2246,"children":2247},{"style":308},[2248],{"type":49,"value":1806},{"type":43,"tag":291,"props":2250,"children":2251},{"class":293,"line":1179},[2252,2256,2260,2264,2268],{"type":43,"tag":291,"props":2253,"children":2254},{"style":308},[2255],{"type":49,"value":551},{"type":43,"tag":291,"props":2257,"children":2258},{"style":319},[2259],{"type":49,"value":169},{"type":43,"tag":291,"props":2261,"children":2262},{"style":308},[2263],{"type":49,"value":327},{"type":43,"tag":291,"props":2265,"children":2266},{"style":308},[2267],{"type":49,"value":332},{"type":43,"tag":291,"props":2269,"children":2270},{"style":1559},[2271],{"type":49,"value":1830},{"type":43,"tag":291,"props":2273,"children":2275},{"class":293,"line":2274},15,[2276],{"type":43,"tag":291,"props":2277,"children":2278},{"style":308},[2279],{"type":49,"value":1185},{"type":43,"tag":52,"props":2281,"children":2282},{},[2283,2288,2290,2295,2296,2301,2302,2307],{"type":43,"tag":58,"props":2284,"children":2286},{"className":2285},[],[2287],{"type":49,"value":135},{"type":49,"value":2289}," cannot ",{"type":43,"tag":105,"props":2291,"children":2292},{},[2293],{"type":49,"value":2294},"add",{"type":49,"value":1249},{"type":43,"tag":105,"props":2297,"children":2298},{},[2299],{"type":49,"value":2300},"remove",{"type":49,"value":1257},{"type":43,"tag":105,"props":2303,"children":2304},{},[2305],{"type":49,"value":2306},"rename",{"type":49,"value":2308}," files — only patch\nexisting ones. For structural changes, use the per-file tools.",{"type":43,"tag":1187,"props":2310,"children":2312},{"id":2311},"combining-edits-in-a-single-call",[2313],{"type":49,"value":2314},"Combining edits in a single call",{"type":43,"tag":52,"props":2316,"children":2317},{},[2318,2320,2325,2327,2332,2334,2340],{"type":49,"value":2319},"You can combine ",{"type":43,"tag":58,"props":2321,"children":2323},{"className":2322},[],[2324],{"type":49,"value":127},{"type":49,"value":2326}," (body) and ",{"type":43,"tag":58,"props":2328,"children":2330},{"className":2329},[],[2331],{"type":49,"value":135},{"type":49,"value":2333}," (existing files) in one\n",{"type":43,"tag":58,"props":2335,"children":2337},{"className":2336},[],[2338],{"type":49,"value":2339},"llma-skill-update",{"type":49,"value":2341}," call to publish a single coherent version when a change\nspans both:",{"type":43,"tag":207,"props":2343,"children":2345},{"className":283,"code":2344,"language":285,"meta":212,"style":212},"posthog:llma-skill-update\n{\n  \"skill_name\": \"my-skill\",\n  \"edits\": [{ \"old\": \"## Configuration\", \"new\": \"## Setup\" }],\n  \"file_edits\": [\n    { \"path\": \"scripts\u002Frun.py\", \"edits\": [{ \"old\": \"DEBUG = False\", \"new\": \"DEBUG = True\" }] }\n  ],\n  \"base_version\": 7\n}\n",[2346],{"type":43,"tag":58,"props":2347,"children":2348},{"__ignoreMap":212},[2349,2356,2363,2398,2488,2511,2642,2649,2672],{"type":43,"tag":291,"props":2350,"children":2351},{"class":293,"line":294},[2352],{"type":43,"tag":291,"props":2353,"children":2354},{"style":298},[2355],{"type":49,"value":1460},{"type":43,"tag":291,"props":2357,"children":2358},{"class":293,"line":304},[2359],{"type":43,"tag":291,"props":2360,"children":2361},{"style":308},[2362],{"type":49,"value":542},{"type":43,"tag":291,"props":2364,"children":2365},{"class":293,"line":545},[2366,2370,2374,2378,2382,2386,2390,2394],{"type":43,"tag":291,"props":2367,"children":2368},{"style":308},[2369],{"type":49,"value":551},{"type":43,"tag":291,"props":2371,"children":2372},{"style":319},[2373],{"type":49,"value":1384},{"type":43,"tag":291,"props":2375,"children":2376},{"style":308},[2377],{"type":49,"value":327},{"type":43,"tag":291,"props":2379,"children":2380},{"style":308},[2381],{"type":49,"value":332},{"type":43,"tag":291,"props":2383,"children":2384},{"style":308},[2385],{"type":49,"value":316},{"type":43,"tag":291,"props":2387,"children":2388},{"style":339},[2389],{"type":49,"value":572},{"type":43,"tag":291,"props":2391,"children":2392},{"style":308},[2393],{"type":49,"value":327},{"type":43,"tag":291,"props":2395,"children":2396},{"style":308},[2397],{"type":49,"value":581},{"type":43,"tag":291,"props":2399,"children":2400},{"class":293,"line":30},[2401,2405,2409,2413,2417,2421,2425,2429,2433,2437,2441,2446,2450,2454,2458,2462,2466,2470,2474,2479,2483],{"type":43,"tag":291,"props":2402,"children":2403},{"style":308},[2404],{"type":49,"value":551},{"type":43,"tag":291,"props":2406,"children":2407},{"style":319},[2408],{"type":49,"value":127},{"type":43,"tag":291,"props":2410,"children":2411},{"style":308},[2412],{"type":49,"value":327},{"type":43,"tag":291,"props":2414,"children":2415},{"style":308},[2416],{"type":49,"value":332},{"type":43,"tag":291,"props":2418,"children":2419},{"style":308},[2420],{"type":49,"value":2027},{"type":43,"tag":291,"props":2422,"children":2423},{"style":308},[2424],{"type":49,"value":316},{"type":43,"tag":291,"props":2426,"children":2427},{"style":863},[2428],{"type":49,"value":1666},{"type":43,"tag":291,"props":2430,"children":2431},{"style":308},[2432],{"type":49,"value":327},{"type":43,"tag":291,"props":2434,"children":2435},{"style":308},[2436],{"type":49,"value":332},{"type":43,"tag":291,"props":2438,"children":2439},{"style":308},[2440],{"type":49,"value":316},{"type":43,"tag":291,"props":2442,"children":2443},{"style":339},[2444],{"type":49,"value":2445},"## Configuration",{"type":43,"tag":291,"props":2447,"children":2448},{"style":308},[2449],{"type":49,"value":327},{"type":43,"tag":291,"props":2451,"children":2452},{"style":308},[2453],{"type":49,"value":812},{"type":43,"tag":291,"props":2455,"children":2456},{"style":308},[2457],{"type":49,"value":316},{"type":43,"tag":291,"props":2459,"children":2460},{"style":863},[2461],{"type":49,"value":1700},{"type":43,"tag":291,"props":2463,"children":2464},{"style":308},[2465],{"type":49,"value":327},{"type":43,"tag":291,"props":2467,"children":2468},{"style":308},[2469],{"type":49,"value":332},{"type":43,"tag":291,"props":2471,"children":2472},{"style":308},[2473],{"type":49,"value":316},{"type":43,"tag":291,"props":2475,"children":2476},{"style":339},[2477],{"type":49,"value":2478},"## Setup",{"type":43,"tag":291,"props":2480,"children":2481},{"style":308},[2482],{"type":49,"value":327},{"type":43,"tag":291,"props":2484,"children":2485},{"style":308},[2486],{"type":49,"value":2487}," }],\n",{"type":43,"tag":291,"props":2489,"children":2490},{"class":293,"line":621},[2491,2495,2499,2503,2507],{"type":43,"tag":291,"props":2492,"children":2493},{"style":308},[2494],{"type":49,"value":551},{"type":43,"tag":291,"props":2496,"children":2497},{"style":319},[2498],{"type":49,"value":135},{"type":43,"tag":291,"props":2500,"children":2501},{"style":308},[2502],{"type":49,"value":327},{"type":43,"tag":291,"props":2504,"children":2505},{"style":308},[2506],{"type":49,"value":332},{"type":43,"tag":291,"props":2508,"children":2509},{"style":308},[2510],{"type":49,"value":951},{"type":43,"tag":291,"props":2512,"children":2513},{"class":293,"line":695},[2514,2518,2522,2526,2530,2534,2538,2543,2547,2551,2555,2559,2563,2567,2571,2575,2579,2583,2587,2591,2596,2600,2604,2608,2612,2616,2620,2624,2629,2633,2638],{"type":43,"tag":291,"props":2515,"children":2516},{"style":308},[2517],{"type":49,"value":960},{"type":43,"tag":291,"props":2519,"children":2520},{"style":308},[2521],{"type":49,"value":316},{"type":43,"tag":291,"props":2523,"children":2524},{"style":863},[2525],{"type":49,"value":969},{"type":43,"tag":291,"props":2527,"children":2528},{"style":308},[2529],{"type":49,"value":327},{"type":43,"tag":291,"props":2531,"children":2532},{"style":308},[2533],{"type":49,"value":332},{"type":43,"tag":291,"props":2535,"children":2536},{"style":308},[2537],{"type":49,"value":316},{"type":43,"tag":291,"props":2539,"children":2540},{"style":339},[2541],{"type":49,"value":2542},"scripts\u002Frun.py",{"type":43,"tag":291,"props":2544,"children":2545},{"style":308},[2546],{"type":49,"value":327},{"type":43,"tag":291,"props":2548,"children":2549},{"style":308},[2550],{"type":49,"value":812},{"type":43,"tag":291,"props":2552,"children":2553},{"style":308},[2554],{"type":49,"value":316},{"type":43,"tag":291,"props":2556,"children":2557},{"style":863},[2558],{"type":49,"value":127},{"type":43,"tag":291,"props":2560,"children":2561},{"style":308},[2562],{"type":49,"value":327},{"type":43,"tag":291,"props":2564,"children":2565},{"style":308},[2566],{"type":49,"value":332},{"type":43,"tag":291,"props":2568,"children":2569},{"style":308},[2570],{"type":49,"value":2027},{"type":43,"tag":291,"props":2572,"children":2573},{"style":308},[2574],{"type":49,"value":316},{"type":43,"tag":291,"props":2576,"children":2577},{"style":1559},[2578],{"type":49,"value":1666},{"type":43,"tag":291,"props":2580,"children":2581},{"style":308},[2582],{"type":49,"value":327},{"type":43,"tag":291,"props":2584,"children":2585},{"style":308},[2586],{"type":49,"value":332},{"type":43,"tag":291,"props":2588,"children":2589},{"style":308},[2590],{"type":49,"value":316},{"type":43,"tag":291,"props":2592,"children":2593},{"style":339},[2594],{"type":49,"value":2595},"DEBUG = False",{"type":43,"tag":291,"props":2597,"children":2598},{"style":308},[2599],{"type":49,"value":327},{"type":43,"tag":291,"props":2601,"children":2602},{"style":308},[2603],{"type":49,"value":812},{"type":43,"tag":291,"props":2605,"children":2606},{"style":308},[2607],{"type":49,"value":316},{"type":43,"tag":291,"props":2609,"children":2610},{"style":1559},[2611],{"type":49,"value":1700},{"type":43,"tag":291,"props":2613,"children":2614},{"style":308},[2615],{"type":49,"value":327},{"type":43,"tag":291,"props":2617,"children":2618},{"style":308},[2619],{"type":49,"value":332},{"type":43,"tag":291,"props":2621,"children":2622},{"style":308},[2623],{"type":49,"value":316},{"type":43,"tag":291,"props":2625,"children":2626},{"style":339},[2627],{"type":49,"value":2628},"DEBUG = True",{"type":43,"tag":291,"props":2630,"children":2631},{"style":308},[2632],{"type":49,"value":327},{"type":43,"tag":291,"props":2634,"children":2635},{"style":308},[2636],{"type":49,"value":2637}," }]",{"type":43,"tag":291,"props":2639,"children":2640},{"style":308},[2641],{"type":49,"value":351},{"type":43,"tag":291,"props":2643,"children":2644},{"class":293,"line":733},[2645],{"type":43,"tag":291,"props":2646,"children":2647},{"style":308},[2648],{"type":49,"value":1806},{"type":43,"tag":291,"props":2650,"children":2651},{"class":293,"line":771},[2652,2656,2660,2664,2668],{"type":43,"tag":291,"props":2653,"children":2654},{"style":308},[2655],{"type":49,"value":551},{"type":43,"tag":291,"props":2657,"children":2658},{"style":319},[2659],{"type":49,"value":169},{"type":43,"tag":291,"props":2661,"children":2662},{"style":308},[2663],{"type":49,"value":327},{"type":43,"tag":291,"props":2665,"children":2666},{"style":308},[2667],{"type":49,"value":332},{"type":43,"tag":291,"props":2669,"children":2670},{"style":1559},[2671],{"type":49,"value":1830},{"type":43,"tag":291,"props":2673,"children":2674},{"class":293,"line":833},[2675],{"type":43,"tag":291,"props":2676,"children":2677},{"style":308},[2678],{"type":49,"value":1185},{"type":43,"tag":1187,"props":2680,"children":2682},{"id":2681},"file-path-parameter-naming-read-this-before-guessing",[2683],{"type":49,"value":2684},"File-path parameter naming (read this before guessing)",{"type":43,"tag":52,"props":2686,"children":2687},{},[2688,2690,2695],{"type":49,"value":2689},"The same concept — a bundled file's path — is named differently depending on\n",{"type":43,"tag":105,"props":2691,"children":2692},{},[2693],{"type":49,"value":2694},"where it travels in the request",{"type":49,"value":2696},", and this trips up agents working from\nmemory. There is one rule:",{"type":43,"tag":1194,"props":2698,"children":2699},{},[2700,2736,2778],{"type":43,"tag":101,"props":2701,"children":2702},{},[2703,2712,2714,2719,2721,2727,2728,2734],{"type":43,"tag":105,"props":2704,"children":2705},{},[2706],{"type":43,"tag":58,"props":2707,"children":2709},{"className":2708},[],[2710],{"type":49,"value":2711},"file_path",{"type":49,"value":2713}," — when the path is part of the ",{"type":43,"tag":105,"props":2715,"children":2716},{},[2717],{"type":49,"value":2718},"URL",{"type":49,"value":2720}," (",{"type":43,"tag":58,"props":2722,"children":2724},{"className":2723},[],[2725],{"type":49,"value":2726},"llma-skill-file-get",{"type":49,"value":581},{"type":43,"tag":58,"props":2729,"children":2731},{"className":2730},[],[2732],{"type":49,"value":2733},"llma-skill-file-delete",{"type":49,"value":2735},"). These read\u002Fdelete one file addressed by its path.",{"type":43,"tag":101,"props":2737,"children":2738},{},[2739,2747,2749,2754,2756,2761,2763,2769,2771,2777],{"type":43,"tag":105,"props":2740,"children":2741},{},[2742],{"type":43,"tag":58,"props":2743,"children":2745},{"className":2744},[],[2746],{"type":49,"value":969},{"type":49,"value":2748}," — when the path is a ",{"type":43,"tag":105,"props":2750,"children":2751},{},[2752],{"type":49,"value":2753},"body field",{"type":49,"value":2755},": ",{"type":43,"tag":58,"props":2757,"children":2759},{"className":2758},[],[2760],{"type":49,"value":517},{"type":49,"value":2762},", the\n",{"type":43,"tag":58,"props":2764,"children":2766},{"className":2765},[],[2767],{"type":49,"value":2768},"files=[{path, content, content_type}]",{"type":49,"value":2770}," array, and ",{"type":43,"tag":58,"props":2772,"children":2774},{"className":2773},[],[2775],{"type":49,"value":2776},"file_edits=[{path, edits}]",{"type":49,"value":171},{"type":43,"tag":101,"props":2779,"children":2780},{},[2781,2798,2800,2806],{"type":43,"tag":105,"props":2782,"children":2783},{},[2784,2790,2792],{"type":43,"tag":58,"props":2785,"children":2787},{"className":2786},[],[2788],{"type":49,"value":2789},"old_path",{"type":49,"value":2791}," \u002F ",{"type":43,"tag":58,"props":2793,"children":2795},{"className":2794},[],[2796],{"type":49,"value":2797},"new_path",{"type":49,"value":2799}," — body fields on ",{"type":43,"tag":58,"props":2801,"children":2803},{"className":2802},[],[2804],{"type":49,"value":2805},"llma-skill-file-rename",{"type":49,"value":171},{"type":43,"tag":52,"props":2808,"children":2809},{},[2810,2812,2817,2819,2824,2826,2831,2833,2838,2840,2845,2847,2852,2854,2860],{"type":49,"value":2811},"Mnemonic: ",{"type":43,"tag":58,"props":2813,"children":2815},{"className":2814},[],[2816],{"type":49,"value":969},{"type":49,"value":2818}," is the field name on a file ",{"type":43,"tag":75,"props":2820,"children":2821},{},[2822],{"type":49,"value":2823},"object",{"type":49,"value":2825}," (it sits next to\n",{"type":43,"tag":58,"props":2827,"children":2829},{"className":2828},[],[2830],{"type":49,"value":1003},{"type":49,"value":2832},"), so everything that carries a file object uses ",{"type":43,"tag":58,"props":2834,"children":2836},{"className":2835},[],[2837],{"type":49,"value":969},{"type":49,"value":2839},"; the two\ntools that address a file by URL use ",{"type":43,"tag":58,"props":2841,"children":2843},{"className":2842},[],[2844],{"type":49,"value":2711},{"type":49,"value":2846},". When unsure, check the\ntool's input schema rather than guessing — passing ",{"type":43,"tag":58,"props":2848,"children":2850},{"className":2849},[],[2851],{"type":49,"value":969},{"type":49,"value":2853}," to file-get yields a\n",{"type":43,"tag":58,"props":2855,"children":2857},{"className":2856},[],[2858],{"type":49,"value":2859},"\u002Ffiles\u002Fundefined\u002F",{"type":49,"value":2861}," 404.",{"type":43,"tag":1187,"props":2863,"children":2865},{"id":2864},"adding-removing-renaming-files",[2866],{"type":49,"value":2867},"Adding, removing, renaming files",{"type":43,"tag":52,"props":2869,"children":2870},{},[2871],{"type":49,"value":2872},"Each is its own call, each publishes a new version:",{"type":43,"tag":207,"props":2874,"children":2876},{"className":283,"code":2875,"language":285,"meta":212,"style":212},"posthog:llma-skill-file-create\n{ \"skill_name\": \"my-skill\", \"path\": \"scripts\u002Fjulia.py\", \"content\": \"...\", \"base_version\": 7 }\n",[2877],{"type":43,"tag":58,"props":2878,"children":2879},{"__ignoreMap":212},[2880,2888],{"type":43,"tag":291,"props":2881,"children":2882},{"class":293,"line":294},[2883],{"type":43,"tag":291,"props":2884,"children":2885},{"style":298},[2886],{"type":49,"value":2887},"posthog:llma-skill-file-create\n",{"type":43,"tag":291,"props":2889,"children":2890},{"class":293,"line":304},[2891,2895,2899,2903,2907,2911,2915,2919,2923,2927,2931,2935,2939,2943,2947,2952,2956,2960,2964,2968,2972,2976,2980,2984,2988,2992,2996,3000,3004,3008,3012],{"type":43,"tag":291,"props":2892,"children":2893},{"style":308},[2894],{"type":49,"value":311},{"type":43,"tag":291,"props":2896,"children":2897},{"style":308},[2898],{"type":49,"value":316},{"type":43,"tag":291,"props":2900,"children":2901},{"style":319},[2902],{"type":49,"value":1384},{"type":43,"tag":291,"props":2904,"children":2905},{"style":308},[2906],{"type":49,"value":327},{"type":43,"tag":291,"props":2908,"children":2909},{"style":308},[2910],{"type":49,"value":332},{"type":43,"tag":291,"props":2912,"children":2913},{"style":308},[2914],{"type":49,"value":316},{"type":43,"tag":291,"props":2916,"children":2917},{"style":339},[2918],{"type":49,"value":572},{"type":43,"tag":291,"props":2920,"children":2921},{"style":308},[2922],{"type":49,"value":327},{"type":43,"tag":291,"props":2924,"children":2925},{"style":308},[2926],{"type":49,"value":812},{"type":43,"tag":291,"props":2928,"children":2929},{"style":308},[2930],{"type":49,"value":316},{"type":43,"tag":291,"props":2932,"children":2933},{"style":319},[2934],{"type":49,"value":969},{"type":43,"tag":291,"props":2936,"children":2937},{"style":308},[2938],{"type":49,"value":327},{"type":43,"tag":291,"props":2940,"children":2941},{"style":308},[2942],{"type":49,"value":332},{"type":43,"tag":291,"props":2944,"children":2945},{"style":308},[2946],{"type":49,"value":316},{"type":43,"tag":291,"props":2948,"children":2949},{"style":339},[2950],{"type":49,"value":2951},"scripts\u002Fjulia.py",{"type":43,"tag":291,"props":2953,"children":2954},{"style":308},[2955],{"type":49,"value":327},{"type":43,"tag":291,"props":2957,"children":2958},{"style":308},[2959],{"type":49,"value":812},{"type":43,"tag":291,"props":2961,"children":2962},{"style":308},[2963],{"type":49,"value":316},{"type":43,"tag":291,"props":2965,"children":2966},{"style":319},[2967],{"type":49,"value":1003},{"type":43,"tag":291,"props":2969,"children":2970},{"style":308},[2971],{"type":49,"value":327},{"type":43,"tag":291,"props":2973,"children":2974},{"style":308},[2975],{"type":49,"value":332},{"type":43,"tag":291,"props":2977,"children":2978},{"style":308},[2979],{"type":49,"value":316},{"type":43,"tag":291,"props":2981,"children":2982},{"style":339},[2983],{"type":49,"value":667},{"type":43,"tag":291,"props":2985,"children":2986},{"style":308},[2987],{"type":49,"value":327},{"type":43,"tag":291,"props":2989,"children":2990},{"style":308},[2991],{"type":49,"value":812},{"type":43,"tag":291,"props":2993,"children":2994},{"style":308},[2995],{"type":49,"value":316},{"type":43,"tag":291,"props":2997,"children":2998},{"style":319},[2999],{"type":49,"value":169},{"type":43,"tag":291,"props":3001,"children":3002},{"style":308},[3003],{"type":49,"value":327},{"type":43,"tag":291,"props":3005,"children":3006},{"style":308},[3007],{"type":49,"value":332},{"type":43,"tag":291,"props":3009,"children":3010},{"style":1559},[3011],{"type":49,"value":1562},{"type":43,"tag":291,"props":3013,"children":3014},{"style":308},[3015],{"type":49,"value":351},{"type":43,"tag":207,"props":3017,"children":3019},{"className":283,"code":3018,"language":285,"meta":212,"style":212},"posthog:llma-skill-file-delete\n{ \"skill_name\": \"my-skill\", \"file_path\": \"scripts\u002Fold.py\", \"base_version\": 8 }\n",[3020],{"type":43,"tag":58,"props":3021,"children":3022},{"__ignoreMap":212},[3023,3031],{"type":43,"tag":291,"props":3024,"children":3025},{"class":293,"line":294},[3026],{"type":43,"tag":291,"props":3027,"children":3028},{"style":298},[3029],{"type":49,"value":3030},"posthog:llma-skill-file-delete\n",{"type":43,"tag":291,"props":3032,"children":3033},{"class":293,"line":304},[3034,3038,3042,3046,3050,3054,3058,3062,3066,3070,3074,3078,3082,3086,3090,3095,3099,3103,3107,3111,3115,3119,3124],{"type":43,"tag":291,"props":3035,"children":3036},{"style":308},[3037],{"type":49,"value":311},{"type":43,"tag":291,"props":3039,"children":3040},{"style":308},[3041],{"type":49,"value":316},{"type":43,"tag":291,"props":3043,"children":3044},{"style":319},[3045],{"type":49,"value":1384},{"type":43,"tag":291,"props":3047,"children":3048},{"style":308},[3049],{"type":49,"value":327},{"type":43,"tag":291,"props":3051,"children":3052},{"style":308},[3053],{"type":49,"value":332},{"type":43,"tag":291,"props":3055,"children":3056},{"style":308},[3057],{"type":49,"value":316},{"type":43,"tag":291,"props":3059,"children":3060},{"style":339},[3061],{"type":49,"value":572},{"type":43,"tag":291,"props":3063,"children":3064},{"style":308},[3065],{"type":49,"value":327},{"type":43,"tag":291,"props":3067,"children":3068},{"style":308},[3069],{"type":49,"value":812},{"type":43,"tag":291,"props":3071,"children":3072},{"style":308},[3073],{"type":49,"value":316},{"type":43,"tag":291,"props":3075,"children":3076},{"style":319},[3077],{"type":49,"value":2711},{"type":43,"tag":291,"props":3079,"children":3080},{"style":308},[3081],{"type":49,"value":327},{"type":43,"tag":291,"props":3083,"children":3084},{"style":308},[3085],{"type":49,"value":332},{"type":43,"tag":291,"props":3087,"children":3088},{"style":308},[3089],{"type":49,"value":316},{"type":43,"tag":291,"props":3091,"children":3092},{"style":339},[3093],{"type":49,"value":3094},"scripts\u002Fold.py",{"type":43,"tag":291,"props":3096,"children":3097},{"style":308},[3098],{"type":49,"value":327},{"type":43,"tag":291,"props":3100,"children":3101},{"style":308},[3102],{"type":49,"value":812},{"type":43,"tag":291,"props":3104,"children":3105},{"style":308},[3106],{"type":49,"value":316},{"type":43,"tag":291,"props":3108,"children":3109},{"style":319},[3110],{"type":49,"value":169},{"type":43,"tag":291,"props":3112,"children":3113},{"style":308},[3114],{"type":49,"value":327},{"type":43,"tag":291,"props":3116,"children":3117},{"style":308},[3118],{"type":49,"value":332},{"type":43,"tag":291,"props":3120,"children":3121},{"style":1559},[3122],{"type":49,"value":3123}," 8",{"type":43,"tag":291,"props":3125,"children":3126},{"style":308},[3127],{"type":49,"value":351},{"type":43,"tag":207,"props":3129,"children":3131},{"className":283,"code":3130,"language":285,"meta":212,"style":212},"posthog:llma-skill-file-rename\n{ \"skill_name\": \"my-skill\", \"old_path\": \"scripts\u002Fjulia.py\", \"new_path\": \"scripts\u002Fjulia_set.py\", \"base_version\": 9 }\n",[3132],{"type":43,"tag":58,"props":3133,"children":3134},{"__ignoreMap":212},[3135,3143],{"type":43,"tag":291,"props":3136,"children":3137},{"class":293,"line":294},[3138],{"type":43,"tag":291,"props":3139,"children":3140},{"style":298},[3141],{"type":49,"value":3142},"posthog:llma-skill-file-rename\n",{"type":43,"tag":291,"props":3144,"children":3145},{"class":293,"line":304},[3146,3150,3154,3158,3162,3166,3170,3174,3178,3182,3186,3190,3194,3198,3202,3206,3210,3214,3218,3222,3226,3230,3234,3239,3243,3247,3251,3255,3259,3263,3268],{"type":43,"tag":291,"props":3147,"children":3148},{"style":308},[3149],{"type":49,"value":311},{"type":43,"tag":291,"props":3151,"children":3152},{"style":308},[3153],{"type":49,"value":316},{"type":43,"tag":291,"props":3155,"children":3156},{"style":319},[3157],{"type":49,"value":1384},{"type":43,"tag":291,"props":3159,"children":3160},{"style":308},[3161],{"type":49,"value":327},{"type":43,"tag":291,"props":3163,"children":3164},{"style":308},[3165],{"type":49,"value":332},{"type":43,"tag":291,"props":3167,"children":3168},{"style":308},[3169],{"type":49,"value":316},{"type":43,"tag":291,"props":3171,"children":3172},{"style":339},[3173],{"type":49,"value":572},{"type":43,"tag":291,"props":3175,"children":3176},{"style":308},[3177],{"type":49,"value":327},{"type":43,"tag":291,"props":3179,"children":3180},{"style":308},[3181],{"type":49,"value":812},{"type":43,"tag":291,"props":3183,"children":3184},{"style":308},[3185],{"type":49,"value":316},{"type":43,"tag":291,"props":3187,"children":3188},{"style":319},[3189],{"type":49,"value":2789},{"type":43,"tag":291,"props":3191,"children":3192},{"style":308},[3193],{"type":49,"value":327},{"type":43,"tag":291,"props":3195,"children":3196},{"style":308},[3197],{"type":49,"value":332},{"type":43,"tag":291,"props":3199,"children":3200},{"style":308},[3201],{"type":49,"value":316},{"type":43,"tag":291,"props":3203,"children":3204},{"style":339},[3205],{"type":49,"value":2951},{"type":43,"tag":291,"props":3207,"children":3208},{"style":308},[3209],{"type":49,"value":327},{"type":43,"tag":291,"props":3211,"children":3212},{"style":308},[3213],{"type":49,"value":812},{"type":43,"tag":291,"props":3215,"children":3216},{"style":308},[3217],{"type":49,"value":316},{"type":43,"tag":291,"props":3219,"children":3220},{"style":319},[3221],{"type":49,"value":2797},{"type":43,"tag":291,"props":3223,"children":3224},{"style":308},[3225],{"type":49,"value":327},{"type":43,"tag":291,"props":3227,"children":3228},{"style":308},[3229],{"type":49,"value":332},{"type":43,"tag":291,"props":3231,"children":3232},{"style":308},[3233],{"type":49,"value":316},{"type":43,"tag":291,"props":3235,"children":3236},{"style":339},[3237],{"type":49,"value":3238},"scripts\u002Fjulia_set.py",{"type":43,"tag":291,"props":3240,"children":3241},{"style":308},[3242],{"type":49,"value":327},{"type":43,"tag":291,"props":3244,"children":3245},{"style":308},[3246],{"type":49,"value":812},{"type":43,"tag":291,"props":3248,"children":3249},{"style":308},[3250],{"type":49,"value":316},{"type":43,"tag":291,"props":3252,"children":3253},{"style":319},[3254],{"type":49,"value":169},{"type":43,"tag":291,"props":3256,"children":3257},{"style":308},[3258],{"type":49,"value":327},{"type":43,"tag":291,"props":3260,"children":3261},{"style":308},[3262],{"type":49,"value":332},{"type":43,"tag":291,"props":3264,"children":3265},{"style":1559},[3266],{"type":49,"value":3267}," 9",{"type":43,"tag":291,"props":3269,"children":3270},{"style":308},[3271],{"type":49,"value":351},{"type":43,"tag":52,"props":3273,"children":3274},{},[3275,3280],{"type":43,"tag":58,"props":3276,"children":3278},{"className":3277},[],[3279],{"type":49,"value":2805},{"type":49,"value":3281}," is a true move — it carries the existing content\nforward without resending it. Always prefer it over delete + create when the\ncontent is unchanged.",{"type":43,"tag":1187,"props":3283,"children":3285},{"id":3284},"when-to-use-updatefiles-rare",[3286,3288,3294],{"type":49,"value":3287},"When to use ",{"type":43,"tag":58,"props":3289,"children":3291},{"className":3290},[],[3292],{"type":49,"value":3293},"update(files=[...])",{"type":49,"value":3295}," (rare)",{"type":43,"tag":52,"props":3297,"children":3298},{},[3299,3301,3306,3308,3313,3315,3320,3322,3327],{"type":49,"value":3300},"Passing ",{"type":43,"tag":58,"props":3302,"children":3304},{"className":3303},[],[3305],{"type":49,"value":938},{"type":49,"value":3307}," to ",{"type":43,"tag":58,"props":3309,"children":3311},{"className":3310},[],[3312],{"type":49,"value":2339},{"type":49,"value":3314}," ",{"type":43,"tag":105,"props":3316,"children":3317},{},[3318],{"type":49,"value":3319},"replaces the entire bundle",{"type":49,"value":3321}," —\nanything not in the array is dropped. This is the right tool only when you are\nintentionally wiping and reseeding the bundle (e.g. importing a fresh local\nSKILL.md tree). For almost every other case, prefer ",{"type":43,"tag":58,"props":3323,"children":3325},{"className":3324},[],[3326],{"type":49,"value":135},{"type":49,"value":3328}," plus per-file\nCRUD.",{"type":43,"tag":90,"props":3330,"children":3332},{"id":3331},"working-with-large-multi-file-skills",[3333],{"type":49,"value":3334},"Working with large multi-file skills",{"type":43,"tag":52,"props":3336,"children":3337},{},[3338],{"type":49,"value":3339},"Skills with many files (10+) require extra discipline:",{"type":43,"tag":1194,"props":3341,"children":3342},{},[3343,3366,3398,3435],{"type":43,"tag":101,"props":3344,"children":3345},{},[3346,3351,3352,3357,3359,3364],{"type":43,"tag":105,"props":3347,"children":3348},{},[3349],{"type":49,"value":3350},"Treat the manifest as the index.",{"type":49,"value":3314},{"type":43,"tag":58,"props":3353,"children":3355},{"className":3354},[],[3356],{"type":49,"value":161},{"type":49,"value":3358},"'s ",{"type":43,"tag":58,"props":3360,"children":3362},{"className":3361},[],[3363],{"type":49,"value":433},{"type":49,"value":3365}," is your map.\nMatch each task step to one file and fetch only that one.",{"type":43,"tag":101,"props":3367,"children":3368},{},[3369,3374,3376,3382,3384,3389,3391,3396],{"type":43,"tag":105,"props":3370,"children":3371},{},[3372],{"type":49,"value":3373},"Group structural changes into a sequence, not a fork.",{"type":49,"value":3375}," If you are renaming\nthree files, do them sequentially: ",{"type":43,"tag":58,"props":3377,"children":3379},{"className":3378},[],[3380],{"type":49,"value":3381},"rename → rename → rename",{"type":49,"value":3383},", each chained\nvia the previous response's ",{"type":43,"tag":58,"props":3385,"children":3387},{"className":3386},[],[3388],{"type":49,"value":153},{"type":49,"value":3390},". That gives you three small reviewable\nversions instead of one giant ",{"type":43,"tag":58,"props":3392,"children":3394},{"className":3393},[],[3395],{"type":49,"value":3293},{"type":49,"value":3397}," blob.",{"type":43,"tag":101,"props":3399,"children":3400},{},[3401,3406,3408,3413,3415,3420,3422,3427,3429,3434],{"type":43,"tag":105,"props":3402,"children":3403},{},[3404],{"type":49,"value":3405},"Keep edits localised.",{"type":49,"value":3407}," A single ",{"type":43,"tag":58,"props":3409,"children":3411},{"className":3410},[],[3412],{"type":49,"value":2339},{"type":49,"value":3414}," with ",{"type":43,"tag":58,"props":3416,"children":3418},{"className":3417},[],[3419],{"type":49,"value":135},{"type":49,"value":3421},"\ntargeting five files is fine. A single ",{"type":43,"tag":58,"props":3423,"children":3425},{"className":3424},[],[3426],{"type":49,"value":3293},{"type":49,"value":3428}," carrying ten\nfull file bodies is almost always a sign you should have used ",{"type":43,"tag":58,"props":3430,"children":3432},{"className":3431},[],[3433],{"type":49,"value":135},{"type":49,"value":171},{"type":43,"tag":101,"props":3436,"children":3437},{},[3438,3443],{"type":43,"tag":105,"props":3439,"children":3440},{},[3441],{"type":49,"value":3442},"Refactor the body itself first.",{"type":49,"value":3444}," If the body has grown past ~500 lines,\nthe right next step is usually to split content into new bundled files\nbefore adding more material.",{"type":43,"tag":90,"props":3446,"children":3448},{"id":3447},"concurrency-base_version",[3449,3451],{"type":49,"value":3450},"Concurrency: ",{"type":43,"tag":58,"props":3452,"children":3454},{"className":3453},[],[3455],{"type":49,"value":169},{"type":43,"tag":52,"props":3457,"children":3458},{},[3459,3461,3466],{"type":49,"value":3460},"Every write tool accepts ",{"type":43,"tag":58,"props":3462,"children":3464},{"className":3463},[],[3465],{"type":49,"value":169},{"type":49,"value":3467},". Always pass it.",{"type":43,"tag":1194,"props":3469,"children":3470},{},[3471,3490,3508],{"type":43,"tag":101,"props":3472,"children":3473},{},[3474,3476,3481,3483,3489],{"type":49,"value":3475},"The server compares ",{"type":43,"tag":58,"props":3477,"children":3479},{"className":3478},[],[3480],{"type":49,"value":169},{"type":49,"value":3482}," to the current latest version. If they\nmatch, the write succeeds and the new version is ",{"type":43,"tag":58,"props":3484,"children":3486},{"className":3485},[],[3487],{"type":49,"value":3488},"base_version + 1",{"type":49,"value":171},{"type":43,"tag":101,"props":3491,"children":3492},{},[3493,3495,3500,3502,3507],{"type":49,"value":3494},"If they differ, the write is rejected (someone else updated the skill).\nRe-run ",{"type":43,"tag":58,"props":3496,"children":3498},{"className":3497},[],[3499],{"type":49,"value":161},{"type":49,"value":3501},", reconcile your changes against the new body, and\nretry with the fresh ",{"type":43,"tag":58,"props":3503,"children":3505},{"className":3504},[],[3506],{"type":49,"value":153},{"type":49,"value":171},{"type":43,"tag":101,"props":3509,"children":3510},{},[3511,3513,3518,3520,3526],{"type":49,"value":3512},"After a successful write, the response includes the new ",{"type":43,"tag":58,"props":3514,"children":3516},{"className":3515},[],[3517],{"type":49,"value":153},{"type":49,"value":3519},". Chain\nfurther edits with that — do not re-",{"type":43,"tag":58,"props":3521,"children":3523},{"className":3522},[],[3524],{"type":49,"value":3525},"get",{"type":49,"value":3527}," between back-to-back writes you\ncontrol.",{"type":43,"tag":52,"props":3529,"children":3530},{},[3531,3533,3538,3540,3545],{"type":49,"value":3532},"Skipping ",{"type":43,"tag":58,"props":3534,"children":3536},{"className":3535},[],[3537],{"type":49,"value":169},{"type":49,"value":3539}," does ",{"type":43,"tag":75,"props":3541,"children":3542},{},[3543],{"type":49,"value":3544},"not",{"type":49,"value":3546}," speed things up — it just turns a clean\n\"someone else won the race\" error into a silent overwrite of their work.",{"type":43,"tag":90,"props":3548,"children":3550},{"id":3549},"common-pitfalls",[3551],{"type":49,"value":3552},"Common pitfalls",{"type":43,"tag":1194,"props":3554,"children":3555},{},[3556,3573,3588,3617,3640,3650,3680,3703,3725,3748,3771],{"type":43,"tag":101,"props":3557,"children":3558},{},[3559,3571],{"type":43,"tag":105,"props":3560,"children":3561},{},[3562,3564,3569],{"type":49,"value":3563},"Calling ",{"type":43,"tag":58,"props":3565,"children":3567},{"className":3566},[],[3568],{"type":49,"value":360},{"type":49,"value":3570}," with no search and then fetching every body",{"type":49,"value":3572}," —\ndefeats progressive disclosure. Read the descriptions first.",{"type":43,"tag":101,"props":3574,"children":3575},{},[3576,3586],{"type":43,"tag":105,"props":3577,"children":3578},{},[3579,3581],{"type":49,"value":3580},"Pre-fetching every bundled file after ",{"type":43,"tag":58,"props":3582,"children":3584},{"className":3583},[],[3585],{"type":49,"value":161},{"type":49,"value":3587}," — same mistake on\nthe inner level. Fetch on demand from the body's directives.",{"type":43,"tag":101,"props":3589,"children":3590},{},[3591,3603,3605,3610,3611,3616],{"type":43,"tag":105,"props":3592,"children":3593},{},[3594,3596,3601],{"type":49,"value":3595},"Using ",{"type":43,"tag":58,"props":3597,"children":3599},{"className":3598},[],[3600],{"type":49,"value":1333},{"type":49,"value":3602}," for a one-line fix",{"type":49,"value":3604}," — round-trips\nthe entire skill, makes diffs unreadable, and risks dropping files. Use\n",{"type":43,"tag":58,"props":3606,"children":3608},{"className":3607},[],[3609],{"type":49,"value":127},{"type":49,"value":2791},{"type":43,"tag":58,"props":3612,"children":3614},{"className":3613},[],[3615],{"type":49,"value":135},{"type":49,"value":171},{"type":43,"tag":101,"props":3618,"children":3619},{},[3620,3631,3633,3638],{"type":43,"tag":105,"props":3621,"children":3622},{},[3623,3624,3629],{"type":49,"value":3595},{"type":43,"tag":58,"props":3625,"children":3627},{"className":3626},[],[3628],{"type":49,"value":3293},{"type":49,"value":3630}," when you meant to add one file",{"type":49,"value":3632}," — drops every\nfile you didn't include. Use ",{"type":43,"tag":58,"props":3634,"children":3636},{"className":3635},[],[3637],{"type":49,"value":517},{"type":49,"value":3639}," instead.",{"type":43,"tag":101,"props":3641,"children":3642},{},[3643,3648],{"type":43,"tag":105,"props":3644,"children":3645},{},[3646],{"type":49,"value":3647},"Delete + create instead of rename",{"type":49,"value":3649}," — loses content history and costs an\nextra version bump.",{"type":43,"tag":101,"props":3651,"children":3652},{},[3653,3665,3667,3672,3674,3679],{"type":43,"tag":105,"props":3654,"children":3655},{},[3656,3658,3663],{"type":49,"value":3657},"Stale ",{"type":43,"tag":58,"props":3659,"children":3661},{"className":3660},[],[3662],{"type":49,"value":169},{"type":49,"value":3664}," after chained writes",{"type":49,"value":3666}," — read the ",{"type":43,"tag":58,"props":3668,"children":3670},{"className":3669},[],[3671],{"type":49,"value":153},{"type":49,"value":3673}," from the\nprevious write's response, not from your initial ",{"type":43,"tag":58,"props":3675,"children":3677},{"className":3676},[],[3678],{"type":49,"value":3525},{"type":49,"value":171},{"type":43,"tag":101,"props":3681,"children":3682},{},[3683,3695,3697,3702],{"type":43,"tag":105,"props":3684,"children":3685},{},[3686,3688,3693],{"type":49,"value":3687},"Leaving ",{"type":43,"tag":58,"props":3689,"children":3691},{"className":3690},[],[3692],{"type":49,"value":169},{"type":49,"value":3694}," off",{"type":49,"value":3696}," — accepts a silent overwrite. Always include\nit once you've done a ",{"type":43,"tag":58,"props":3698,"children":3700},{"className":3699},[],[3701],{"type":49,"value":3525},{"type":49,"value":171},{"type":43,"tag":101,"props":3704,"children":3705},{},[3706,3716,3718,3723],{"type":43,"tag":105,"props":3707,"children":3708},{},[3709,3711],{"type":49,"value":3710},"Empty \u002F vague ",{"type":43,"tag":58,"props":3712,"children":3714},{"className":3713},[],[3715],{"type":49,"value":593},{"type":49,"value":3717}," — the skill becomes effectively undiscoverable\nvia ",{"type":43,"tag":58,"props":3719,"children":3721},{"className":3720},[],[3722],{"type":49,"value":360},{"type":49,"value":3724}," search. Treat the description as the trigger contract.",{"type":43,"tag":101,"props":3726,"children":3727},{},[3728,3733,3735,3740,3741,3746],{"type":43,"tag":105,"props":3729,"children":3730},{},[3731],{"type":49,"value":3732},"Long body + no bundled files",{"type":49,"value":3734}," — when a body crosses ~500 lines, refactor\ninto ",{"type":43,"tag":58,"props":3736,"children":3738},{"className":3737},[],[3739],{"type":49,"value":1247},{"type":49,"value":81},{"type":43,"tag":58,"props":3742,"children":3744},{"className":3743},[],[3745],{"type":49,"value":1263},{"type":49,"value":3747}," rather than letting it grow.",{"type":43,"tag":101,"props":3749,"children":3750},{},[3751,3769],{"type":43,"tag":105,"props":3752,"children":3753},{},[3754,3756,3761,3762,3767],{"type":49,"value":3755},"Mixing ",{"type":43,"tag":58,"props":3757,"children":3759},{"className":3758},[],[3760],{"type":49,"value":425},{"type":49,"value":81},{"type":43,"tag":58,"props":3763,"children":3765},{"className":3764},[],[3766],{"type":49,"value":127},{"type":49,"value":3768}," in one update call",{"type":49,"value":3770}," — they're mutually exclusive.\nPick one.",{"type":43,"tag":101,"props":3772,"children":3773},{},[3774,3791,3793,3798,3800,3805,3807,3812,3814,3819,3821,3826,3828,3833],{"type":43,"tag":105,"props":3775,"children":3776},{},[3777,3779,3784,3786],{"type":49,"value":3778},"Guessing ",{"type":43,"tag":58,"props":3780,"children":3782},{"className":3781},[],[3783],{"type":49,"value":969},{"type":49,"value":3785}," vs ",{"type":43,"tag":58,"props":3787,"children":3789},{"className":3788},[],[3790],{"type":49,"value":2711},{"type":49,"value":3792}," — file-get and file-delete take ",{"type":43,"tag":58,"props":3794,"children":3796},{"className":3795},[],[3797],{"type":49,"value":2711},{"type":49,"value":3799},"\n(it's in the URL); create, rename (",{"type":43,"tag":58,"props":3801,"children":3803},{"className":3802},[],[3804],{"type":49,"value":2789},{"type":49,"value":3806},"\u002F",{"type":43,"tag":58,"props":3808,"children":3810},{"className":3809},[],[3811],{"type":49,"value":2797},{"type":49,"value":3813},"), ",{"type":43,"tag":58,"props":3815,"children":3817},{"className":3816},[],[3818],{"type":49,"value":938},{"type":49,"value":3820},", and\n",{"type":43,"tag":58,"props":3822,"children":3824},{"className":3823},[],[3825],{"type":49,"value":135},{"type":49,"value":3827}," take ",{"type":43,"tag":58,"props":3829,"children":3831},{"className":3830},[],[3832],{"type":49,"value":969},{"type":49,"value":3834}," (it's a body field). See \"File-path parameter\nnaming\" above.",{"type":43,"tag":90,"props":3836,"children":3838},{"id":3837},"archiving-a-skill",[3839],{"type":49,"value":3840},"Archiving a skill",{"type":43,"tag":52,"props":3842,"children":3843},{},[3844,3850,3852,3857,3859,3864,3866,3871,3872,3877],{"type":43,"tag":58,"props":3845,"children":3847},{"className":3846},[],[3848],{"type":49,"value":3849},"llma-skill-archive",{"type":49,"value":3851}," hides ",{"type":43,"tag":105,"props":3853,"children":3854},{},[3855],{"type":49,"value":3856},"every",{"type":49,"value":3858}," active version of a skill by name. It is\nnot version-scoped and ",{"type":43,"tag":105,"props":3860,"children":3861},{},[3862],{"type":49,"value":3863},"cannot be undone",{"type":49,"value":3865}," — the skill drops out of\n",{"type":43,"tag":58,"props":3867,"children":3869},{"className":3868},[],[3870],{"type":49,"value":360},{"type":49,"value":81},{"type":43,"tag":58,"props":3873,"children":3875},{"className":3874},[],[3876],{"type":49,"value":161},{"type":49,"value":3878}," for the whole team.",{"type":43,"tag":207,"props":3880,"children":3882},{"className":283,"code":3881,"language":285,"meta":212,"style":212},"posthog:llma-skill-archive\n{ \"skill_name\": \"my-skill\" }\n",[3883],{"type":43,"tag":58,"props":3884,"children":3885},{"__ignoreMap":212},[3886,3894],{"type":43,"tag":291,"props":3887,"children":3888},{"class":293,"line":294},[3889],{"type":43,"tag":291,"props":3890,"children":3891},{"style":298},[3892],{"type":49,"value":3893},"posthog:llma-skill-archive\n",{"type":43,"tag":291,"props":3895,"children":3896},{"class":293,"line":304},[3897,3901,3905,3909,3913,3917,3921,3925,3929],{"type":43,"tag":291,"props":3898,"children":3899},{"style":308},[3900],{"type":49,"value":311},{"type":43,"tag":291,"props":3902,"children":3903},{"style":308},[3904],{"type":49,"value":316},{"type":43,"tag":291,"props":3906,"children":3907},{"style":319},[3908],{"type":49,"value":1384},{"type":43,"tag":291,"props":3910,"children":3911},{"style":308},[3912],{"type":49,"value":327},{"type":43,"tag":291,"props":3914,"children":3915},{"style":308},[3916],{"type":49,"value":332},{"type":43,"tag":291,"props":3918,"children":3919},{"style":308},[3920],{"type":49,"value":316},{"type":43,"tag":291,"props":3922,"children":3923},{"style":339},[3924],{"type":49,"value":572},{"type":43,"tag":291,"props":3926,"children":3927},{"style":308},[3928],{"type":49,"value":327},{"type":43,"tag":291,"props":3930,"children":3931},{"style":308},[3932],{"type":49,"value":351},{"type":43,"tag":52,"props":3934,"children":3935},{},[3936,3938,3943,3945,3950],{"type":49,"value":3937},"Before archiving, ",{"type":43,"tag":58,"props":3939,"children":3941},{"className":3940},[],[3942],{"type":49,"value":161},{"type":49,"value":3944}," the skill if you need to inspect or copy it\nfirst. Archiving is the right tool for retiring a skill entirely; to remove a\nsingle bundled file use ",{"type":43,"tag":58,"props":3946,"children":3948},{"className":3947},[],[3949],{"type":49,"value":2733},{"type":49,"value":3951},", and to roll back content\npublish a new version rather than archiving.",{"type":43,"tag":90,"props":3953,"children":3955},{"id":3954},"porting-a-local-skillmd-tree-into-posthog",[3956],{"type":49,"value":3957},"Porting a local SKILL.md tree into PostHog",{"type":43,"tag":52,"props":3959,"children":3960},{},[3961,3963,3969,3971,3976,3977,3982,3983,3988],{"type":49,"value":3962},"When migrating a local skill folder (e.g. ",{"type":43,"tag":58,"props":3964,"children":3966},{"className":3965},[],[3967],{"type":49,"value":3968},"my-skill\u002FSKILL.md",{"type":49,"value":3970}," plus\n",{"type":43,"tag":58,"props":3972,"children":3974},{"className":3973},[],[3975],{"type":49,"value":1263},{"type":49,"value":1249},{"type":43,"tag":58,"props":3978,"children":3980},{"className":3979},[],[3981],{"type":49,"value":1247},{"type":49,"value":1249},{"type":43,"tag":58,"props":3984,"children":3986},{"className":3985},[],[3987],{"type":49,"value":1255},{"type":49,"value":3989},"):",{"type":43,"tag":97,"props":3991,"children":3992},{},[3993,4049,4061],{"type":43,"tag":101,"props":3994,"children":3995},{},[3996,3998,4004,4006,4011,4012,4017,4018,4023,4024,4029,4030,4035,4036,4041,4043,4048],{"type":49,"value":3997},"Read the local ",{"type":43,"tag":58,"props":3999,"children":4001},{"className":4000},[],[4002],{"type":49,"value":4003},"SKILL.md",{"type":49,"value":4005},". Its frontmatter maps to ",{"type":43,"tag":58,"props":4007,"children":4009},{"className":4008},[],[4010],{"type":49,"value":197},{"type":49,"value":1249},{"type":43,"tag":58,"props":4013,"children":4015},{"className":4014},[],[4016],{"type":49,"value":593},{"type":49,"value":581},{"type":43,"tag":58,"props":4019,"children":4021},{"className":4020},[],[4022],{"type":49,"value":705},{"type":49,"value":1249},{"type":43,"tag":58,"props":4025,"children":4027},{"className":4026},[],[4028],{"type":49,"value":743},{"type":49,"value":1249},{"type":43,"tag":58,"props":4031,"children":4033},{"className":4032},[],[4034],{"type":49,"value":781},{"type":49,"value":1249},{"type":43,"tag":58,"props":4037,"children":4039},{"className":4038},[],[4040],{"type":49,"value":843},{"type":49,"value":4042},". The body after the\nfrontmatter becomes ",{"type":43,"tag":58,"props":4044,"children":4046},{"className":4045},[],[4047],{"type":49,"value":425},{"type":49,"value":171},{"type":43,"tag":101,"props":4050,"children":4051},{},[4052,4054,4060],{"type":49,"value":4053},"Walk the bundled subdirs and gather every file as\n",{"type":43,"tag":58,"props":4055,"children":4057},{"className":4056},[],[4058],{"type":49,"value":4059},"{ path, content, content_type }",{"type":49,"value":171},{"type":43,"tag":101,"props":4062,"children":4063},{},[4064,4066,4072,4074,4079],{"type":49,"value":4065},"Call ",{"type":43,"tag":58,"props":4067,"children":4069},{"className":4068},[],[4070],{"type":49,"value":4071},"posthog:llma-skill-create",{"type":49,"value":4073}," once with everything — the skill lands at\n",{"type":43,"tag":58,"props":4075,"children":4077},{"className":4076},[],[4078],{"type":49,"value":509},{"type":49,"value":4080}," complete. Do not split this into a create + N file-create\ncalls.",{"type":43,"tag":52,"props":4082,"children":4083},{},[4084,4086,4091],{"type":49,"value":4085},"After the create, the skill is live for everyone via ",{"type":43,"tag":58,"props":4087,"children":4089},{"className":4088},[],[4090],{"type":49,"value":161},{"type":49,"value":171},{"type":43,"tag":90,"props":4093,"children":4095},{"id":4094},"when-a-skill-is-the-wrong-answer",[4096],{"type":49,"value":4097},"When a skill is the wrong answer",{"type":43,"tag":52,"props":4099,"children":4100},{},[4101],{"type":49,"value":4102},"Not every persistent prompt belongs in the skills store:",{"type":43,"tag":1194,"props":4104,"children":4105},{},[4106,4111,4116],{"type":43,"tag":101,"props":4107,"children":4108},{},[4109],{"type":49,"value":4110},"One-off task instructions belong in the conversation, not in a skill.",{"type":43,"tag":101,"props":4112,"children":4113},{},[4114],{"type":49,"value":4115},"Personal scratchpads belong in agent memory or local files.",{"type":43,"tag":101,"props":4117,"children":4118},{},[4119],{"type":49,"value":4120},"Code is not a skill — if it's something a service runs, it belongs in the\nrepo.",{"type":43,"tag":52,"props":4122,"children":4123},{},[4124],{"type":49,"value":4125},"A good skill is reusable, discoverable by description, and worth the cost of\nkeeping it correct over time.",{"type":43,"tag":4127,"props":4128,"children":4129},"style",{},[4130],{"type":49,"value":4131},"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":4133,"total":4304},[4134,4153,4165,4178,4191,4206,4222,4237,4251,4266,4276,4294],{"slug":4135,"name":4135,"fn":4136,"description":4137,"org":4138,"tags":4139,"stars":4150,"repoUrl":4151,"updatedAt":4152},"analyzing-expensive-users","analyze expensive users in AI observability","Analyze the most expensive users in AI observability and explain why they cost so much. Use when the user asks about top spenders, expensive users, per-user LLM cost, user-level cost drivers, or patterns behind high AI observability spend.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4140,4143,4146,4149],{"name":4141,"slug":4142,"type":13},"Analytics","analytics",{"name":4144,"slug":4145,"type":13},"Cost Optimization","cost-optimization",{"name":4147,"slug":4148,"type":13},"Observability","observability",{"name":9,"slug":8,"type":13},35568,"https:\u002F\u002Fgithub.com\u002FPostHog\u002Fposthog","2026-07-28T05:34:11.117757",{"slug":4154,"name":4154,"fn":4155,"description":4156,"org":4157,"tags":4158,"stars":4150,"repoUrl":4151,"updatedAt":4164},"auditing-endpoints","audit PostHog project endpoints","Audit every endpoint in a PostHog project for staleness, failed materialisations, and unused materialised versions. Use when the user asks \"what endpoints can I clean up?\", \"are any of my endpoints broken?\", \"which materialised versions are still being called?\", or wants a one-shot cleanup pass over the Endpoints product. Produces a prioritised report grouped by issue type, with recommended actions but does not modify anything without explicit confirmation.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4159,4160,4163],{"name":4141,"slug":4142,"type":13},{"name":4161,"slug":4162,"type":13},"Audit","audit",{"name":9,"slug":8,"type":13},"2026-06-08T08:08:33.693989",{"slug":4166,"name":4166,"fn":4167,"description":4168,"org":4169,"tags":4170,"stars":4150,"repoUrl":4151,"updatedAt":4177},"auditing-warehouse-source-health","audit PostHog data warehouse source health","Audit the health of a PostHog project's data warehouse sources and syncs — find every broken or degraded source connection, sync schema, and webhook channel. Use when the user asks \"why are my imports failing?\", \"what's broken with my sources?\", \"why is my warehouse data stale?\", or wants a one-shot triage of source\u002Fsync health before deciding where to dig in. Produces a prioritized report grouped by severity, with recommended next steps. For materialized-view health use `auditing-warehouse-view-health`; for a single failing sync use `diagnosing-failed-warehouse-syncs`.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4171,4172,4175,4176],{"name":4161,"slug":4162,"type":13},{"name":4173,"slug":4174,"type":13},"Data Warehouse","data-warehouse",{"name":4147,"slug":4148,"type":13},{"name":9,"slug":8,"type":13},"2026-06-18T08:22:57.67984",{"slug":4179,"name":4179,"fn":4180,"description":4181,"org":4182,"tags":4183,"stars":4150,"repoUrl":4151,"updatedAt":4190},"auditing-warehouse-view-health","audit PostHog materialized view health","Audit the health of a PostHog project's materialized views (saved queries) — find every failed materialization and flag unused or stale materialized views that cost storage and compute. Use when the user asks \"which of my views are broken?\", \"why is this materialized view failing?\", \"are any of my views wasting compute?\", or wants a one-shot triage of view health. For source\u002Fsync health use `auditing-warehouse-source-health`.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4184,4185,4186,4189],{"name":4161,"slug":4162,"type":13},{"name":4173,"slug":4174,"type":13},{"name":4187,"slug":4188,"type":13},"Performance","performance",{"name":9,"slug":8,"type":13},"2026-06-18T08:25:10.936787",{"slug":4192,"name":4192,"fn":4193,"description":4194,"org":4195,"tags":4196,"stars":4150,"repoUrl":4151,"updatedAt":4205},"authoring-error-tracking-alerts","author PostHog error tracking alerts","Author error tracking alerts that fire when an issue is created, reopened, or starts spiking. Use when the user asks to set up error notifications, route exceptions to Slack\u002Fwebhook\u002FLinear, or evaluate which error events are worth alerting on. Covers trigger-event selection, integration choice, dedup against existing alerts, and shipping with the canonical message body shape.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4197,4200,4203,4204],{"name":4198,"slug":4199,"type":13},"Alerting","alerting",{"name":4201,"slug":4202,"type":13},"Debugging","debugging",{"name":4147,"slug":4148,"type":13},{"name":9,"slug":8,"type":13},"2026-06-18T08:24:40.318583",{"slug":4207,"name":4207,"fn":4208,"description":4209,"org":4210,"tags":4211,"stars":4150,"repoUrl":4151,"updatedAt":4221},"authoring-log-alerts","author log alerts in PostHog","Author useful, low-noise log alerts on services in a PostHog project. Use when the user asks to set up alerts for their logs, suggest alerts they should add, or evaluate whether a service is worth monitoring. Covers service triage, baseline characterisation, threshold drafting, back-testing via simulate, and shipping with a notification destination.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4212,4213,4216,4217,4220],{"name":4141,"slug":4142,"type":13},{"name":4214,"slug":4215,"type":13},"Monitoring","monitoring",{"name":4147,"slug":4148,"type":13},{"name":4218,"slug":4219,"type":13},"Operations","operations",{"name":9,"slug":8,"type":13},"2026-07-18T05:10:54.430898",{"slug":4223,"name":4223,"fn":4224,"description":4225,"org":4226,"tags":4227,"stars":4150,"repoUrl":4151,"updatedAt":4236},"building-workflows","build and edit PostHog workflows","Build, edit, test, enable, and monitor PostHog workflows over MCP. Author the action\u002Fedge graph so it runs and opens cleanly in the visual editor, then change drafts surgically with patch operations. Use when asked to build, set up, automate, change, fix, or debug a workflow, campaign, broadcast, drip sequence, or event-triggered automation in the workflows product.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4228,4231,4232,4233],{"name":4229,"slug":4230,"type":13},"Automation","automation",{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},{"name":4234,"slug":4235,"type":13},"Workflow Automation","workflow-automation","2026-07-28T05:34:12.167015",{"slug":4238,"name":4238,"fn":4239,"description":4240,"org":4241,"tags":4242,"stars":4150,"repoUrl":4151,"updatedAt":4250},"check-posthog-loading","inspect PostHog SDK loading across URLs","Inspect how the PostHog JavaScript SDK is loaded across a list of URLs. Use to confirm consistent installation across pages, find pages missing the snippet, detect mismatched API keys or hosts between pages, and verify the load method (head snippet vs deferred vs array.js).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4243,4244,4245,4248,4249],{"name":4141,"slug":4142,"type":13},{"name":4201,"slug":4202,"type":13},{"name":4246,"slug":4247,"type":13},"Frontend","frontend",{"name":4147,"slug":4148,"type":13},{"name":9,"slug":8,"type":13},"2026-05-07T05:56:19.828048",{"slug":4252,"name":4252,"fn":4253,"description":4254,"org":4255,"tags":4256,"stars":4150,"repoUrl":4151,"updatedAt":4265},"consuming-endpoints-from-client-code","integrate PostHog endpoints into client applications","Wire a PostHog endpoint into a client app or SDK. Covers fetching the OpenAPI spec, generating a typed client with openapi-generator or @hey-api\u002Fopenapi-ts, sending the right auth header, shaping the variables payload (HogQL code_name vs insight breakdown property), handling rate-limit and materialised-endpoint error responses. Use when the user says \"how do I call my endpoint\", \"generate a client for this\", or \"what auth header do I use\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4257,4260,4261,4262],{"name":4258,"slug":4259,"type":13},"API Development","api-development",{"name":4246,"slug":4247,"type":13},{"name":9,"slug":8,"type":13},{"name":4263,"slug":4264,"type":13},"SDK","sdk","2026-06-08T08:08:34.929454",{"slug":4267,"name":4267,"fn":4268,"description":4269,"org":4270,"tags":4271,"stars":4150,"repoUrl":4151,"updatedAt":4275},"copying-endpoints-across-projects","copy PostHog endpoints across projects","Copy a PostHog endpoint (a saved HogQL\u002Finsight query exposed as an API route) to another project in the same organization, or duplicate it under a new name in the same project. Use when the user wants to duplicate an endpoint, promote an endpoint from staging to production, replicate an endpoint's query\u002Fvariables\u002Ffreshness config in another workspace, or clone an endpoint to iterate on it. Unlike feature flags and experiments, endpoints have NO native cross-project copy tool — this skill covers the read-then-recreate flow (endpoint-get then endpoint-create), the active-project switching it requires, name-collision checks, and the safe defaults (land unmaterialised in the target, verify with endpoint-run). Does not cover editing endpoint versions (see managing-endpoint-versions) or authoring a brand-new endpoint from scratch (see creating-an-endpoint).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4272,4273,4274],{"name":4258,"slug":4259,"type":13},{"name":4218,"slug":4219,"type":13},{"name":9,"slug":8,"type":13},"2026-07-15T05:29:58.442727",{"slug":4277,"name":4277,"fn":4278,"description":4279,"org":4280,"tags":4281,"stars":4150,"repoUrl":4151,"updatedAt":4293},"creating-ai-subscription","schedule recurring AI-generated PostHog reports","Create a recurring AI-generated PostHog report — schedule a free-text prompt to run on a cron, with the LLM-synthesized markdown delivered to email or Slack on each tick. Use when the user wants a recurring AI summary of X on any cadence (daily, weekly, monthly, yearly) rather than a one-off report. (To attach an AI summary to an existing insight\u002Fdashboard subscription instead of a free-text prompt, see `managing-subscriptions` and its `summary_enabled` option.)\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4282,4283,4286,4287,4290],{"name":4229,"slug":4230,"type":13},{"name":4284,"slug":4285,"type":13},"Email","email",{"name":9,"slug":8,"type":13},{"name":4288,"slug":4289,"type":13},"Reporting","reporting",{"name":4291,"slug":4292,"type":13},"Slack","slack","2026-06-09T07:32:27.935712",{"slug":4295,"name":4295,"fn":4296,"description":4297,"org":4298,"tags":4299,"stars":4150,"repoUrl":4151,"updatedAt":4303},"creating-an-endpoint","create PostHog API endpoints","Create a PostHog endpoint with the right shape on the first try — covers query kind choice, name conventions, what to expose as variables (HogQL code_name vs insight breakdown), data_freshness_seconds, and whether to materialise on day one. Use when the user says \"create an endpoint\", \"expose this query as an API\", \"turn this insight into an endpoint\", or asks for help structuring a new endpoint. Steers away from common mistakes: materialising a query with cohort breakdowns or compare mode, inline-only variables on a materialised endpoint, unbounded date ranges, ambiguous names.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4300,4301,4302],{"name":4141,"slug":4142,"type":13},{"name":4258,"slug":4259,"type":13},{"name":9,"slug":8,"type":13},"2026-06-08T08:08:29.624498",231,{"items":4306,"total":4409},[4307,4324,4340,4354,4370,4382,4393],{"slug":4308,"name":4308,"fn":4309,"description":4310,"org":4311,"tags":4312,"stars":26,"repoUrl":27,"updatedAt":4323},"account-handover","draft sales account handover notes","Draft structured handover notes for transitioning a PostHog account from one TAM or CSM to another. Use this skill when a TAM needs to hand over an account, prepare a transition briefing, write handover notes, create an account summary for a new owner, or any request involving account transitions between TAMs or CSMs. Triggers on \"hand over this account\", \"transition account to\", \"draft handover notes\", \"account briefing for new TAM\", \"prepare account transition\", or when a TAM names an account and says they're leaving or reassigning it.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4313,4316,4319,4320],{"name":4314,"slug":4315,"type":13},"Communications","communications",{"name":4317,"slug":4318,"type":13},"CRM","crm",{"name":9,"slug":8,"type":13},{"name":4321,"slug":4322,"type":13},"Sales","sales","2026-04-16T05:13:00.172732",{"slug":4325,"name":4325,"fn":4326,"description":4327,"org":4328,"tags":4329,"stars":26,"repoUrl":27,"updatedAt":4339},"auditing-warehouse-data-health","audit PostHog data warehouse health","Audit the health of a PostHog project's data warehouse — find every broken or degraded pipeline item across sources, sync schemas, materialized views, batch exports, and transformations. Use when the user asks \"what's broken in my warehouse?\", \"give me a health check\", \"audit my data pipeline\", \"why are some dashboards stale?\", or wants a one-shot triage summary before deciding where to spend time. Produces a prioritized report of issues grouped by severity and type, with recommended next steps.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4330,4331,4334,4337,4338],{"name":4161,"slug":4162,"type":13},{"name":4332,"slug":4333,"type":13},"Data Engineering","data-engineering",{"name":4335,"slug":4336,"type":13},"Data Quality","data-quality",{"name":4147,"slug":4148,"type":13},{"name":9,"slug":8,"type":13},"2026-06-21T08:19:05.85849",{"slug":4341,"name":4341,"fn":4342,"description":4343,"org":4344,"tags":4345,"stars":26,"repoUrl":27,"updatedAt":4353},"copying-flags-across-projects","copy feature flags across PostHog projects","Copy a feature flag from one PostHog project to one or more target projects in the same organization. Use when the user wants to duplicate a flag, promote a flag from staging to production, sync flags across projects, or replicate a flag configuration in a different workspace. Covers cohort remapping, scheduled-change handling, encrypted payloads, and the safe defaults (disabled in target, no scheduled changes).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4346,4349,4352],{"name":4347,"slug":4348,"type":13},"Deployment","deployment",{"name":4350,"slug":4351,"type":13},"Feature Flags","feature-flags",{"name":9,"slug":8,"type":13},"2026-05-04T05:56:44.484909",{"slug":4355,"name":4355,"fn":4356,"description":4357,"org":4358,"tags":4359,"stars":26,"repoUrl":27,"updatedAt":4369},"diagnosing-experiment-results","diagnose PostHog experiment results and anomalies","Diagnoses bias, anomalies, and strange-looking results on a specific PostHog experiment. Covers empty \u002F 0-exposure experiments, sample ratio mismatch, identity fragmentation, multi-variant exposure, uneven-split exclusion bias, significance traps (peeking, A\u002FA, Bayesian vs Frequentist), PostHog-vs-SQL discrepancies, and surprises after mid-run edits. Symptom-driven dispatch to the right diagnostic.\nTRIGGER when: user asks 'is my experiment biased?' or 'why 0 exposures?', references the bias banner, says a variant looks strange \u002F wrong \u002F off, sees significance flipping, notices PostHog numbers disagreeing with their SQL, sees an A\u002FA test showing significance, or reports surprises after mid-run edits.\nDO NOT TRIGGER when: creating a new experiment (use creating-experiments), only configuring rollout (use configuring-experiment-rollout) or metrics (use configuring-experiment-analytics), or only asking lifecycle questions (use managing-experiment-lifecycle).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4360,4363,4364,4367,4368],{"name":4361,"slug":4362,"type":13},"A\u002FB Testing","a-b-testing",{"name":4141,"slug":4142,"type":13},{"name":4365,"slug":4366,"type":13},"Data Analysis","data-analysis",{"name":4201,"slug":4202,"type":13},{"name":9,"slug":8,"type":13},"2026-05-22T06:59:58.103867",{"slug":4371,"name":4371,"fn":4372,"description":4373,"org":4374,"tags":4375,"stars":26,"repoUrl":27,"updatedAt":4381},"diagnosing-missing-recordings","diagnose missing PostHog session recordings","Diagnoses why a session recording is missing or was not captured. Use when a user asks why a session has no replay, why recordings aren't appearing, or wants to troubleshoot session replay capture issues for a specific session ID or across their project. Covers SDK diagnostic signals, project settings, sampling, triggers, ad blockers, and quota\u002Fbilling scenarios.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4376,4377,4378,4379,4380],{"name":4141,"slug":4142,"type":13},{"name":4201,"slug":4202,"type":13},{"name":4246,"slug":4247,"type":13},{"name":4147,"slug":4148,"type":13},{"name":9,"slug":8,"type":13},"2026-04-22T05:06:51.989772",{"slug":4383,"name":4383,"fn":4384,"description":4385,"org":4386,"tags":4387,"stars":26,"repoUrl":27,"updatedAt":4392},"diagnosing-sdk-health","diagnose PostHog SDK health","Diagnoses the health of a project's PostHog SDK integrations — which SDKs are out of date and how to fix them. Use when a user asks about PostHog SDK versions, outdated SDKs, upgrade recommendations, \"SDK health\", \"SDK doctor\" (the former name), or when events or features seem off and it might be due to an old SDK.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4388,4389,4390,4391],{"name":4141,"slug":4142,"type":13},{"name":4201,"slug":4202,"type":13},{"name":4147,"slug":4148,"type":13},{"name":9,"slug":8,"type":13},"2026-04-27T05:46:14.554016",{"slug":4394,"name":4394,"fn":4395,"description":4396,"org":4397,"tags":4398,"stars":26,"repoUrl":27,"updatedAt":4408},"error-tracking-android","track Android errors with PostHog","PostHog error tracking for Android",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4399,4402,4403,4406,4407],{"name":4400,"slug":4401,"type":13},"Android","android",{"name":4201,"slug":4202,"type":13},{"name":4404,"slug":4405,"type":13},"Mobile","mobile",{"name":4147,"slug":4148,"type":13},{"name":9,"slug":8,"type":13},"2026-04-06T18:46:26.982494",110]