upload-artifact
Upload or update Lena's HTML artifacts at artifacts.lena.dog using htmldog, including browser authentication and verification.
Skill by love-lena
Chalk Labs
Need help deploying upload-artifact?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
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/love-lena-upload-artifact
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: frontend
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 Nov 2, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/upload-artifact
What's inside
- Skill name
upload-artifact- Description
- Upload or update Lena's HTML artifacts at artifacts.lena.dog using htmldog, including browser authentication and verification. Use for requests to upload an artifact to lena.dog or replace an existing hosted artifact.
- License
- MIT
- Instructions
- 74 lines in SKILL.md · view on GitHub
Files (2)
- SKILL.md
- openai.yaml · agents/
SKILL.md (first lines)
# Upload Artifact Publish to **https://artifacts.lena.dog**, Lena's ShareHTML deployment. In this workflow, “upload to lena.dog” means this artifact service. Use its `htmldog` application client; uploading a document does not require a Cloudflare deployment or infrastructure changes. ## Create or prepare the artifact If the HTML still needs creating or restyling and `html-artifacts` is installed, use its entrypoint for presentation: Plain by default, Fancy when requested, and the Visual Explainer method for visual teaching. An existing ready-to-upload file needs no style conversion. The upload workflow also works independently of the creation skill. Use one self-contained HTML file. The shell client sends the file as HTML without converting Markdown, source code, PDFs, or other binaries. Render text sources to HTML when that meets the request; clarify a request for native binary hosting before substituting a format or service. The hosted viewer supports inline CSS and JavaScript, but blocks network connections, external subresources, native form submission, and nested frames. It runs the artifact without same-origin permission, so browser storage such as localStorage is unavailable. In-page controls can update local UI state; they cannot silently become a persistent or network-backed application. Embed required images, fonts, and media as data URLs, and bundle scripts/styles into the HTML. Keep the editable sources locally. Check the packaged page before uploading, especially interactions that might rely on storage, a local server, or a CDN. If the task requires those capabilities, explain this hosting limitation and keep the working local version available. ## Locate the client and authenticate 1. Look for `htmldog` on `PATH`, then `$HOME/.local/bin/htmldog`. An existing ShareHTML checkout can also supply `bin/htmldog`. If absent, download the supported shell client from [love-lena/sharehtml](https://raw.githubusercontent.com/love-lena/sharehtml/main/bin/htmldog) into the task's `work/htmldog`, check that the download succeeded, inspect it, and run `sh -n` before use. It needs `curl` and `openssl`; it does not need Bun, npm installation, or `cloudflared`. 2. Set `artifact_cli` to the selected script's absolute path. Check its `--help` for command drift. Pin the destination for these commands without changing the user's saved configuration. Repeat these variable bindings in each fresh tool shell; exports do not carry across separate shell calls: ```sh export HTMLDOG_URL=https://artifacts.lena.dog sh "$artifact_cli" config show sh "$artifact_cli" list ``` `config show` must resolve to the intended service. `list` is the read-only authentication check; inspect only the metadata needed to resolve the requested document. 3. If the session is missing, expired, or rejected with HTTP 401, run: ```sh sh "$artifact_cli" login ``` This starts a PKCE-protected device login, prints an authorization URL, and normally opens the browser. Surface that URL and keep the command running while browser authorization completes. Use an existing signed-in browser session where available; leave credential entry and MFA to the user. The CLI polls for up to ten minutes. Use short tool waits so the user can still interact. Treat only `Login complete` followed by a successful `list` as authenticated. Sessions last 24 hours. The client stores them in macOS Keychain or Linux Secret Service when available, with a mode-0600 local fallback. Let the client handle credentials; keep tokens, cookies, and credential files out of tool output, artifacts, and the skills repo. GitHub's CLI login and Cloudflare API credentials do not authenticate this application client. 4. Reauthenticate at most once per failed attempt. If login is denied, times out, or still fails, stop and report the required user action. For HTTP 403, check account/document access rather than repeatedly logging in. Report network or service failures as such; they do not establish an expired session. ## Upload or update Use the existing authorization in the conversation. An explicit request to replace or update an identified artifact authorizes that update; a new confirmation is only needed if the target or requested access is unresolved. - **New artifact:** `sh "$artifact_cli" deploy "$artifact_file" "$artifact_title"` - **Existing artifact:** resolve the ID from the supplied `/d/ID` or `/p/ID` URL, or from `list` metadata. Preserve the previous source with `sh "$artifact_cli" pull "$artifact_id" "$backup_file"`, using a new path under `work/revisions/`. Then run `sh "$artifact_cli" update "$artifact_id" "$artifact_file" "$artifact_title"` to retain the URL and existing sharing settings. Choose the new/update branch from the user's intent. `deploy` creates a new document; it does not find an existing document by filename or prompt to overwrite. These commands differ from the older TypeScript `sharehtml` CLI and its bundled `sharehtml-collaboration` skill. Capture the returned document ID, URL, and `shareMode`. If a write times out or its outcome is unclear, inspect `list` and pull the candidate source before retrying. A blind second `deploy` can create duplicates. If the result remains ambiguous, report it and stop rather than issuing another write. ## Sharing New documents on the authenticated service should return `shareMode: private`. An upload request alone keeps them private. Updates preserve their existing access unless the user requests a change; check the response for that mode rather than treating `isShared` as sufficient. When the user requests sharing, apply their intended audience: ```sh sh "$artifact_cli" share "$artifact_id" link sh "$artifact_cli" share "$artifact_id" emails 'person@example.com,other@example.com' sh "$artifact_cli" unshare "$artifact_id" ``` Choose only the applicable command: `link` enables anonymous read-only access at `/p/ID`; `emails` sets the named collaborators; `unshare` makes the document private. The `emails` list replaces the existing list, so preserve current collaborators when the request is additive. Read them from the viewer's sharing panel before issuing that command; if the current audience cannot be resolved, ask for the complete intended list. A vague sharing request with no clear audience needs clarification; an explicit public-link or named-recipient request does not. ## Verify and deliver Pull the uploaded source to a separate verification file and compare it with the local upload: ```sh sh "$artifact_cli" pull "$artifact_id" "$verification_file" cmp "$artifact_file" "$verification_file" ``` Open the returned viewer URL and check the page and its important interactions. Browser and CLI sessions are separate; complete browser sign-in if necessary. When public sharing was requested, verify `/p/ID` without relying on an authenticated session. Return the hosted link and its actual access mode. Distinguish successful upload, matching source bytes, and confirmed rendering. If a browser check is blocked, state that limit without retrying a verified upload. Leave the local editable artifact and any prior-version backup available.
From love-lena/skills, MIT.
More from love-lena/skills
- 0.567score
html-artifacts
love-lena
Create standalone HTML documents, dashboards, prototypes, and visual explainers.
SkillAFreshness: AClaude Code +9 - 0.565score
status-board
love-lena
Create or update a self-contained HTML status board for an active pull-request stack, project roadmap, milestone sequence, or coding session.
SkillAFreshness: AClaude Code +9 - 0.559score
fancy-html-artifacts
love-lena
Create expressive HTML artifacts with one of six distinct compositions through HTML Artifacts.
SkillAFreshness: AClaude Code +9 - 0.556score
visual-explainer
love-lena
Create picture-led explanations with sparse labels and captions through HTML Artifacts.
SkillAFreshness: AClaude Code +9 - 0.556score
html-artifact-style
love-lena
Create standalone HTML artifacts in Plain style through the HTML Artifacts skill.
SkillAFreshness: AClaude Code +9 - 0.474score
writing-style
love-lena
Use when writing or editing any prose for Lena — non-fiction, docs, status updates, essays, announcements, messages.
SkillCFreshness: CClaude Code +9 - 0.474score
change-story
love-lena
Generate a two-column "change story" walkthrough for a pull request or stack of PRs — a continuous prose chapter that names what changed and why on the left…
SkillCFreshness: CClaude Code +9 - 0.470score
manta
love-lena
Use when sending files to your Supernote Manta for reading and handwritten annotation, pulling annotated files back, or generating editorial reading versions…
SkillCFreshness: CClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 21, 2026 (14 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/love-lena/skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from love-lena
- 0.567score
html-artifacts
love-lena
Create standalone HTML documents, dashboards, prototypes, and visual explainers.
SkillAFreshness: AClaude Code +9 - 0.565score
status-board
love-lena
Create or update a self-contained HTML status board for an active pull-request stack, project roadmap, milestone sequence, or coding session.
SkillAFreshness: AClaude Code +9 - 0.559score
fancy-html-artifacts
love-lena
Create expressive HTML artifacts with one of six distinct compositions through HTML Artifacts.
SkillAFreshness: AClaude Code +9 - 0.556score
visual-explainer
love-lena
Create picture-led explanations with sparse labels and captions through HTML Artifacts.
SkillAFreshness: AClaude Code +9 - 0.556score
html-artifact-style
love-lena
Create standalone HTML artifacts in Plain style through the HTML Artifacts skill.
SkillAFreshness: AClaude Code +9 - 0.474score
writing-style
love-lena
Use when writing or editing any prose for Lena — non-fiction, docs, status updates, essays, announcements, messages.
SkillCFreshness: CClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get upload-artifact running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
upload-artifact skill. Agent Mart. https://agentmart.dev/skills/love-lena-upload-artifact (last updated 2026-10-24)