agentsclimarketplace

Artifacts beam

Skill JeffreySun/artifacts-beam/plugins/artifacts-beam/skills/artifacts-beam

Publish HTML artifacts to Artifacts Beam (https://artibeam.ai), create revocable share links anyone can open, open artifacts for review, and iterate on the HTML based on collaborator comments. Artifacts Beam is the CONSUMER edition: personal Microsoft/Google sign-in, no Azure AD required. WHEN: 'publish to artifacts beam', 'upload this html to artifacts beam', 'share this mockup', 'create a share link', 'send my page for review', 'get a public link', 'fetch artifacts beam comments', 'apply the review feedback', 'iterate on the comments', 'open my artifact', 'change artifact privacy', 'reply to the comment', 'tag the artifact', 'revoke a share link'.From its SKILL.md

Install
npx -y skills add JeffreySun/artifacts-beam --skill artifacts-beam

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 21 days oldThe repository was created 21 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its file declares

Copied from the file, not written here

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

10.7 KB, ~2.6k tokens by cl100k_base, as published. Nobody here has run it

Artifacts Beam

A skill for publishing HTML artifacts to Artifacts Beam, the consumer edition of the review platform. Create revocable share links anyone can open, gather comments from collaborators, and close the loop by refining the HTML — all signed in with a personal Microsoft (or Google) account, no corporate Azure AD needed.

This skill is agent-agnostic: every action runs through the portable, zero- dependency Node helper at scripts/abeam.mjs. The same helper backs the Copilot CLI, Codex, and Claude versions of this skill — only this wrapper differs.

Authentication model (read this first)

Artifacts Beam authenticates every API call with an opaque browser session cookie, not a bearer token — there is no az login / service-principal path. So the one-time setup step is capturing the session cookie from a browser sign-in, which the helper then stores in a local cookie jar and reuses. See Setup below.

Sign-in is a personal Microsoft or Google account. No corporate directory, IT approval, or admin consent is involved.

Triggers

Activate when the user says:

  • "publish this to Artifacts Beam" / "upload my html for review"
  • "create a share link" / "give me a link anyone can open" / "share this mockup"
  • "what comments do I have?" / "fetch the Artifacts Beam feedback"
  • "apply the comments" / "iterate based on the review" / "make a new version"
  • "make this artifact public/private" / "revoke that share link" / "tag this artifact"

Do not activate for general local HTML editing with no Artifacts Beam intent.


Setup check (always do this first)

node scripts/abeam.mjs whoami
  • Prints your email → you're signed in; continue.
  • "Not signed in" (exit code 2) → run the one-time sign-in below.

One-time sign-in (capture the session cookie)

Artifacts Beam issues an opaque, HttpOnly session cookie after an interactive sign-in; the CLI cannot perform the browser OAuth dance itself, so capture the cookie once (it lasts ~7 days of activity, 30 days max):

node scripts/abeam.mjs login            # opens the sign-in page + prints steps
# …sign in, copy the '__Host-ab_session' cookie from DevTools, then:
node scripts/abeam.mjs login --cookie "<paste-the-value>"

login --cookie validates the cookie against /api/auth/me and reports the signed-in account. Full walkthrough (with the DevTools path and a browser-assisted option): references/auth-setup.md.

The session is stored at ~/.artifactsbeam/session.json (mode 600). Never print or commit it. node scripts/abeam.mjs logout revokes it server-side and deletes it.


Workflow A — Publish an artifact

Goal: the user has a local HTML file and wants it on Artifacts Beam.

  1. Identify the file. If unspecified, ask once (suggest the most recently modified .html in the workspace). Reject non-HTML with a clear message.
  2. Upload:
    node scripts/abeam.mjs publish "<file.html>" --open
    
    The server auto-versions by display name + owner: re-publishing the same filename adds a new version of the same artifact — no need to track the id.
  3. Read the result (printed as JSON): spec.specId, spec.displayName, version.versionNumber, wasExistingSpec, and detailUrl.
  4. Tell the user:
    • new: "Published '{displayName}' (v1). Opened in browser."
    • existing: "Added as v{N} of '{displayName}'. Opened in browser."
    • Always include the URL.

Pass --review to make the opened URL land directly on the comment panel.


Workflow B — Create a share link (the headline consumer feature)

Goal: the user wants a link they can paste into email/chat that anyone can open — no sign-in required for the viewer.

# View-only, never expires:
node scripts/abeam.mjs share-create <specId> --permission view

# Commentable, expires in 7 days, passcode-protected:
node scripts/abeam.mjs share-create <specId> --permission comment --expires-days 7 --passcode hunter2
  • Copy the URL immediately — the server returns the full https://…/s/{token} once and never re-displays it (only a hash is stored). Surface it to the user verbatim.
  • --permission: view (read-only) or comment (viewer can sign in to comment).
  • --expires-days: omit for "never expires".
  • --passcode: optional; the viewer must enter it to open.

Manage existing links:

node scripts/abeam.mjs share-list <specId>          # list (URLs are not re-shown)
node scripts/abeam.mjs share-revoke <specId> <shareId>

Tell the user clearly when a link is commentable vs view-only, whether it has a passcode, and when it expires. Always remind them the URL can't be retrieved again — if lost, revoke and create a new one.


Workflow C — Iterate on collaborator feedback

Goal: read open comments on a published artifact and refine the local HTML to address them, then upload a new version. This is the high-value loop — go carefully.

C.1 — Identify the artifact

  • A detail URL → extract specId from …/#/specs/<id>.
  • A name → node scripts/abeam.mjs list "<name>" and confirm the match.
  • Confirm: "Iterating on '{displayName}', currently v{latestVersionNumber}. Continue?"

C.2 — Get the local file

The user points at their working copy, or download the latest as the starting point:

node scripts/abeam.mjs content <specId> --out ./working-copy.html

C.3 — Fetch open comments

node scripts/abeam.mjs comments <specId> --filter open

Each comment carries anchor data (text, selectedText, anchorSelector, selectionContextBefore/After, versionNumberAuthored, replies). If there are zero open comments, say so and stop.

C.4 — Plan, then apply

Summarize the comments and ask which to apply (all / a subset). For each accepted comment, you do the rewrite — use anchorSelector + selectedText to locate the spot. See references/refinement-guide.md for anchor-resolution heuristics and editing rules (surgical edits, preserve <head> and indentation, never rewrite unrelated regions).

C.5 — Show the diff, then upload

Show a unified diff and get confirmation before uploading:

node scripts/abeam.mjs publish ./working-copy.html

C.6 — Reply to addressed comments (recommended)

Leave a short reply so reviewers see what changed (better than silently resolving):

node scripts/abeam.mjs reply <specId> <commentId> "Addressed in v{N}."

Only resolve if the user explicitly asks:

node scripts/abeam.mjs comment-state <specId> <commentId> resolved

C.7 — Reopen for review

node scripts/abeam.mjs open <specId> --version <N> --review

Report: "Uploaded as v{N}. {K} comments addressed (replied), {M} left open."


Workflow D — Manage privacy

node scripts/abeam.mjs privacy-get <specId>
node scripts/abeam.mjs privacy-set <specId> public     # or: private
  • private — only you (the owner) can open it while signed in.
  • public — any signed-in Artifacts Beam user can open it.
  • For "anyone with the link, no account" sharing, use share links (Workflow B), not public.

Owner-only; non-owners get HTTP 403.


Workflow E — Tags

node scripts/abeam.mjs tags-get <specId>
node scripts/abeam.mjs tags-set <specId> "mockup,q2,pre-sale"   # replaces the whole set; "" clears
node scripts/abeam.mjs tags-all                                  # vocabulary + counts
node scripts/abeam.mjs list "" --tag mockup,q2                   # find by tag (AND)

Owner-only edit. The server normalizes (lowercase/trim/dedupe) and caps at 15 tags × 32 chars. tags-set replaces — to add one, read current, append, set the union.


Workflow F — Delete

node scripts/abeam.mjs delete-version <specId> <n> --yes   # one version
node scripts/abeam.mjs delete <specId> --yes               # whole artifact (+versions+comments)

Always confirm with the user in chat first. The helper refuses without --yes as a guardrail. Deletes are irreversible. Owner-only (403 otherwise). The server refuses to delete the only remaining version (delete the artifact instead).


Workflow G — Quick query

For one-offs like "what comments are on my artifact?", just run comments / list / dashboard and print a compact summary; don't propose edits unless asked.

node scripts/abeam.mjs dashboard     # owner KPI summary (totals, public/private, active links)

Output / UX rules

  • Always print the share/detail URL when creating a link or publishing.
  • Always confirm before uploading a new version — it's an immutable record.
  • Always confirm before deleting, even though --yes is required.
  • A freshly created share URL is shown only once — surface it verbatim and tell the user to save it.
  • Never print or persist the session cookie. Never modify a file the user didn't ask you to change. Keep editing the same local .html so diffs stay meaningful.

Errors

SymptomAction
Not signed in (HTTP 401)Run the one-time sign-in (Setup); cookie likely expired
Forbidden (HTTP 403)Caller isn't the owner — offer to publish as a new artifact instead
Request failed (HTTP 404)Stale URL or the artifact/version was deleted
node: command not foundInstall Node.js 18+ (the helper needs global fetch)
Cookie "saved but not authenticated"Sign in again and re-copy __Host-ab_session

See also

What ships with it: 14 files

65.1 KB alongside SKILL.md, 9 of them executable

agents/

Keep looking

Skills are one crate of 326,144. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.