Skip to content

feat: add SmartMoving CLI read-only MVP - #10

Open
MattyMailers wants to merge 18 commits into
mainfrom
feat/smartmoving-cli-mvp
Open

feat: add SmartMoving CLI read-only MVP#10
MattyMailers wants to merge 18 commits into
mainfrom
feat/smartmoving-cli-mvp

Conversation

@MattyMailers

Copy link
Copy Markdown
Owner

Summary

Adds an unofficial, read-only smartmoving CLI MVP alongside the existing SmartMoving MCP server so Matt can test SmartMoving API access from a terminal without going through an MCP client.

Commands added

smartmoving ping
smartmoving reference branches --json
smartmoving reference move-sizes --json
smartmoving customers get <customerId> --json
smartmoving leads list --page-size 25 --json
smartmoving opportunities get <opportunityId> --json
smartmoving jobs get <jobId> --opportunity-id <opportunityId> --json
smartmoving followups due --opportunity-id <opportunityId> --json

Package binary metadata now exposes both:

{
  "smartmoving-mcp-server": "dist/index.js",
  "smartmoving": "dist/cli.js"
}

Safety posture

  • Unofficial project for authorized SmartMoving External API users only.
  • CLI MVP is read-only; no create/update/delete/payment/attachment/job-closing commands are exposed.
  • SMARTMOVING_API_KEY is required through environment variables; API keys should not be passed as command arguments or committed.
  • CLI error formatting redacts key-like values.
  • Existing MCP write gates remain unchanged:
    • POST/PUT/PATCH require SMARTMOVING_ALLOW_WRITES=true.
    • DELETE requires both SMARTMOVING_ALLOW_WRITES=true and SMARTMOVING_ALLOW_DESTRUCTIVE=true.
  • No live SmartMoving API calls are used in tests.
  • Not published to npm from this PR.

Verification output

Ran from mcp-server/:

$ npm run verify && npm pack --dry-run

> smartmoving-mcp-server@0.1.0 verify
> npm run build && npm test && npm audit --audit-level=high

> smartmoving-mcp-server@0.1.0 build
> tsc

> smartmoving-mcp-server@0.1.0 test
> vitest run

 RUN  v4.1.9 /Users/matthewyoung/.hermes/plugins/smartmoving-mcp/smartmoving-api/mcp-server

 ✓ src/client.test.ts (5 tests) 15ms
 ✓ src/cli.test.ts (7 tests) 793ms

 Test Files  2 passed (2)
      Tests  12 passed (12)
   Start at  04:13:13
   Duration  904ms (transform 38ms, setup 0ms, import 59ms, tests 807ms, environment 0ms)

# npm audit report

esbuild  0.27.3 - 0.28.0
esbuild allows arbitrary file read when running the development server on Windows - https://github.com/advisories/GHSA-g7r4-m6w7-qqqr
fix available via `npm audit fix`
node_modules/esbuild

1 low severity vulnerability

To address all issues, run:
  npm audit fix

npm notice 📦  smartmoving-mcp-server@0.1.0
npm notice filename: smartmoving-mcp-server-0.1.0.tgz
npm notice package size: 37.4 kB
npm notice unpacked size: 242.3 kB
npm notice total files: 59
smartmoving-mcp-server-0.1.0.tgz

npm audit --audit-level=high exited successfully; the reported esbuild advisory is low severity.

Also checked CLI help locally:

$ node dist/cli.js --help
Usage: smartmoving [options] [command]

Read-only CLI for the SmartMoving External API v1

Options:
  -V, --version   output the version number
  -h, --help      display help for command

Commands:
  ping [options]  Verify SmartMoving API connectivity and authentication.
  reference       Read SmartMoving reference data.
  customers       Read customer records.
  leads           Read lead records.
  opportunities   Read opportunity records.
  jobs            Read job records.
  followups       Read follow-up records.
  help [command]  display help for command

How Matt can test locally

From the existing checkout:

cd /Users/matthewyoung/.hermes/plugins/smartmoving-mcp/smartmoving-api/mcp-server
npm install
npm run build
export SMARTMOVING_API_KEY="replace-with-your-key"
export SMARTMOVING_ALLOW_WRITES="false"
node dist/cli.js --help
node dist/cli.js ping
node dist/cli.js reference branches --json
node dist/cli.js reference move-sizes --json
node dist/cli.js leads list --page-size 10 --json

If testing IDs from a real authorized account:

