{
 "measurement": "What each of Anthropic's own five official Agent Skill plugins costs at startup, held against Anthropic's own documented figure",
 "ran_on": "2026-08-18",
 "claude_code_version": "2.1.234",
 "claude_code_version_recorded_at_runtime": "2.1.234 (Claude Code)",
 "pack": "anthropics/skills",
 "pack_commit": "f379e5ad66e2febc1616cf8d6284666fecbe514e",
 "prompt": "Reply with only: OK",
 "installing_it_has_five_answers": "There is no plugin.json in this repository. .claude-plugin/marketplace.json offers five separate plugins, each naming an explicit skills list, so 'installing anthropics/skills' is not a thing anyone does. The five are priced separately. The repository carries 20 SKILL.md files against 19 plugin entries; the extra one is template/, an authoring scaffold, correctly excluded rather than an unshipped skill.",
 "method": {
  "reused_not_reimplemented": "Install and call machinery is imported from skillpack-manifest-run.py, the harness behind this site's published skill-pack figures, so these numbers are comparable to them by construction.",
  "estimator": "TWO are computed. A is the mode of the per-round deltas, which is what this site publishes today. B is mode(absolute) minus mode(floor), which removes each side's per-call noise before subtracting rather than compounding it. Where a figure IS published it is B's, but only 1 of 5 cells publishes one; the rest are withheld, three by the pre-registration and one for a tied mode, and carry ranges instead. Comparing the two estimators as estimators, they agree on 3 of 5 plugins and disagree on none.",
  "why_pairing_hurt_here": "The floor itself returned 3 distinct values across 10 rounds, spread 1095. Each call draws its own intermittent component, so subtracting a noisy floor from a stable measurement adds variance. Absolute spreads here are 198 tokens in four of the five cells and 897 in discernment-nudge, against paired-delta spreads of 1095 to 1992.",
  "controls": {
   "paired": "Floor re-measured every round and published, so both estimators can be computed.",
   "arrival": "Every reply must be exactly OK; asserted before assembling.",
   "isolation": "--setting-sources project asserted onto argv.",
   "fixture": "Skills counted off disk per run and checked against the manifest list.",
   "no_invocation": "Trivial prompt; no skill body is ever executed."
  }
 },
 "results": {
  "floor": {
   "mode": 22976,
   "seen": 7,
   "of": 10,
   "all_rounds": [
    21881,
    22778,
    22778,
    22976,
    22976,
    22976,
    22976,
    22976,
    22976,
    22976
   ],
   "spread": 1095
  },
  "by_plugin": {
   "document-skills": {
    "skills": 4,
    "skill_dirs": [
     "skills/xlsx",
     "skills/docx",
     "skills/pptx",
     "skills/pdf"
    ],
    "description_chars": {
     "median": 835,
     "min": 437,
     "max": 948,
     "total": 2952
    },
    "estimator_A_mode_of_deltas": {
     "mode": 1027,
     "estimator_refused": null,
     "rounds": 10,
     "min": 829,
     "max": 1924,
     "spread": 1095,
     "all_rounds": [
      829,
      829,
      829,
      1027,
      1027,
      1027,
      1027,
      1027,
      1225,
      1924
     ],
     "mode_seen": 5,
     "value": 1027
    },
    "estimator_B_absolute_minus_floor": {
     "value": null,
     "absolute": {
      "mode": null,
      "estimator_refused": "the mode is tied 5-5 across 2 values [23805, 24003], so it is decided by dict ordering rather than by data",
      "rounds": 10,
      "min": 23805,
      "max": 24003,
      "spread": 198,
      "all_rounds": [
       23805,
       23805,
       23805,
       23805,
       23805,
       24003,
       24003,
       24003,
       24003,
       24003
      ],
      "mode_seen": null
     },
     "floor_mode": 22976
    },
    "estimators_agree": null,
    "published_figure": null,
    "figure_refused_because": "the mode is tied 5-5 across 2 values [23805, 24003], so it is decided by dict ordering rather than by data",
    "range_if_no_figure": [
     829,
     1027
    ],
    "per_skill": null,
    "documented_per_skill": 100,
    "times_the_documented_figure": null
   },
   "example-skills": {
    "skills": 12,
    "skill_dirs": [
     "skills/algorithmic-art",
     "skills/brand-guidelines",
     "skills/canvas-design",
     "skills/doc-coauthoring",
     "skills/frontend-design",
     "skills/internal-comms",
     "skills/mcp-builder",
     "skills/skill-creator",
     "skills/slack-gif-creator",
     "skills/theme-factory",
     "skills/web-artifacts-builder",
     "skills/webapp-testing"
    ],
    "description_chars": {
     "median": 288,
     "min": 204,
     "max": 428,
     "total": 3387
    },
    "estimator_A_mode_of_deltas": {
     "mode": 1220,
     "estimator_refused": null,
     "rounds": 10,
     "min": 1022,
     "max": 2315,
     "spread": 1293,
     "all_rounds": [
      1022,
      1022,
      1022,
      1220,
      1220,
      1220,
      1220,
      1418,
      1418,
      2315
     ],
     "mode_seen": 4,
     "value": 1220
    },
    "estimator_B_absolute_minus_floor": {
     "value": 1220,
     "absolute": {
      "mode": 24196,
      "estimator_refused": null,
      "rounds": 10,
      "min": 23998,
      "max": 24196,
      "spread": 198,
      "all_rounds": [
       23998,
       23998,
       23998,
       24196,
       24196,
       24196,
       24196,
       24196,
       24196,
       24196
      ],
      "mode_seen": 7
     },
     "floor_mode": 22976
    },
    "estimators_agree": true,
    "published_figure": 1220,
    "figure_refused_because": null,
    "range_if_no_figure": null,
    "per_skill": 101.7,
    "documented_per_skill": 100,
    "times_the_documented_figure": 1.0
   },
   "claude-api": {
    "skills": 1,
    "skill_dirs": [
     "skills/claude-api"
    ],
    "description_chars": {
     "median": 1068,
     "min": 1068,
     "max": 1068,
     "total": 1068
    },
    "estimator_A_mode_of_deltas": {
     "mode": 470,
     "estimator_refused": null,
     "rounds": 10,
     "min": 272,
     "max": 1565,
     "spread": 1293,
     "all_rounds": [
      272,
      470,
      470,
      470,
      470,
      470,
      470,
      668,
      668,
      1565
     ],
     "mode_seen": 6,
     "value": 470
    },
    "estimator_B_absolute_minus_floor": {
     "value": 470,
     "absolute": {
      "mode": 23446,
      "estimator_refused": null,
      "rounds": 10,
      "min": 23248,
      "max": 23446,
      "spread": 198,
      "all_rounds": [
       23248,
       23446,
       23446,
       23446,
       23446,
       23446,
       23446,
       23446,
       23446,
       23446
      ],
      "mode_seen": 9
     },
     "floor_mode": 22976
    },
    "estimators_agree": true,
    "published_figure": null,
    "figure_refused_because": "PRE-REGISTERED REFUSAL. This harness declared before running that a single-skill plugin is below its resolution and would receive a range rather than a figure. The observed range for this cell is 272 to 470 tokens. The estimator itself is reported unchanged below; what is withheld is the published figure, not the estimator's output.",
    "range_if_no_figure": [
     272,
     470
    ],
    "per_skill": null,
    "documented_per_skill": 100,
    "times_the_documented_figure": null
   },
   "claude-academy-guide": {
    "skills": 1,
    "skill_dirs": [
     "skills/claude-academy-guide"
    ],
    "description_chars": {
     "median": 1176,
     "min": 1176,
     "max": 1176,
     "total": 1176
    },
    "estimator_A_mode_of_deltas": {
     "mode": 397,
     "estimator_refused": null,
     "rounds": 10,
     "min": 199,
     "max": 1492,
     "spread": 1293,
     "all_rounds": [
      199,
      199,
      199,
      397,
      397,
      397,
      397,
      397,
      595,
      1492
     ],
     "mode_seen": 5,
     "value": 397
    },
    "estimator_B_absolute_minus_floor": {
     "value": 397,
     "absolute": {
      "mode": 23373,
      "estimator_refused": null,
      "rounds": 10,
      "min": 23175,
      "max": 23373,
      "spread": 198,
      "all_rounds": [
       23175,
       23175,
       23175,
       23175,
       23373,
       23373,
       23373,
       23373,
       23373,
       23373
      ],
      "mode_seen": 6
     },
     "floor_mode": 22976
    },
    "estimators_agree": true,
    "published_figure": null,
    "figure_refused_because": "PRE-REGISTERED REFUSAL. This harness declared before running that a single-skill plugin is below its resolution and would receive a range rather than a figure. The observed range for this cell is 199 to 397 tokens. The estimator itself is reported unchanged below; what is withheld is the published figure, not the estimator's output.",
    "range_if_no_figure": [
     199,
     397
    ],
    "per_skill": null,
    "documented_per_skill": 100,
    "times_the_documented_figure": null
   },
   "discernment-nudge": {
    "skills": 1,
    "skill_dirs": [
     "skills/discernment-nudge"
    ],
    "description_chars": {
     "median": 983,
     "min": 983,
     "max": 983,
     "total": 983
    },
    "estimator_A_mode_of_deltas": {
     "mode": null,
     "estimator_refused": "the mode is tied 3-3 across 2 values [121, 319], so it is decided by dict ordering rather than by data",
     "rounds": 10,
     "min": -578,
     "max": 1414,
     "spread": 1992,
     "all_rounds": [
      -578,
      121,
      121,
      121,
      319,
      319,
      319,
      517,
      517,
      1414
     ],
     "mode_seen": null,
     "value": null
    },
    "estimator_B_absolute_minus_floor": {
     "value": 319,
     "absolute": {
      "mode": 23295,
      "estimator_refused": null,
      "rounds": 10,
      "min": 22398,
      "max": 23295,
      "spread": 897,
      "all_rounds": [
       22398,
       23097,
       23097,
       23097,
       23295,
       23295,
       23295,
       23295,
       23295,
       23295
      ],
      "mode_seen": 6
     },
     "floor_mode": 22976
    },
    "estimators_agree": null,
    "published_figure": null,
    "figure_refused_because": "PRE-REGISTERED REFUSAL. This harness declared before running that a single-skill plugin is below its resolution and would receive a range rather than a figure. The observed range for this cell is -578 to 319 tokens. The estimator itself is reported unchanged below; what is withheld is the published figure, not the estimator's output.",
    "range_if_no_figure": [
     -578,
     319
    ],
    "per_skill": null,
    "documented_per_skill": 100,
    "times_the_documented_figure": null
   }
  },
  "ordered_by_description_length": [
   {
    "plugin": "example-skills",
    "median_description_chars": 288,
    "skills": 12,
    "tokens": 1220,
    "per_skill": 101.7,
    "times_documented": 1.0,
    "refused": null,
    "range_if_refused": null
   },
   {
    "plugin": "document-skills",
    "median_description_chars": 835,
    "skills": 4,
    "tokens": null,
    "per_skill": null,
    "times_documented": null,
    "refused": "the mode is tied 5-5 across 2 values [23805, 24003], so it is decided by dict ordering rather than by data",
    "range_if_refused": [
     829,
     1027
    ]
   },
   {
    "plugin": "discernment-nudge",
    "median_description_chars": 983,
    "skills": 1,
    "tokens": null,
    "per_skill": null,
    "times_documented": null,
    "refused": "PRE-REGISTERED REFUSAL. This harness declared before running that a single-skill plugin is below its resolution and would receive a range rather than a figure. The observed range for this cell is -578 to 319 tokens. The estimator itself is reported unchanged below; what is withheld is the published figure, not the estimator's output.",
    "range_if_refused": [
     -578,
     319
    ]
   },
   {
    "plugin": "claude-api",
    "median_description_chars": 1068,
    "skills": 1,
    "tokens": null,
    "per_skill": null,
    "times_documented": null,
    "refused": "PRE-REGISTERED REFUSAL. This harness declared before running that a single-skill plugin is below its resolution and would receive a range rather than a figure. The observed range for this cell is 272 to 470 tokens. The estimator itself is reported unchanged below; what is withheld is the published figure, not the estimator's output.",
    "range_if_refused": [
     272,
     470
    ]
   },
   {
    "plugin": "claude-academy-guide",
    "median_description_chars": 1176,
    "skills": 1,
    "tokens": null,
    "per_skill": null,
    "times_documented": null,
    "refused": "PRE-REGISTERED REFUSAL. This harness declared before running that a single-skill plugin is below its resolution and would receive a range rather than a figure. The observed range for this cell is 199 to 397 tokens. The estimator itself is reported unchanged below; what is withheld is the published figure, not the estimator's output.",
    "range_if_refused": [
     199,
     397
    ]
   }
  ],
  "headline": "Anthropic documents ~100 tokens per Skill. Only 1 of 5 plugins here is large enough for this instrument to resolve: example-skills, twelve skills at a 288-character description median, measured 102 per skill, which is the documented figure almost exactly. The other 4 carry ranges rather than figures (document-skills, discernment-nudge, claude-api, claude-academy-guide). Three of those are single-skill plugins refused a figure by this harness's own pre-registration, and the ranges vindicate it: one runs from -578 to 319 tokens, and installing a skill cannot make a session smaller."
 },
 "known_limits": {
  "carried_forward_one_skill_is_inside_the_noise": "skills-cost-2-1-233.json carries that a single skill sits inside the round-to-round noise, and curve-stability-2-1-234.json re-verified it upward to 10 skills. 3 of these five plugins are single skills (discernment-nudge, claude-api, claude-academy-guide), and this harness pre-registered before the first round that such a cell is below its resolution. NO figure is published for any of them here, only the observed range. An earlier draft published point figures for all three on the grounds that estimator B's readings looked tight once the data was in; relaxing a prior after seeing the data is the one thing writing it down is meant to prevent, and those figures are withdrawn. The readings were not uniformly tight either: discernment-nudge's absolute spread is 897 tokens against 198 in the other four cells, and its range runs -578 to 319, which contains zero. The carried limit is not retired on this dataset; it is reinforced by it.",
  "the_trend_is_not_a_law": "Ordered by median description length the per-skill figures are 102, 207\u2013257, -578\u2013319, 272\u2013470, 199\u2013397, but three of those five are ranges from single-skill cells this harness pre-registered as unresolvable, so the apparent ladder is not evidence of a trend. Measured directly instead (desc-limit-2-1-235.json), description length above 500 characters costs about 0.015 tokens per character, so a long description is not what makes these plugins dear. This site has published that per-skill cost does NOT order by description length within the narrow 149 to 397 band of three third-party packs. Both can hold: a strong trend across a wide range and no clean ordering inside a narrow one. No fitted rate is offered here.",
  "descriptions_are_outside_the_published_model": "This site's per-skill rate is stated valid for 30 to 300 character descriptions. Four of these five plugins have medians from 835 to 1,176, well outside it, so the model is not used to predict them and only measurement is reported.",
  "one_machine_one_release": "Opus on Claude Code 2.1.234, macOS, one session."
 }
}