Paperclip Page
paperclipai/paperclip
Publish static HTML pages and asset folders to the Paperclip S3/CloudFront page host.
HTML docs domain (octo-doc) — create and govern self-contained interactive HTML documents, immutable versions, drafts, sharing, media, comments, and agent element edits.
$ npx skills add Mininglamp-OSS/octo-cli --skill octo-html -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Mininglamp-OSS/octo-cli octo-html --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Mininglamp-OSS/octo-cli.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/octo-html .claude/skills/octo-html && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "octo-html" agent skill from https://github.com/Mininglamp-OSS/octo-cli/tree/main/skills/octo-html into .claude/skills/octo-html/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "octo-html", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Mininglamp-OSS/octo-cli/tree/main/skills/octo-htmlType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Mininglamp-OSS/octo-cli --skill octo-html -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Mininglamp-OSS/octo-cli octo-html --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Mininglamp-OSS/octo-cli.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/octo-html .agents/skills/octo-html && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "octo-html" agent skill from https://github.com/Mininglamp-OSS/octo-cli/tree/main/skills/octo-html into .agents/skills/octo-html/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "octo-html", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Mininglamp-OSS/octo-cli --skill octo-html -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Mininglamp-OSS/octo-cli octo-html --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Mininglamp-OSS/octo-cli.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/octo-html .cursor/skills/octo-html && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "octo-html" agent skill from https://github.com/Mininglamp-OSS/octo-cli/tree/main/skills/octo-html into .cursor/skills/octo-html/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "octo-html", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Mininglamp-OSS/octo-cli.git --path skills/octo-html--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Mininglamp-OSS/octo-cli --skill octo-html -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Mininglamp-OSS/octo-cli octo-html --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Mininglamp-OSS/octo-cli.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/octo-html .gemini/skills/octo-html && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "octo-html" agent skill from https://github.com/Mininglamp-OSS/octo-cli/tree/main/skills/octo-html into .gemini/skills/octo-html/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "octo-html", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Mininglamp-OSS/octo-cli octo-htmlInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Mininglamp-OSS/octo-cli --skill octo-html -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Mininglamp-OSS/octo-cli.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/octo-html .github/skills/octo-html && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "octo-html" agent skill from https://github.com/Mininglamp-OSS/octo-cli/tree/main/skills/octo-html into .github/skills/octo-html/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "octo-html", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Mininglamp-OSS/octo-cli --skill octo-html -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Mininglamp-OSS/octo-cli octo-html --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Mininglamp-OSS/octo-cli.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/octo-html .opencode/skills/octo-html && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "octo-html" agent skill from https://github.com/Mininglamp-OSS/octo-cli/tree/main/skills/octo-html into .opencode/skills/octo-html/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "octo-html", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
octo-htmlHTML docs domain (octo-doc) — create and govern self-contained interactive HTML documents, immutable versions, drafts, sharing, media, comments, and agent element edits.
Octo HTML is an agent skill from Mininglamp-OSS/octo-cli. HTML docs domain (octo-doc) — create and govern self-contained interactive HTML documents, immutable versions, drafts, sharing, media, comments, and agent element edits. Bots cannot delete documents. This is a DIFFERENT backend from the octo-docs (CRDT/Yjs) domain. Load after octo-shared.
Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Frontend & Design, covering HTML artifacts. The repository describes itself as: Metadata-driven CLI for AI Agent Bots — 48 operations across 7 domains, structured JSON envelope I/O, zero interactive prompts. The licence is Apache-2.0.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 6d21f11. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
OCTO_BOT_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Octo HTML loads about 4.2k tokens when it runs. Until then it costs about 75 tokens; SKILL.md has 1,753 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Mininglamp-OSS/octo-cli at commit 6d21f11, republished under its Apache-2.0 licence (© Mininglamp-OSS). 1,753 words, ~4,220 tokens.
.claude/skills/octo-html/SKILL.md (or your agent's skills folder).This is NOT the
octo-docsbody-editing domain.octo-cli html …talks to octo-doc, where a document is a self-contained HTML page published as immutable versions.octo-cli docs …talks to the separate CRDT/Yjs backend.
All commands call $OCTO_API_BASE_URL/docs-html/v1/* and return the standard
{ok, identity, data, ...} success envelope.
slug and provide
html. The CLI generates idempotency_key; an explicit key is optional. A display name belongs in meta.title;
it is metadata, not identity.data.slug from the response. New documents always return
data.doc_id and data.slug, with data.slug == data.doc_id, whether mounted
or unmounted. Use data.slug for every later operation.<doc-ref>.meta.title creates a different document. To publish another version, supply
the saved data.slug in the server's legacy-named slug field and set
--version to the version read with html source plus one.mount_type, registered, status, or whether
data.doc_id is non-empty. registered and status report operational state,
not identity.Query and JSON-body fields remain named slug for wire compatibility. Put the
saved document reference in them. Path help displays <doc-ref>, and old legacy
slugs are accepted. The CLI does not persist the reference.
Minimum rollout dependency: this contract requires the canonical-create server changes in octo-docs-backend#166 and octo-docs-html#33 to be merged and deployed before this CLI is released. Source reads and guarded bot updates also require octo-docs-html#34. The HTML backend will be deployed first. The CLI release and rollout of its updated skills follow only after the source endpoint and publish guard are deployed and verified on every HTML-serving instance. Do not release this workflow during a mixed old/new backend rollout.
If html source unexpectedly returns a route-level 404, check the same
reference with octo-cli html get <doc-ref> using the same identity and gateway.
If metadata is readable, the document exists: report that the source endpoint
is unavailable and the backend deployment or gateway routing needs checking.
Do not report the document as missing or create a replacement. If both reads
fail, a 404 alone cannot distinguish a missing/inaccessible document from a
deployment problem; retain the reference and report the uncertainty.
Stop this update until source access is restored. Do not infer a version from
metadata, publish without a version, or switch endpoints to bypass the guard.
Once the backend is ready, recover actual 409/428 version errors autonomously
as described below.
--profile / --bot-id) or
OCTO_BOT_TOKEN; confirm the selected identity with octo-cli config show.--space. octo-doc resolves identity and space server-side.{ok:false,error:{type,code,message,hint,detail}} envelope.Bots cannot delete documents, even as author, owner, or admin. Do not run
octo-cli html rm <doc-ref> or use docs delete / raw api DELETE as an
alternative. Ask a human with document admin permission to delete it in Octo.
This includes cleanup of test documents and applies to canonical IDs and legacy
slugs. Creating, publishing versions, editing, and permitted asset/comment
operations are unchanged.
html rm targets /docs-html/v1/docs/{doc_id}, a different service entry from
the docs-backend /v1/bot/docs/octo-doc/:octoDocSlug deletion route. Do not infer
that one route's deployment proves the other's enforcement, and do not probe
the other route as a workaround.
Documents are declarative: no JavaScript. The backend rejects any publish or
draft whose HTML carries script, with 400 and the stable code
html_contains_javascript. This is not advisory — there is no flag to opt out.
When generating a document, never emit:
<script> elements (including inside <svg>),on* event-handler attributes (onclick, onload, onerror, …),javascript: / vbscript: / scriptable data: URLs in href, src,
xlink:href, action, formaction, object[data], or a non-empty srcdoc.Express interaction with CSS instead — :hover, :target, :checked +
sibling selectors, <details>/<summary>, transitions and animations all work
and cover most of what a document needs. Do not assume script is merely inert:
the host application embeds documents in a sandboxed iframe, but the document's
own version URL serves the stored HTML as a top-level page, so script that got
stored would execute for every reader who opens that link. CSS, inline style,
<iframe>, <noscript> and <meta http-equiv=refresh> are all still allowed.
On rejection the error details.violations lists every offending construct with
its kind, tag, attr and 1-based line. Fix all of them in one pass — the
list is complete (capped at 50, with details.truncated set when it overflows).
Do not retry the same document unchanged, and do not try to work around the gate
by encoding or splitting the script.
# Canonical create: no --slug. The CLI generates the idempotency key.
octo-cli html publish --data '{"html":"<html><body><h1>Runbook</h1></body></html>","meta":{"title":"Runbook"},"mount_type":"group","group_no":"<group_no>"}'
# → data: { doc_id, slug, version, url, share_url, size, aids,
# merged_comments, registered, status }
# Save data.slug; for this new document data.slug == data.doc_id.
# Unmounted creation follows the same identity contract and also gets doc_id.
octo-cli html publish --data '{"html":"<html><body><h1>Private draft</h1></body></html>","meta":{"title":"Private draft"}}'
# Read HTML and its version together, then edit data.html.
octo-cli html source <doc-ref>
# → data: { slug, version, html }
# Publish version 2 only if the source read returned version 1.
# Keep the wire field name `slug` and omit
# idempotency_key. Pass ONLY a slug the server returned earlier: an unregistered
# slug does not create a canonical document — it produces a legacy unregistered
# one that never appears in the sidebar file list. Never invent a slug.
octo-cli html publish --version 2 --data '{"slug":"<doc-ref>","html":"<html><body><h1>Runbook v2</h1></body></html>","meta":{"title":"Runbook"}}'
# An explicit --idempotency-key <same-operation-key> is supported only for
# retrying this exact creation operation. The CLI-generated key is created once
# per invocation and the HTTP retry loop reuses the same serialized request.
# Reusing a key with different HTML returns the old document and discards the
# new HTML. Once its document is deleted, that key is unusable.
#
# UNATTENDED CALLERS: supply your own stable --idempotency-key and persist it
# before the call. A generated key lives only for that invocation, so if a
# timeout or 5xx leaves the outcome unknown, a plain re-run creates a SECOND
# document without returning the first one's reference. Bots must not delete
# documents as cleanup. With your own key the re-run resumes the same
# creation. A failed create also reports the key it used in the error envelope's
# detail (and hint), so an ambiguous failure stays recoverable either way.
# List, inspect, and list versions.
octo-cli html list
octo-cli html get <doc-ref>
octo-cli html versions <doc-ref>html list returns the backend's offset envelope as data plus _pagination
(total, page, page_size). It has no cursor flags or --page-all support.
Mounts (group, space, or thread) control placement/registration only. For
group, pass group_no; for thread, pass thread_id. They do not choose the
document-reference format.
WITHOUT mount_type the backend skips docs-backend registration, so the HTML
never shows up in the sidebar file list — this is the #1 "my doc didn't appear"
gotcha. An unmounted document still receives a canonical doc_id; registration
and identity are separate concerns.
--version flagBefore editing an existing HTML document, run octo-cli html source <doc-ref>.
Retain data.html and data.version from that same response. It reads
GET /docs-html/v1/docs/{doc-ref}/source and returns the full stored HTML without
the viewer overlay. To inspect a fixed historical source, use
octo-cli html source <doc-ref> --version 7; omit --version to read latest.
html get only returns metadata; do not pair a separately fetched version
number with older HTML.
--version is the new output version. If the source read was version N,
edit that source and publish with --version N+1 (a concrete integer, such as
--version 2 above). The server's concurrency guard requires this value to
match its current latest version + 1. Updates must not use omitted or zero
version, because automatic allocation cannot detect a stale edit. First
publication can still omit the flag. No new CLI parameter is needed.
HTTP 428 / version_required means the update omitted its output version.
HTTP 409 / version_conflict means the requested version is stale or skips
past the next version. The backend's error.details contains version,
latest_version, next_version, and source_path; in CLI output these are
preserved under error.detail.error.details. Read that source, inspect others'
changes, and reapply the intended edit before submitting its version plus one.
The bot MUST recover from version_conflict and version_required within
the same task. Do not end the task by reporting the raw version error to the
user or ask the user to perform a routine reread/retry. CLI exit code 2 is a
tool result for the bot to handle, not the final answer to the user. Only these
specific version error codes trigger this recovery workflow.
octo-cli html source <doc-ref> again without --version. Retain
the fresh data.html and data.version together; the version and fixed
source_path in the earlier error may already be outdated.--slug, with the fresh
version plus one. Do not create a new document or reuse a create
idempotency_key for this update.Involve the user only when overlapping changes have incompatible meanings that cannot be resolved from their request, another error prevents completion, or all three recovery attempts still conflict. Explain the specific unresolved change or ongoing contention instead of simply forwarding a version error.
Never just increase --version and resend stale HTML. Do not switch to
publication through drafts or element replacement to bypass a rejected update;
draft promotion and element replacement do not substitute for guarded
full-document publishing. Element replacement's base_version locates source
content; it is not this publish precondition.
A draft is an author-only working slot and does not mint an immutable version until promoted.
# Create a canonical draft without a document reference. Save response data.slug.
octo-cli html draft create --html '<html><body><h1>WIP</h1></body></html>'
octo-cli html draft save <doc-ref> --data '{"html":"<html><body><h1>WIP</h1></body></html>"}'
octo-cli html draft promote <doc-ref># Mint/rotate or revoke a bearer share code.
octo-cli html share <doc-ref>
octo-cli html unshare <doc-ref>
# Grant/list/revoke named-reader access.
octo-cli html grant add <doc-ref> --uid <uid> --role reader
octo-cli html grant list <doc-ref>
octo-cli html grant rm <doc-ref> <uid>octo-cli html asset ls <doc-ref>
octo-cli html asset add <doc-ref> --file ./chart.png
octo-cli html asset rm <doc-ref> <sha256>The wire parameter remains slug; pass the saved document reference.
octo-cli html comment list --slug <doc-ref> [--version all]
octo-cli html comment add --data '{"slug":"<doc-ref>","text":"Please clarify this","anchor":{"kind":"element","aid":"<content-hash>"}}'html comment list likewise preserves offset metadata in _pagination; it has
no cursor flags or --page-all support.
# Read one stamped artifact (version 0 or omitted means latest).
octo-cli html element get --data '{"slug":"<doc-ref>","aid":"<content-hash>"}'
# Replace exactly one safe top-level element and publish a new version.
octo-cli html element replace --data '{"slug":"<doc-ref>","aid":"<content-hash>","new_html":"<section>updated body</section>"}'
# Reply to a comment thread with an optional applied/partial/question verdict.
octo-cli html reply --data '{"slug":"<doc-ref>","parent_id":"<comment-root-id>","text":"Done.","status":"applied"}'To preserve comment anchors, prefer narrow element replacements; avoid changing an element's tag or nearby heading unless necessary.
428 VALIDATION_ERROR, with error.detail.error.details.code=version_required
— a bot update omitted its output version or sent zero. Read with html source,
edit that source, then publish its version plus one autonomously using the
recovery workflow above; do not stop at the tool error.
409 CONFLICT, with error.detail.error.details.code=version_conflict
— the output version is stale or skips ahead. Read the latest source and
reapply the intended edit while preserving others' changes. Never just increase
--version and resend stale HTML. Both errors exit with code 2; the backend
recovery hint is preserved at error.detail.error.hint and version/source
fields at error.detail.error.details. Complete the recovery workflow above
before reporting the result to the user.
403 bot_delete_forbidden — terminal bot-deletion policy denial, including
already-deleted retries on the docs-backend routes. Do not retry, change
roles/identity/Space, or switch endpoints; ask a human document admin to delete
it. This is not a successful deletion or a missing-membership problem.
401 / 403 — missing or insufficient capability.
404 — the requested document, comment, or aid may be missing or inaccessible.
A route-level 404 from html source can instead indicate an unavailable source
endpoint. Follow the rollout check above before diagnosing the document as
missing: readable metadata confirms it exists but is never a source/version
fallback. Do not create a replacement document or publish without the guard.
400 html_contains_javascript — the published or draft HTML carries
JavaScript (see the no-JavaScript rule in §1). details.violations names every
offending construct with its kind / tag / attr / line; regenerate the
document without script rather than retrying it unchanged.
Element replacement rejects multiple top-level elements, scripts/styles,
inline event handlers, and javascript: URLs.
octo-cli schema --list html
octo-cli schema html.source
octo-cli schema html.publish
octo-cli schema html.element.replace
octo-cli schema html.reply© Mininglamp-OSS, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/octo-html of Mininglamp-OSS/octo-cli.
Open the folder on GitHubat commit 6d21f11
Octo HTML next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Octo HTML this skillMininglamp-OSS/octo-cli | 918 | — | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Paperclip Pagepaperclipai/paperclip | 99k | — | ~1k | Automated safety check: Pass | MIT | |
| Pretty Pagealexknowshtml/claude-skills | 149 | — | ~2.2k | Automated safety check: Notes | None | |
| QA Handoffjoshukraine/dotfiles | 429 | — | ~4.1k | Automated safety check: Pass | MIT | |
| LobeHub Interactive Prototypelobehub/lobehub | 83k | — | ~1.6k | Automated safety check: Pass | Custom licence | |
| Openkb Deck NeonVectifyAI/OpenKB | 4.8k | 1 repos | ~4.3k | Automated safety check: Pass | Apache-2.0 |
paperclipai/paperclip
Publish static HTML pages and asset folders to the Paperclip S3/CloudFront page host.
alexknowshtml/claude-skills
Convert markdown to a beautifully styled, shareable HTML page and upload to S3-compatible storage
joshukraine/dotfiles
Generate a hands-on QA testing guide as a self-contained HTML page — for Rails apps or static (Hugo) sites.
lobehub/lobehub
Builds single-file interactive HTML prototypes rendered with the real LobeHub UI components and written as production-style React, so they can later be split into files.
VectifyAI/OpenKB
A skill your agent uses when the user asks the openkb chat to make a deck / slide presentation / PPT / slides / 演示稿 / 幻灯片 from their compiled KB content AND wants a dark, high-tech, neon / glow /…
webhtv/webhtv
Build, review, debug, reverse-engineer data sources for, and package FongMi/WebHome custom homepage single-file HTML.
Mininglamp-OSS/octo-cli
A skill your agent uses when operating the Octo Loop control plane through the octo-cli loop commands: reading or writing Fleet tasks, comments, metadata, projects, and labels; dispatching work to…
Mininglamp-OSS/octo-cli
Read, create, find, and cite Octo summaries through octo-cli.
Mininglamp-OSS/octo-cli
Docs domain — create and govern documents, read and incrementally edit a doc's live body, read and edit spreadsheets including structural row/column edits, find & replace, cells, layout, shared…
Mininglamp-OSS/octo-cli
Octo Drive — spaces, folders, file upload/download, online-document mounts, share links, invites, IM-attachment transfer.
Mininglamp-OSS/octo-cli
File operations (upload/download, presigned S3 credentials) plus bot housekeeping (register, set-commands, user-info, space-members, typing, heartbeat).
Mininglamp-OSS/octo-cli
OCTO Agent Mail operations for reading, searching, policy-aware sending, preparing drafts, and checking delivery status exclusively through octo-cli.
Categories
HTML docs domain (octo-doc) — create and govern self-contained interactive HTML documents, immutable versions, drafts, sharing, media, comments, and agent element edits. Octo HTML is an agent skill from Mininglamp-OSS/octo-cli. HTML docs domain (octo-doc) — create and govern self-contained interactive HTML documents, immutable versions, drafts, sharing, media, comments, and agent element edits.
Octo HTML fits situations like: tasks that involve HTML artifacts.
Run `npx skills add Mininglamp-OSS/octo-cli --skill octo-html -a claude-code`. Or copy the skill folder (skills/octo-html in Mininglamp-OSS/octo-cli) into .claude/skills/octo-html in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Mininglamp-OSS/octo-cli --skill octo-html -a codex`. Or copy the skill folder (skills/octo-html in Mininglamp-OSS/octo-cli) into .agents/skills/octo-html in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Mininglamp-OSS/octo-cli --skill octo-html -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/octo-html, .gemini/skills/octo-html, .github/skills/octo-html and .opencode/skills/octo-html in your project.
Going by SKILL.md and its folder, Octo HTML needs credentials named OCTO_BOT_TOKEN. Our summary lists: A credential in OCTO_BOT_TOKEN.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Octo HTML is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.2k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Octo HTML: Paperclip Page (paperclipai/paperclip, 99k stars), Pretty Page (alexknowshtml/claude-skills, 149 stars), QA Handoff (joshukraine/dotfiles, 429 stars) and LobeHub Interactive Prototype (lobehub/lobehub, 83k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Mininglamp-OSS (a GitHub organization) maintains it in Mininglamp-OSS/octo-cli, which has 918 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 10, 2026.
Source: Mininglamp-OSS/octo-cli on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.