mdk-site-sizing
Size an MDK deployment from a plain description of a site using measured benchmark envelopes.
Skill by tetherto
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/tetherto-mdk-site-sizing
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/mdk-site-sizing
What's inside
- Skill name
mdk-site-sizing- Description
- Size an MDK deployment from a plain description of a site using measured benchmark envelopes. Use when the task mentions "size a site", "how many Workers", "capacity", "hardware for N miners", "sizing recommendation", "deployment envelope", "devices per Worker", or turning benchmark results into a Kernel/Worker/Gateway layout.
- License
- Apache-2.0
- Metadata
- suite: mdk-developer-skill · mdk_version: 0.7.0
- Instructions
- 148 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (16)
- SKILL.md
- held-out.json · eval/
- cap-100devices-2workers-mixed.json · eval/profiles/
- cap-100devices-2workers.json · eval/profiles/
- cap-10devices-1workers.json · eval/profiles/
- cap-15devices-2workers.json · eval/profiles/
- cap-200devices-4workers.json · eval/profiles/
- cap-500devices-4workers.json · eval/profiles/
- cap-50devices-2workers.json · eval/profiles/
- envelope.json · references/
- envelope.md · references/
- compile-envelope.mjs · scripts/
- eval-held-out.mjs · scripts/
- lib.mjs · scripts/
- parse-site.mjs · scripts/
- size-site.mjs · scripts/
SKILL.md (first lines)
# Size an MDK site from a description
Measured performance data turned into an Agent Skill that sizes an MDK
deployment from a plain description of a site. Bar: the Skill's recommendations
match the measured envelope on a held-out set of site descriptions.
Do **not** invent CPU, RAM, devices-per-Worker, or pass/fail status. Parse the
site, run the sizer, quote the matching envelope.
## When to use
| Situation | Action |
| --------------------------------------------------- | ---------- |
| "How many Workers for N miners on this host?" | This skill |
| "Size a site from this description" | This skill |
| Turn `backend/tests/benchmark/results/*.json` into advice | Compile the envelope, then this skill |
| Write `mdk.yaml` / `mdk run` after a size is agreed | Hand off to `mdk-deployment` |
| Measure a new host | Point at the [capacity harness](../../../../../backend/tests/benchmark/README.md); do not guess |
## Workflow
Copy this checklist:
```
Task Progress:
- [ ] 1. Parse the site description into facts
- [ ] 2. Run size-site.mjs against the envelope (never skip)
- [ ] 3. Present the script output as the recommendation
- [ ] 4. If status is unmeasured or beyond-envelope, stop claiming support
```
### 1. Parse
Extract facts matching this shape (or run `scripts/parse-site.mjs`):
```json
{
"devices": [
{ "type": "mdk-worker-whatsminer", "model": "m56s", "count": 80 }
],
"deviceCount": 80,
"host": {
"tier": "edge | site-server | custom",
"cpuCoresPhysical": 16,
"ramGiB": 64,
"diskType": "nvme | sata | hdd | sd"
},
"kernels": 1,
"gateways": 1
}
```
Worker `type` values are package names (`mdk-worker-whatsminer`,
`mdk-worker-antminer`, `mdk-worker-avalon`). Map vendor prose (MicroBT,
Bitmain, Canaan) onto those names. Default topology is **1 Kernel, 1 Gateway**.
If a count or family is missing, leave it null. Do not fill gaps with a guess.
### 2. Size (mandatory)
From this skill directory. Never paste the operator's text into a shell
command (not even inside double quotes: `$( )`, backticks and `"` still
expand). Write it verbatim to a file with your file-writing tool, then pass the
file:
```bash
node scripts/size-site.mjs --description-file site.txt --md
# or, if you already wrote facts.json:
node scripts/size-site.mjs facts.json --md
```
The script reads [`references/envelope.json`](./references/envelope.json) and
prints the recommendation. That JSON is the measured envelope. Treat its
`status`, Worker count, devices-per-Worker, and resource numbers as
authoritative.
Rebuild the envelope after a real harness run:
```bash
node scripts/compile-envelope.mjs --from <repo>/backend/tests/benchmark/results
```
Without committed harness reports, the envelope is compiled from
[`eval/profiles/`](./eval/profiles/cap-100devices-2workers.json) (same schema
as a harness profile). Label any quote from a `source: fixture` envelope as
fixture data.
### 3. Present
Use the script's `--md` output, or the same table it renders: status, tier,
devices, Workers, devices per Worker, Kernels, Gateways, matching profile,
RSS, CPU, p99, supported-up-to (densest **green** profile on that mix and
tier). Repeat the script's caveats verbatim.
**Supported** means `status: green` inside the envelope. Amber is "little spare
capacity", not a supported-up-to bound. `beyond-envelope` and `unmeasured` are
not sizes: tell the operator to run the harness.
### 4. Hand-off
Once the operator accepts a green (or explicit amber) layout, use
`mdk-deployment` to write `mdk.yaml` with that Worker count and device split.
## Envelope rules (do not override)
- Match on device-family set, then reference tier (`edge` / `site-server` /
`custom`). Custom profiles may fill a tier gap; they do not change the host
tier you report.
- Covering profile = smallest profile with `deviceCount >= requested` at the
best pass/fail (`green` then `amber`). Worker count is
`ceil(requested / devices-per-Worker)` from that profile.
- Resource numbers interpolate between the next-smaller green point and the
covering profile. Do not extrapolate past the last non-red point and call it
green.
- Densest green on that mix+tier is `supportedUpTo`. A red profile is a
measured failure, not a layout to copy.
- Unknown families (no profile in the envelope) → `unmeasured`.
Full compile/lookup notes: [`references/envelope.md`](./references/envelope.md).From tetherto/mdk, Apache-2.0.
More from tetherto/mdk
- 0.637score
mdk-publish-security
tetherto
Run the pre-publish security audit for every publishable @tetherto/mdk-* package (or any non-private package in an npm monorepo).
SkillAFreshness: A★ 11Claude Code +9 - 0.637score
mdk-ui-component
tetherto
Build a UI page/panel that renders data from an MDK Worker or Gateway plugin.
SkillAFreshness: A★ 11Claude Code +9 - 0.637score
mdk-gateway-plugin
tetherto
Build the HTTP routes of an MDK app (route table + controllers, served through the Gateway) over one or more MDK Workers.
SkillAFreshness: A★ 11Claude Code +9 - 0.633score
mdk
tetherto
Build on the MDK (Mining Device Kit) platform.
SkillAFreshness: A★ 11Claude Code +9 - 0.633score
mdk-worker-plugin
tetherto
Integrate a new device into MDK as a device Worker.
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
mdk-docs-style
tetherto
Router for MDK docs-authoring rules in mdk-prv.
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
mdk-deployment
tetherto
Deploy and run a working MDK stack from mdk.yaml.
SkillAFreshness: A★ 11Claude Code +9 - 0.629score
mdk-create-app
tetherto
Scaffold a new MDK App package ready to publish.
SkillAFreshness: A★ 11Claude Code +9 - 0.628score
changelog
tetherto
Generate the changelog for the next MDK release by carefully diffing the previous release tag against the current tree, rotating the existing CHANGELOG.md…
SkillAFreshness: A★ 11Claude Code +9 - 0.627score
mdk-skill-suite
tetherto
The MDK product skill suite (mdk, mdk-worker-plugin, mdk-gateway-plugin, mdk-ui-component, mdk-deployment, mdk-site-sizing) is not installed in this checkout.
SkillAFreshness: A★ 11Claude Code +9 - 0.624score
bump-mdk
tetherto
Bump package versions across the MDK monorepo and resync every affected lockfile the way CI expects.
SkillAFreshness: A★ 11Claude Code +9
Signals
- Stars
- 11
- Forks
- 13
- Open issues
- 0
- Last commit (this folder)
- Oct 22, 2026 (6 days ago)
- Last release
- Oct 19, 2026 (9 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/tetherto/mdk
- Website
- mdk.tether.io
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from tetherto
- 0.637score
mdk-publish-security
tetherto
Run the pre-publish security audit for every publishable @tetherto/mdk-* package (or any non-private package in an npm monorepo).
SkillAFreshness: A★ 11Claude Code +9 - 0.637score
mdk-ui-component
tetherto
Build a UI page/panel that renders data from an MDK Worker or Gateway plugin.
SkillAFreshness: A★ 11Claude Code +9 - 0.637score
mdk-gateway-plugin
tetherto
Build the HTTP routes of an MDK app (route table + controllers, served through the Gateway) over one or more MDK Workers.
SkillAFreshness: A★ 11Claude Code +9 - 0.633score
mdk
tetherto
Build on the MDK (Mining Device Kit) platform.
SkillAFreshness: A★ 11Claude Code +9 - 0.633score
mdk-worker-plugin
tetherto
Integrate a new device into MDK as a device Worker.
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
mdk-docs-style
tetherto
Router for MDK docs-authoring rules in mdk-prv.
SkillAFreshness: A★ 11Claude Code +9
Cite this page
mdk-site-sizing skill. Agent Mart. https://agentmart.dev/skills/tetherto-mdk-site-sizing (last updated 2026-10-24)