8 seats, 8 active in the last 7 days. These are people on the organisation's Claude account. Whichever surface a seat worked in, its usage lands here: seats, not separate agents.
Skills library
JamesWeb3/nature-baby-aios ↗
The versioned workflow skills these seats run on, shipped through the organisation's plugin marketplace.
| Seat | Model | Calls | Tokens | Tools | Share | Last seen |
|---|---|---|---|---|---|---|
| don.p@naturebaby.com | claude-opus-5100% | 1943 | 265.2M | 1614 | 48% | 6 Aug |
| Claudia.Z@naturebaby.com | claude-sonnet-5100% | 997 | 224.0M | 553 | 40% | 7 Aug |
| amy.w@naturebaby.com | – | 180 | 34.4M | 136 | 6% | 4 Aug |
| anna.t@naturebaby.com | – | 128 | 15.6M | 80 | 3% | 5 Aug |
| hengda.q@naturebaby.com | – | 61 | 7.3M | 53 | 1% | 5 Aug |
| james.o@naturebaby.com | claude-sonnet-5100% | 65 | 5.3M | 46 | 1% | 7 Aug |
| jacob@naturebaby.com | claude-sonnet-5100% | 17 | 1.4M | 7 | 0% | 5 Aug |
| isobel.a@naturebaby.com | – | 2 | 112.4k | 0 | 0% | 2 Aug |
Loads counted from telemetry, all time · badge shows total loads
sales-reporting-suite
9Zentempo sales and GP that reconcile with the weekly workbook. Use for sales cube, trade pack, WTD, MTD, YTD, GP%, AOV, ATV, orders, channel, store, AU or NZ splits, budget, LY.
3 seats · 5 this week · last 6 Aug
airtable-queries
6Query the Nature Baby Airtable base for sales, orders and line items. Use for any Airtable request covering revenue, gross profit, units, product group, style, SKU or freight.
3 seats · 2 this week · last 7 Aug
image-generator
5Generate and refine a product or flat-lay image, one at a time. Use for make an image, generate a flat-lay, mock up a garment, change the collar, or edit that image.
1 seat · 0 this week · last 31 Jul
outlook-email
4Read, search, draft and send Nature Baby email through Outlook. Use for email, inbox, sending a message, chasing a supplier, or finding an email thread.
3 seats · 2 this week · last 6 Aug
sell-through-report
1Update the weekly Sell Through Report incl. Carryover in Excel. Use for sell through, sell-through refresh, or the W26 Sell Through Report.
1 seat · 0 this week · last 28 Jul
staff-onboarding
1Build the induction pack for a new Nature Baby starter. Use for staff onboarding, induction plan, 90 day checklist, or a new starter meeting schedule.
1 seat · 0 this week · last 29 Jul
stock-levels
1Stock levels from Zentempo - rolling 4 and 12 week rate of sale, weeks of cover, replenishment list, promo candidates. Use for stock levels, cover, overstock, promo, replenish.
1 seat · 1 this week · last 5 Aug
weekly-sales-report-structure
1Build the formatted weekly Excel sales report from figures pulled by sales-reporting-suite. Use for weekly sales report, WE report, or trade pack workbook.
1 seat · 1 this week · last 2 Aug
capture-workflow
0Interview the user about a workflow and email James a write-up for the skill library. Use for capture this workflow, remember how I did this, make this a skill, teach Claude.
not used yet
competitor-pricing-scan
0Gather competitor RRP for pricing matrices from NZ and AU baby brands. Use for comp shop, competitor pricing, price review, RRP scan, Jamie Kay, Purebaby, Burrow and Be prices.
not used yet
executive-summary-report
0Update the weekly Nature Baby executive summary. Use for exec summary, Monday trade pack, NatureBabyExecutiveSalesSummary, or the weekly report.
not used yet
gots-tc-check
0Check a GOTS Transaction Certificate against the supplier packing list - styles, units, weights, categories. Use for GOTS, TC check, transaction certificate, customs packing list.
not used yet
inwards-and-shipping
0Build the seasonal master document covering store splits, supplier pricing and trims pricing. Use for master document, inwards and shipping, or seasonal master file.
not used yet
landed-cost-allocation
0Parse a freight slip, allocate freight and duty across a shipment, flag variance vs costed, prepare sign-off. Use for landed cost, freight split, allocation, shipment variance.
not used yet
monthly-freight-charges
0Summarise monthly freight from the Online Distribution NBL invoice files. Use for freight charges, NBL invoice, Online Distribution, monthly freight, landed cost, 3PL comparison.
not used yet
new-release-performance
0Track how a new season release is trading vs last year's release. Use for new release performance, release tracking, S26.27, release 1, how is the new release or season selling.
not used yet
nonapparel-sales
0Non-apparel reorder and sales from Zentempo - toys, nappies, skincare, bedding, gifts. Use for non-apparel, what to reorder, rate of sale, weeks of cover, stock, min max.
not used yet
packing-list-update
0Convert a supplier packing list (Excel or PDF) into the NB Packing List 8-column format, carton by carton, with store detection. Use for packing list conversion.
not used yet
store-kpi-targets
0Store KPIs from Zentempo store traffic - footfall, conversion rate, transactions, ATV by store. Use for store performance, conversion, traffic, footfall, ATV, store targets.
not used yet
Also loaded outside the library: morning-todo-brief (5) · xlsx (4) · outlook-todo-source (4) · workflow-folder-scan (4) · dataviz (3) · skill-creator (2) · pptx (1)
| Tool | Runs | Seats | Rejected | Failed | Avg |
|---|---|---|---|---|---|
| Bash | 328 | 7 | – | – | 3.2s |
| mcp_tool | 182 | 5 | – | – | 9.1s |
| Read | 118 | 5 | – | – | 0.1s |
| Edit | 109 | 4 | – | – | 0.0s |
| TaskUpdate | 56 | 4 | – | – | 0.0s |
| Write | 39 | 5 | 1 | – | 0.0s |
| ToolSearch | 34 | 5 | – | – | 0.0s |
| TaskCreate | 34 | 3 | – | – | 0.0s |
| SendUserFile | 32 | 6 | – | – | 0.7s |
| Skill | 23 | 4 | – | – | 0.0s |
534 runs across 7 seats · 3.0s avg
| Command | Runs | Seats | Failed | Avg |
|---|---|---|---|---|
| cd | 242 | 6 | – | 3.9s |
| python3 | 156 | 5 | – | 1.9s |
| ls | 26 | 4 | – | 5.3s |
| grep | 16 | 2 | – | 1.0s |
| find | 15 | 4 | – | 3.2s |
| mkdir | 14 | 6 | – | 2.4s |
| node | 12 | 1 | – | 2.7s |
| rm | 11 | 3 | – | 3.2s |
| pip | 8 | 3 | – | 2.9s |
| cat | 7 | 2 | – | 1.6s |
| head | 3 | 3 | – | 0.5s |
| sed | 3 | 2 | – | 0.4s |
Most recent
cd /home/claude/work && cp "Web Freight and distribution analysis FY26.xlsx" "Web Freight and distribution analysis FY26 (June update).xlsx"
Claudia.Z@naturebaby.com · 7 Aug
rm -rf /tmp/recalced4 && timeout 90 soffice --headless --convert-to xlsx:"Calc MS Excel 2007 XML" --outdir /tmp/recalced4 "/home/claude/work/Web Freight and distribution analysis FY26.xlsx" 2>&1 | tail -3 cd /tmp/recalced4 && python3 - <<'EOF' import openpyxl wb = openpyxl.load_workbook("Web Freight and distribution analysis FY26.xlsx", data_only=True) sh = wb["SH – June 2026"] print("SH Sales Budget: NZ",sh["C5"].value,"AU",sh["I5"].value,"HK",sh["O5"].value,"Total(U5)",sh["U5"].value) print("SH T5 (actual, should be unchanged 982133.71):", sh["T5"].value) print("SH GP after Dist (T21, should be unchanged 543425.09):", sh["T21"].value) print("SH COGS budget check: C8",round(sh["C8"].value,2),"I8",round(sh["I8"].value,2),"O8",round(sh["O8"].value,2)) usd = wb["NH – June 2026 USD"] print() print("NH-USD Sales Budget: USA",usd["C5"].value,"EU",usd["I5"].value,"UK",usd["O5"].value,"Total(U5)",usd["U5"].value) print("NH-USD T5 (actual, should be unchanged 55339.8):", usd["T5"].value) print("NH-USD T20 (GP after Dist, should be unchanged 28010.03):", usd["T20"].value) nzd = wb["NH – June 2026 NZD (0.58 FX)"] print() print("NH-NZD Sales Budget: USA",nzd["C5"].value,"EU",nzd["I5"].value,"UK",nzd["O5"].value,"Total(U5)",nzd["U5"].value) print("NH-NZD T21 (GP after Dist, should be unchanged ~48293.16):", nzd["T21"].value) print() print("Grand total budget check (SH U5 + NH-NZD U5):", sh["U5"].value + nzd["U5"].value, " expected 1251178") EOF
Claudia.Z@naturebaby.com · 7 Aug
cd /home/claude/work && python3 - <<'EOF' import openpyxl SRC = "Web Freight and distribution analysis FY26.xlsx" wb = openpyxl.load_workbook(SRC, data_only=False) sh = wb["SH – June 2026"] usd = wb["NH – June 2026 USD"] nzd = wb["NH – June 2026 NZD (0.58 FX)"] FX = 0.58 # ---------------- SH sheet: corrected June sales targets ---------------- sh_bud = {"NZ":636054.0, "AU":487188.0, "HK":2507.0} # was NZ 636051 / AU 487187 / HK 2509 sh_total = sum(sh_bud.values()) sh_share = {k: v/sh_total for k,v in sh_bud.items()} sh["C5"], sh["I5"], sh["O5"] = sh_bud["NZ"], sh_bud["AU"], sh_bud["HK"] sh["U5"] = sh_total # COGS (row8) and Local Freight (row14) budgets are proportional-by-sales-share -> recompute sh["C8"] = sh_total_budget_cogs = 348140.0 * sh_share["NZ"] sh["I8"] = 348140.0 * sh_share["AU"] sh["O8"] = 348140.0 * sh_share["HK"] sh["C14"] = 34983.0 * sh_share["NZ"] sh["I14"] = 34983.0 * sh_share["AU"] sh["O14"] = 34983.0 * sh_share["HK"] # Overseas Freight (row15) and Packaging/3PL/Storage (17-19) use fixed cost-driver ratios # (not sales-share), so they're unaffected by this correction — left as-is. # ---------------- NH sheet: corrected June sales targets ---------------- nh_bud_nzd = {"USA":104524.0, "EU":8362.0, "UK":12543.0} # was USA 104525 / EU 8363 / UK 12543 nh_total_nzd = sum(nh_bud_nzd.values()) nh_share = {k: v/nh_total_nzd for k,v in nh_bud_nzd.items()} # USD sheet — Sales row: exact conversion at 0.58 usd["C5"] = nh_bud_nzd["USA"] * FX usd["I5"] = nh_bud_nzd["EU"] * FX usd["O5"] = nh_bud_nzd["UK"] * FX usd["U5"] = nh_total_nzd * FX # USD sheet — expense-line budgets: recompute with corrected shares for row, total in [(8,21191.0/1.0)]: pass budget_totals = {8:21191.0, 14:3449.0, 15:1907.0, 16:180.0, 17:2119.0, 18:1144.0} for row, total in budget_totals.items(): usd[f"C{row}"] = f"=SUM($U${row}*{nh_share['USA']:.6f})" usd[f"I{row}"] = f"=SUM($U${row}*{nh_share['EU']:.6f})" usd[f"O{row}"] = f"=SUM($U${row}*{nh_share['UK']:.6f})" # NZD sheet — Sales row is a direct literal input (not cross-referenced), update directly nzd["C5"] = nh_bud_nzd["USA"] nzd["I5"] = nh_bud_nzd["EU"] nzd["O5"] = nh_bud_nzd["UK"] nzd["U5"] = nh_total_nzd # NZD sheet's other budget cells (C8,I8,O8 etc.) are cross-sheet formulas pulling from the USD sheet, # so they'll pick up the correction automatically once the USD sheet recalculates. wb.save(SRC) print("SH sales budget (NZD):", sh_bud, "total", sh_total) print("NH sales budget (NZD):", nh_bud_nzd, "total", nh_total_nzd) print("NH sales budget (USD):", {k: round(v*FX,2) for k,v in nh_bud_nzd.items()}, "total", round(nh_total_nzd*FX,2)) print("Saved.") EOF
Claudia.Z@naturebaby.com · 7 Aug
python3 - <<'EOF' sh_bud = {"NZ":636054.0, "AU":487188.0, "HK":2507.0} sh_total = sum(sh_bud.values()) sh_share = {k: v/sh_total for k,v in sh_bud.items()} print("SH total:", sh_total, "shares:", sh_share) nh_bud_nzd = {"USA":104524.0, "EU":8362.0, "UK":12543.0} nh_total = sum(nh_bud_nzd.values()) nh_share = {k: v/nh_total for k,v in nh_bud_nzd.items()} print("NH total NZD:", nh_total, "shares:", nh_share) print("Grand total:", sh_total+nh_total) FX=0.58 print("NH budget USD:", {k: round(v*FX,2) for k,v in nh_bud_nzd.items()}, "total USD:", round(nh_total*FX,2)) EOF
Claudia.Z@naturebaby.com · 7 Aug
cd /home/claude/work && cp "Web Freight and distribution analysis FY26.xlsx" "Web Freight and distribution analysis FY26 (June update).xlsx"
Claudia.Z@naturebaby.com · 7 Aug
rm -rf /tmp/recalced3 && timeout 90 soffice --headless --convert-to xlsx:"Calc MS Excel 2007 XML" --outdir /tmp/recalced3 "/home/claude/work/Web Freight and distribution analysis FY26.xlsx" 2>&1 | tail -3 cd /tmp/recalced3 && python3 - <<'EOF' import openpyxl wb = openpyxl.load_workbook("Web Freight and distribution analysis FY26.xlsx", data_only=True) for sheet in ["NH – June 2026 USD", "NH – June 2026 NZD (0.58 FX)"]: ws = wb[sheet] print("="*70, sheet) for row,label in [(8,"COGS"),(9,"Total COS"),(10,"GP after COGS (should stay blank/region)")]: vals = {col: ws[f"{col}{row}"].value for col in ["B","C","D","E","H","I","J","K","N","O","P","Q","T","U"]} print(label, vals) EOF
Claudia.Z@naturebaby.com · 7 Aug
cd /home/claude/work && python3 - <<'EOF' import openpyxl SRC = "Web Freight and distribution analysis FY26.xlsx" wb = openpyxl.load_workbook(SRC, data_only=False) usd = wb["NH – June 2026 USD"] nzd = wb["NH – June 2026 NZD (0.58 FX)"] FX = 0.58 # --- USD sheet: fill in EU COGS (derived from Claudia's combined Shopify pull) --- usd["H8"] = 1708.58 # EU = combined USA+EU+UK ($20,741.37) minus USA ($18,483.68) minus UK ($549.11) # Now that COGS actual is known for all three regions, restore region-level "Total Cost of Sales" # (row 9) — it only depends on COGS (row8), not Sales, so it's reliable again. usd["B9"] = "=SUM(B8)" usd["C9"] = "=SUM(C8)" usd["D9"] = '=IFERROR(B9-C9,"-")' usd["E9"] = '=IFERROR((B9-C9)/C9,"-")' usd["H9"] = "=SUM(H8)" usd["I9"] = "=SUM(I8)" usd["J9"] = '=IFERROR(H9-I9,"-")' usd["K9"] = '=IFERROR((H9-I9)/I9,"-")' usd["N9"] = "=SUM(N8)" usd["O9"] = "=SUM(O8)" usd["P9"] = '=IFERROR(N9-O9,"-")' usd["Q9"] = '=IFERROR((N9-O9)/O9,"-")' # Row 10/11 (GP after COGS / GP%) stay cleared at region level — still depend on Sales, which # remains unavailable by region. usd["AD8"] = ("USA/UK/EU COGS all sourced from Claudia's Shopify \"Cost of goods sold by order\" pulls " "(June 1-30, 2026): USA $18,483.68, UK $549.11, EU $1,708.58 (= combined USA+EU+UK total " "of $20,741.37 minus USA and UK). DATA DISCREPANCY: that Shopify combined total " "($20,741.37) does not match the accountant's Xero total for the combined Web branch " "($18,916.56, Budget Variance US tab, Jun 2026) — a gap of $1,824.81. The Total column " "(T8) here uses the Xero figure as the reconciled/authoritative number; the USA/EU/UK " "regional split above is on a Shopify billing-country basis and won't sum exactly to it.") # --- NZD sheet: mirror via cross-reference, and restore row 9 the same way --- nzd["H8"] = f"=SUM('NH – June 2026 USD'!H8)/{FX}" nzd["B9"] = "=SUM(B8)" nzd["C9"] = "=SUM(C8)" nzd["D9"] = '=IFERROR(B9-C9,"-")' nzd["E9"] = '=IFERROR((B9-C9)/C9,"-")' nzd["H9"] = "=SUM(H8)" nzd["I9"] = "=SUM(I8)" nzd["J9"] = '=IFERROR(H9-I9,"-")' nzd["K9"] = '=IFERROR((H9-I9)/I9,"-")' nzd["N9"] = "=SUM(N8)" nzd["O9"] = "=SUM(O8)" nzd["P9"] = '=IFERROR(N9-O9,"-")' nzd["Q9"] = '=IFERROR((N9-O9)/O9,"-")' nzd["AD8"] = ("See 'NH – June 2026 USD' row 8 note. EU COGS derived as combined USA+EU+UK Shopify " "total ($20,741.37) minus USA and UK. That Shopify combined total doesn't match the " "Xero total used for the Total column here — see note on the USD tab for the $1,824.81 gap.") wb.save(SRC) print("Updated EU COGS and restored region-level Total Cost of Sales.") EOF
Claudia.Z@naturebaby.com · 7 Aug
python3 - <<'EOF' diff = 20741.37 - 18483.68 - 549.11 print("EU COGS (Shopify-derived):", round(diff,2)) print("Shopify combined total (USA+EU+UK):", 20741.37) print("Xero/accountant combined total:", 18916.56) print("Gap:", round(20741.37-18916.56,2)) EOF
Claudia.Z@naturebaby.com · 7 Aug
cd /home/claude/work && cp "Web Freight and distribution analysis FY26.xlsx" "Web Freight and distribution analysis FY26 (June update).xlsx" && ls -la
Claudia.Z@naturebaby.com · 7 Aug
rm -rf /tmp/recalced2 && timeout 90 soffice --headless --convert-to xlsx:"Calc MS Excel 2007 XML" --outdir /tmp/recalced2 "/home/claude/work/Web Freight and distribution analysis FY26.xlsx" 2>&1 | tail -3 cd /tmp/recalced2 && python3 - <<'EOF' import openpyxl wb = openpyxl.load_workbook("Web Freight and distribution analysis FY26.xlsx", data_only=True) checks = [ ("SH – June 2026", "T5", 982133.71), ("SH – June 2026", "T10", 685150.04), ("SH – June 2026", "T21", 543425.09), ("SH – June 2026", "B21", 327041.73), ("SH – June 2026", "H21", 218382.63), ("SH – June 2026", "N21", 565.85), ("NH – June 2026 USD", "T5", 55339.80), ("NH – June 2026 USD", "T19", 8413.21), ("NH – June 2026 USD", "T20", 28010.03), ("NH – June 2026 NZD (0.58 FX)", "T20", 14505.53), ("NH – June 2026 NZD (0.58 FX)", "T21", 48293.16), ] ok = True for sheet, cell, expected in checks: v = wb[sheet][cell].value match = abs(v - expected) < 0.5 ok &= match print(f"{sheet} {cell}: {v} (expected ~{expected}) {'OK' if match else 'MISMATCH'}") print("ALL OK" if ok else "SOME MISMATCHES") EOF
Claudia.Z@naturebaby.com · 7 Aug
cd /home/claude/work && python3 - <<'EOF' import openpyxl wb = openpyxl.load_workbook("Web Freight and distribution analysis FY26.xlsx", data_only=False) for name in ["SH – June 2026", "NH – June 2026 NZD (0.58 FX)", "NH – June 2026 USD"]: ws = wb[name] print(name, "A1:", ws["A1"].value) sh = wb["SH – June 2026"] print("C30:", sh["C30"].value, "| C31:", sh["C31"].value) # clean up stray May-era scratch notes sh["C30"] = None sh["C31"] = None # quick formatting spot-check b5 = sh["B5"] print("B5 numfmt:", b5.number_format, "font size:", b5.font.size) b11 = sh["B11"] print("B11 numfmt:", b11.number_format) wb.save("Web Freight and distribution analysis FY26.xlsx") print("Saved final cleanup.") EOF
Claudia.Z@naturebaby.com · 7 Aug
rm -rf /tmp/recalced && timeout 90 soffice --headless --convert-to xlsx:"Calc MS Excel 2007 XML" --outdir /tmp/recalced "Web Freight and distribution analysis FY26.xlsx" 2>&1 | tail -3 cd /tmp/recalced && python3 - <<'EOF' import openpyxl wb = openpyxl.load_workbook("Web Freight and distribution analysis FY26.xlsx", data_only=True) print("### SH – June 2026 — full region check (Total row, key lines) ###") ws = wb["SH – June 2026"] for row,label in [(5,"Total Sales"),(9,"Total COS"),(10,"GP after COGS"),(20,"Total Dist Exp"),(21,"GP after Dist")]: vals = {col: ws[f"{col}{row}"].value for col in ["B","C","H","I","N","O","T","U"]} print(label, vals) print() print("### NH – June 2026 USD — key rows ###") ws = wb["NH – June 2026 USD"] for row,label in [(5,"Total Sales"),(8,"COGS"),(9,"Total COS"),(10,"GP after COGS"),(15,"Overseas Freight"),(19,"Total Dist Exp"),(20,"GP after Dist"),(21,"GP%")]: vals = {col: ws[f"{col}{row}"].value for col in ["B","C","H","I","N","O","T","U"]} print(label, vals) print() print("### NH – June 2026 NZD (0.58 FX) — key rows ###") ws = wb["NH – June 2026 NZD (0.58 FX)"] for row,label in [(5,"Total Sales"),(8,"COGS"),(9,"Total COS"),(10,"GP after COGS"),(11,"GP%"),(15,"Overseas Freight"),(20,"Total Dist Exp"),(21,"GP after Dist"),(22,"GP%")]: vals = {col: ws[f"{col}{row}"].value for col in ["B","C","H","I","N","O","T","U"]} print(label, vals) EOF
Claudia.Z@naturebaby.com · 7 Aug