node dist/cli.js customers get CUSTOMER_UUID --json
node dist/cli.js opportunities get OPPORTUNITY_UUID --json
node dist/cli.js jobs get JOB_UUID --opportunity-id OPPORTUNITY_UUID --json
node dist/cli.js followups due --opportunity-id OPPORTUNITY_UUID --json

Future npx usage after maintainers choose to publish may look like:

SMARTMOVING_API_KEY="replace-with-your-key" npx -y --package smartmoving-mcp-server smartmoving ping

Deferred intentionally

  • npm publishing.
  • Write commands.
  • Destructive commands.
  • Full CLI coverage for all 62 MCP tools.
  • Live SmartMoving API tests in CI.
  • A separate smartmoving-cli package.

@MattyMailers

Copy link
Copy Markdown
Owner Author

Added the SmartMoving CLI epic roadmap and future loop plans to the repo.

New docs:

  • docs/CLI-EPIC-ROADMAP.md
  • docs/plans/01-cli-init-doctor.md
  • docs/plans/02-cli-schema-and-registry.md
  • docs/plans/03-cli-read-tools.md
  • docs/plans/04-cli-write-tools.md
  • docs/plans/05-cli-destructive-safety.md
  • docs/plans/06-agent-ux.md
  • docs/plans/07-docs-site-and-command-index.md
  • docs/plans/08-packaging-release-smoke.md
  • docs/plans/09-power-features.md

Also updated docs/ROADMAP.md to point to the CLI roadmap and loop plans.

Verification:

  • git diff --check: passed
  • npm run build: passed
  • npm test: 12 passed

This lays out init, doctor, schema --json, shared MCP/CLI registry, all 62 tools in CLI, write/destructive safety gates, agent UX, docs generation, packaging, smoke tests, and later power features.

@MattyMailers

Copy link
Copy Markdown
Owner Author

Starting the scheduled CLI implementation loop now.

Cadence: 8 one-shot loops, 18 minutes apart, all targeting this PR/branch.

Plan:

  1. init/doctor/output contract
  2. schema + shared operation registry
  3. generated/read-only CLI tool coverage
  4. write tool safety gates
  5. destructive safety gates
  6. agent UX
  7. docs + command index
  8. packaging/release smoke checks

Guardrails for every loop:

  • do not merge or push main
  • commit only passing changes
  • run build/tests before push
  • keep default read-only safety
  • never store raw SmartMoving API keys
  • comment back here with verification or blockers

@MattyMailers

Copy link
Copy Markdown
Owner Author

Avery loop 1 update:

Implemented bounded CLI init/doctor work from docs/plans/01-cli-init-doctor.md on feat/smartmoving-cli-mvp.

What changed:

  • Added smartmoving init with profile/base URL/API-key-env config writing to ~/.config/smartmoving/config.json (or SMARTMOVING_CONFIG_PATH) without storing raw API keys.
  • Added smartmoving doctor --json with checks for Node/package/config/profile/API key/base URL/API ping/safety flags/MCP binary and stable JSON error output for missing auth.
  • Added smartmoving mcp config --print-hermes|--print-claude|--print-json snippets that reference env vars only.
  • Added global CLI options (--json, --plain, --quiet, --verbose, --no-color, --profile) and updated CLI/agent-install docs.
  • Added mocked Vitest coverage for config writing, doctor missing-key JSON, successful mocked ping, redaction, and MCP config output.

Verification run from mcp-server/:

  • npm run build
  • npm test ✅ (17 tests)
  • node dist/cli.js --help
  • env -u SMARTMOVING_API_KEY SMARTMOVING_CONFIG_PATH=/tmp/nonexistent-smartmoving-cli-config.json node dist/cli.js doctor --json ✅ (expected exit 1 for missing config/key)
  • node dist/cli.js mcp config --print-json
  • npm pack --dry-run

Commit pushed: 0ab14f4 feat: add SmartMoving CLI init and doctor

Note: local working tree still has an unrelated untracked .hermes/ directory; I did not add or modify it.

@MattyMailers

Copy link
Copy Markdown
Owner Author

Loop 2 update pushed in 6c70f58 (feat: add SmartMoving CLI schema contract).

Changes:

  • Added src/operations/ registry types and metadata for all 62 existing MCP tools.
  • Added registry tests for operation count, uniqueness, group/safety validity, and write/destructive labeling.
  • Added smartmoving schema --json plus --group and --safety filters, wired through register-cli.
  • Routed MCP tool registration through register-mcp while preserving the existing tool modules/behavior/names.
  • Updated CLI docs with schema command examples and clarified that executable CLI commands are still the smaller read-only MVP.

