Claude Organization

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.

SeatModelCallsTokensToolsShareLast seen
don.p@naturebaby.comclaude-opus-5100%1943265.2M161448%6 Aug
Claudia.Z@naturebaby.comclaude-sonnet-5100%997224.0M55340%7 Aug
amy.w@naturebaby.com18034.4M1366%4 Aug
anna.t@naturebaby.com12815.6M803%5 Aug
hengda.q@naturebaby.com617.3M531%5 Aug
james.o@naturebaby.comclaude-sonnet-5100%655.3M461%7 Aug
jacob@naturebaby.comclaude-sonnet-5100%171.4M70%5 Aug
isobel.a@naturebaby.com2112.4k00%2 Aug

Skill library · 19 skills

Loads counted from telemetry, all time · badge shows total loads

sales-reporting-suite

9

Zentempo 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

6

Query 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

5

Generate 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

4

Read, 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

1

Update 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

1

Build 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

1

Stock 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

1

Build 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

0

Interview 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

0

Gather 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

0

Update the weekly Nature Baby executive summary. Use for exec summary, Monday trade pack, NatureBabyExecutiveSalesSummary, or the weekly report.

not used yet

gots-tc-check

0

Check 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

0

Build 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

0

Parse 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

0

Summarise 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

0

Track 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

0

Non-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

0

Convert 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

0

Store 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)

What they run · 7 days

ToolRunsSeatsRejectedFailedAvg
Bash32873.2s
mcp_tool18259.1s
Read11850.1s
Edit10940.0s
TaskUpdate5640.0s
Write39510.0s
ToolSearch3450.0s
TaskCreate3430.0s
SendUserFile3260.7s
Skill2340.0s

Bash calls · 7 days

534 runs across 7 seats · 3.0s avg

CommandRunsSeatsFailedAvg
cd24263.9s
python315651.9s
ls2645.3s
grep1621.0s
find1543.2s
mkdir1462.4s
node1212.7s
rm1133.2s
pip832.9s
cat721.6s
head330.5s
sed320.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