Verification run from mcp-server/:

  • npm run build
  • npm test ✅ — 3 files, 24 tests passed
  • node dist/cli.js schema --json ✅ — returned { ok: true, version: "0.1.0", operations: 62 }; destructive labels: delete_job, remove_inventory_item, delete_followup
  • npm pack --dry-run ✅ — package includes new dist/operations/*
  • npm audit --audit-level=high ✅ exits 0; npm reports 1 low-severity esbuild advisory only

Notes:

  • No secrets or env files touched.
  • Existing MCP tool implementations remain the execution path; registry handlers are metadata placeholders for now so behavior is preserved.
  • Local working tree is clean except pre-existing untracked .hermes/.

@MattyMailers

Copy link
Copy Markdown
Owner Author

Loop 3 update (Avery): implemented the read-only CLI command coverage from docs/plans/03-cli-read-tools.md.

What changed:

  • Added executable read-only CLI commands for customers, leads, opportunities, jobs, inventory, follow-ups, and reference data.
  • Added reference all --json aggregate read command.
  • Added read-command output wrapping for --json: { "ok": true, "data": ... } and stable { "ok": false, "error": ... } read failures with API-key redaction.
  • Added per-read command --json, --plain, --quiet, and --verbose options.
  • Updated operation registry CLI command names for the new read command surface.
  • Updated docs/CLI.md with the expanded command catalog and JSON contract.
  • Added mocked CLI tests for representative endpoint method/path/query coverage across the read command set.

Verification run from mcp-server/:

  • npm run build
  • npm test ✅ — 3 test files, 53 tests passed
  • npm run verify ✅ — build + tests + audit completed; audit reports 1 low-severity esbuild advisory, below the configured high threshold
  • node dist/cli.js schema --json ✅ — 62 operations, 35 read commands
  • node dist/cli.js customers list --help ✅ — shows pagination/filter/read output options
  • env SMARTMOVING_API_KEY=*** dist/cli.js customers list --json ✅ — exits 1 with stable JSON missing-key error

Safety notes:

  • No write/destructive CLI commands were added.
  • No main merge was performed.
  • A read-only ping --json smoke call succeeded while verifying built CLI output; no destructive/live mutation calls were made.

Pushed commit: 82d26f5 feat: expose read-only SmartMoving CLI commands.

@MattyMailers

Copy link
Copy Markdown
Owner Author

Loop 4 update (Avery): implemented guarded SmartMoving CLI write commands on feat/smartmoving-cli-mvp.

What changed:

  • Added guarded non-destructive CLI write commands for customers, leads, opportunities, follow-ups, job notes, and communication logs.
  • Writes are blocked by default with stable JSON WRITES_DISABLED output and no HTTP request.
  • SMARTMOVING_ALLOW_WRITES=true or top-level --allow-writes is required before write commands proceed.
  • Write commands dry-run by default; real mocked writes require --yes.
  • Added --input <file.json>, --input -, --dry-run, --yes, and --idempotency-key support where applicable.
  • Updated CLI docs and best-practices safety guidance.
  • Updated operation registry command names for the newly executable write commands.

Tests / verification run locally from mcp-server/:

  • npm run build
  • npm test ✅ — 58 tests passed
  • node dist/cli.js schema --json ✅ — schema true, 62 operations
  • npm pack --dry-run

Safety notes:

  • No live SmartMoving writes were performed; tests use a mocked local HTTP server.
  • API keys remain env-only and error output is covered by redaction tests.
  • Destructive CLI commands were intentionally not added.

Pushed commit: bcaf72d feat: add guarded SmartMoving CLI write commands.

Current PR check state when I looked: mcp-server queued; merge state blocked pending checks.

@MattyMailers

Copy link
Copy Markdown
Owner Author

Loop 5 update: destructive/high-risk CLI safety gates are implemented and pushed in 27ec051.

What changed:

  • Added CLI destructive commands:
    • smartmoving followups delete <followupId> --opportunity-id <opportunityId>
    • smartmoving jobs delete <jobId> --opportunity-id <opportunityId>
    • smartmoving inventory remove-item <itemId> --opportunity-id <opportunityId> --room-id <roomId>
  • Added high-risk non-delete CLI commands with dry-run support:
    • jobs confirm
    • leads convert
    • inventory submit-review
    • jobs stops update
    • jobs materials add
    • opportunities attachments add
    • opportunities rooms create
  • Destructive commands now require all gates for real execution: SMARTMOVING_ALLOW_WRITES=true, SMARTMOVING_ALLOW_DESTRUCTIVE=true, and --yes.
  • --dry-run remains non-mutating and does not call the HTTP client.
  • Updated schema registry command names and docs/README safety guidance.
  • Added mocked tests for destructive blocking/default behavior, no-prompt JSON mode coverage through command execution, dry-run no-HTTP behavior, high-risk write gating, schema safety levels, and sensitive API-key redaction coverage remains in place.

Verification run locally from mcp-server/:

  • npm run build
  • npm test ✅ — 62 tests passed
  • node dist/cli.js schema --json ✅ — 62 operations, destructive CLI commands: jobs delete, inventory remove-item, followups delete
  • npm pack --dry-run

No live destructive SmartMoving API calls were made; all safety tests used mocked HTTP servers.

@MattyMailers

Copy link
Copy Markdown
Owner Author

Loop 6 update: implemented the agent-friendly CLI UX layer from docs/plans/06-agent-ux.md.

What changed:

  • Added smartmoving agent safety --json, agent examples --json, agent prompt --workflow ..., and agent quickstart --print-hermes/--print-claude.
  • Added --wrap-untrusted for read JSON commands so CRM free text can be wrapped as { ok, source: "smartmoving", untrusted: true, data } for safer agent prompting.
  • Added schema agentGuidance so smartmoving schema --json advertises doctor/schema-first usage, read-only-first behavior, secret handling, and untrusted-content handling.
  • Added CLI tests for the agent commands, quickstart secret safety, schema guidance, and wrapped untrusted output.
  • Added docs and a SmartMoving agent skill at .agents/skills/smartmoving/SKILL.md.

Verification run from mcp-server/:

  • npm run build
  • npm test ✅ — 68 tests passed
  • node dist/cli.js agent safety --json
  • node dist/cli.js agent examples --json
  • node dist/cli.js schema --json
  • npm pack --dry-run

Pushed commit: a0dccb8 feat: add SmartMoving CLI agent workflows

Note: local repo still has an untracked .hermes/ planning directory from prior work; I did not add or modify it in this commit.

@MattyMailers

Copy link
Copy Markdown
Owner Author

Loop 7 update pushed in 3fa5b71 (docs: add generated CLI command index).

What changed:

  • Added smartmoving docs generate backed by the shared operation registry/schema.
  • Generated docs/commands/README.md plus 62 per-command Markdown pages grouped by area with safety level, examples, JSON notes, related MCP tool, and failure modes.
  • Added docs/SAFETY-PROFILES.md covering read-only, dry-run, guarded-write, and destructive-operation modes.
  • Updated README.md, docs/README.md, docs/CLI.md, docs/AUTHENTICATION.md, docs/AGENT-INSTALL.md, and mcp-server/README.md to point at generated command docs and safety profiles.
  • Added a regression test proving docs generation runs, is deterministic, includes safety/examples/MCP mapping, and does not leak a test API key.

Verification run from mcp-server/:

  • npm run build
  • npm test ✅ — 69 tests passed
  • node dist/cli.js docs generate --json ✅ — wrote 63 files
  • node dist/cli.js schema --json
  • npm pack --dry-run
  • git diff --check

CI note: gh pr checks 10 --watch --fail-fast currently reports no checks on the branch.

@MattyMailers

Copy link
Copy Markdown
Owner Author

Loop 8 packaging/release smoke update pushed: 00ce806 (chore: harden SmartMoving CLI release workflow).

What changed:

  • Added smartmoving smoke CLI commands:
    • smartmoving smoke read --json calls /api/ping.
    • smartmoving smoke write --dry-run --json prints a synthetic write request without calling SmartMoving.
    • smartmoving smoke live --read-only --json is opt-in and requires SMARTMOVING_LIVE_TESTS=true.
  • Added mocked tests for package bins, npm pack --dry-run contents, smoke read/write/live gates, and package docs safety language.
  • Confirmed package metadata exposes both binaries: smartmoving and smartmoving-mcp-server, with a files whitelist still limited to dist, README.md, and NOTICE.md.
  • Updated CI to run npm pack --dry-run after npm run verify.
  • Added/updated release and install docs: docs/RELEASE.md, docs/LIVE-TESTING.md, root README, package README, and CLI docs.

Verification run locally from mcp-server/:

  • npm run build
  • npm test ✅ — 75 tests passed
  • npm audit --audit-level=high ✅ — no high vulnerabilities; npm reported one existing low esbuild advisory
  • npm pack --dry-run ✅ — package includes intended dist, README.md, NOTICE.md, and package.json surfaces; total files reported: 95
  • node dist/cli.js smoke write --dry-run --json
  • node dist/cli.js schema --json sanity check ✅ — 62 operations

PR checks note:

  • gh pr checks 10 --watch --fail-fast returned: no checks reported on the 'feat/smartmoving-cli-mvp' branch.

Remaining blockers / not done by design:

  • Did not publish to npm.
  • Did not tag, merge, or touch main.
  • Did not run live SmartMoving tests because they require explicit SMARTMOVING_LIVE_TESTS=true and an authorized account context.

@MattyMailers

Copy link
Copy Markdown
Owner Author

Kicking off the docs/site/onboarding/npm-prep loop now.

Schedule:

  • Loop A, 7:05 PM MDT: Astro/Starlight docs site scaffold
  • Loop B, 7:25 PM MDT: agent docs, command refs, llms.txt/schema.json
  • Loop C, 7:45 PM MDT: fresh onboarding smoke from packed tarball
  • Loop D, 8:05 PM MDT: Vercel preview/build prep + npm publish dry-run

Guardrails:

  • no npm publish until Matt explicitly approves
  • no main merge
  • no live writes/destructive SmartMoving calls
  • no raw API keys or customer data in logs/docs
  • keep unofficial/non-affiliation and safety gates prominent

Plan doc: docs/plans/10-doc-site-onboarding-npm-launch.md

@MattyMailers

Copy link
Copy Markdown
Owner Author

Loop A complete: Astro/Starlight docs site scaffold.

Summary:

  • Added site/ static Astro + Starlight docs app.
  • Added required docs pages: home, quickstart, install, MCP setup, CLI docs, AI agents, safety model, live testing, and commands index.
  • Home hero emphasizes the unofficial SmartMoving MCP + CLI, 62 operations, read-only defaults, and agent-ready schema.
  • Install/quickstart CTAs include the future one-line npm install path while preserving the no-publish guardrail.
  • Added site/.astro/ and site/dist/ ignores so generated build output stays out of git.

Verification run locally:

  • cd site && npm install
  • cd site && npm run build
  • cd site && npm audit --audit-level=high ✅ (only low-severity advisories remain from Astro/esbuild dev-server advisory chain)
  • cd mcp-server && npm run build && npm test ✅ — 75 tests passed

Guardrails observed:

  • Did not publish npm.
  • Did not merge or push main.
  • Did not run live writes or destructive calls.
  • Used placeholders only; no secrets/customer data added.

Commit pushed to feat/smartmoving-cli-mvp: e92f460 (docs: scaffold SmartMoving docs site).

@MattyMailers

Copy link
Copy Markdown
Owner Author

Loop B update pushed in 4866ba1 (docs: add agent command references).

What changed:

  • Added agent-readable public files:
    • site/public/llms.txt
    • site/public/llms-full.txt
    • site/public/schema.json
  • Generated schema.json from node mcp-server/dist/cli.js schema --json; verified it contains 62 operations.
  • Added generated Starlight command reference pages grouped by customers, leads, opportunities, jobs, inventory, followups, communication, and reference.
  • Added agent setup pages for Hermes Agent, Claude Desktop, and Cursor/generic MCP clients.
  • Updated docs navigation and the command index to emphasize the safety gates:
    • reads by default
    • writes require SMARTMOVING_ALLOW_WRITES=true or --allow-writes
    • destructive operations require SMARTMOVING_ALLOW_DESTRUCTIVE=true plus explicit confirmation

Verification run:

  • cd mcp-server && npm install && npm run build && node dist/cli.js schema --json ✅ produced 62 operations
  • node scripts/generate-site-agent-docs.mjs ✅ generated llms/schema/command docs
  • cd site && npm install && npm run build ✅ built 83 static pages
  • cd mcp-server && npm run verify ✅ build + 75 tests + high audit passed
  • GitHub PR check mcp-server ✅ passed

Guardrails followed: no npm publish, no merge, no push to main, no live writes/destructive calls, no secrets or customer data added.

@MattyMailers

Copy link
Copy Markdown
Owner Author

Loop C onboarding smoke is complete and pushed in 6100a43.

What changed:

  • Added docs/ONBOARDING-SMOKE-REPORT.md with the fresh-install smoke results.

Smoke covered:

  • Packed mcp-server into smartmoving-mcp-server-0.1.0.tgz.
  • Installed the tarball into an isolated temp npm prefix/HOME.
  • Ran smartmoving --help successfully.
  • Ran smartmoving schema --json and asserted 62 operations.
  • Ran smartmoving init --yes against a temp config path and verified no raw key material was stored.
  • Ran doctor --json with a fake key, verified safe failure and no fake key leakage.
  • A real SMARTMOVING_API_KEY was present; only the read-only doctor --json ping was run, passed, and output was checked for key leakage.

Verification:

  • cd mcp-server && npm run verify
  • cd mcp-server && npm run build && npm test && npm pack --dry-run
  • cd site && npm run build
  • PR check mcp-server passed ✅

Guardrails respected: no npm publish, no merge/main push, and no write/destructive SmartMoving calls.

@MattyMailers

Copy link
Copy Markdown
Owner Author

Docs/onboarding loop D update:

Smoke-tested the production alias with curl -L:

Route Result
/ 200, homepage title SmartMoving MCP + CLI
/quickstart/ 200, title Quickstart
/commands/ 200, title Commands index
/llms.txt 200
/schema.json 200

Build/readiness checks run:

  • site/: npm ci && npm run build
  • site/: vercel pull --yes && vercel build --prod && vercel deploy --prebuilt --prod --yes
  • mcp-server/: npm ci && npm run build
  • mcp-server/: npm run verify ✅ — TypeScript build, 75 Vitest tests passing, high-severity audit gate passed. npm audit reports 1 low-severity esbuild advisory.
  • mcp-server/: npm pack --dry-run ✅ — package smartmoving-mcp-server@0.1.0, 95 files, ~71.5 kB packed / ~446.3 kB unpacked.
  • mcp-server/: npm publish --dry-run ✅ — dry-run completed; npm warned this machine is not logged into npm, but no package publish was performed.

Remaining manual approval steps before public release:

  1. Approve actual npm publish (not done per guardrail).
  2. Approve any release tag creation (not done).
  3. Approve merge of PR feat: add SmartMoving CLI read-only MVP #10 when ready (not done).
  4. Optionally attach a custom docs domain in Vercel later; none was attached in this run.

@MattyMailers

Copy link
Copy Markdown
Owner Author

CI follow-up: PR #10 mcp-server GitHub Actions check is now passing on commit c6a8b3b.

@MattyMailers

Copy link
Copy Markdown
Owner Author

Final docs deployment verification complete.

Production docs URL:

Vercel deployment verified:

  • Project: smartmoving-mcp-docs
  • Deployment: https://smartmoving-mcp-docs-nldo09uci-matt-youngs-projects-5c09c630.vercel.app
  • Inspect showed target: production, status: Ready, and alias https://smartmoving-mcp-docs.vercel.app.

Verification commands run:

  • git fetch origin && git pull --ff-only origin feat/smartmoving-cli-mvp
  • cd site && npm run build
  • cd mcp-server && npm run build && npm test && npm pack --dry-run && npm publish --dry-run
  • cd site && vercel build --prod && vercel deploy --prebuilt --prod --yes
  • vercel inspect https://smartmoving-mcp-docs-nldo09uci-matt-youngs-projects-5c09c630.vercel.app
  • curl -L checks against the production alias for /, /quickstart/, /install/, /mcp-setup/, /commands/, /llms.txt, and /schema.json.

Results:

  • Site build: passed; Astro built 83 pages.
  • MCP server build: passed.
  • Tests: passed; 75 tests across 3 files.
  • npm pack --dry-run: passed; package contains intended dist, README.md, and NOTICE.md surfaces.
  • npm publish --dry-run: passed; dry-run only, no npm publish performed.
  • Production route checks: all required URLs returned HTTP 200.
  • Homepage copy checks: confirmed unofficial/non-affiliation language, 62 operations, and read-only by default copy on the live production alias.

Small fix pushed:

  • Commit 6691059 (docs: clarify read-only default homepage copy) changed the homepage phrase from read-only-by-default to read-only by default so the live copy matches the release checklist exactly.

Remaining manual step:

  • Matt approval for actual npm publish. I did not publish npm, merge the PR, push main, attach a custom domain, or perform any SmartMoving write/destructive calls.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant