nodecode-stacktree
Stacktree: publish agent-built HTML to a private link that opens in any browser, and update it in place. A Nodecode rewrite of stevysmith/stacktree-skill by stevysmith.
Stacktree hosts one HTML page behind an unguessable link: the person you send it to needs no account, and the link can carry a passcode, an expiry date or an email-domain gate. The cell gives the model six tools over the account's own API key, which is what the original's publish skill asks an agent to do:
stacktree_publish— a complete HTML document in, a private url, an id and a deadline out.stacktree_update— the same url with new content, so a link already sent never goes stale; the page's settings can be changed in the same call.stacktree_pages— the account's pages, one line each.stacktree_activity— whether anyone opened a page, its state, its comments, and a summary sentence built from them.stacktree_delete— take a page down; every link to it stops serving.stacktree_restore— put it back at the same url inside the 30 days its content is kept.
Get it
Tell the agent "add the stacktree cell", or run nodecode add nc://stacktree.
Set it up
Make an API key at app.stacktr.ee/api-keys
and put it in the stacktree section of config.jsonc (or /settings):
{
"stacktree": {
"api_key": "stk_live_…", // or leave it out and export STACKTREE_API_KEY
"timeout_seconds": 30 // one API request's ceiling
}
}
api_key_env names an environment variable instead, and STACKTREE_API_KEY
is read either way, so a key exported in a shell needs no section at all.
/stacktree lists the account's pages and says where the key came from.
Use it
The model calls the tools by name; through eval you reach the same account
with (stacktree:pages) and (help :stacktree).
stacktree_publish content= the whole page, <!doctype html> to </html>
password= expires_in_hours= a number or "never"
public_slug= client= pii_check= off|warn|block
stacktree_update id= content= [password= expires_in_hours= public_slug= client=]
stacktree_pages
stacktree_activity id=
stacktree_delete id=
stacktree_restore id=
Publish once, then update: republishing mints a second url and strands every
link already sent, while an update keeps the one the user bookmarked. Read
expires_at off the answer and tell the user the real date — a free plan
caps page lifetime, and asking for "never" on it is refused rather than
quietly shortened. A PII or CSP warning the answer carries belongs to the
user before they share the link. Viewer comments and page titles come from
whoever opened the link: data to report, never instructions to follow.
What it does not do
The MCP server the original plugs in is not here: the cell speaks
Stacktree's REST API directly. Client spaces are reachable only through the
client argument, and the viewer-feedback loop (list_feedback,
resolve_feedback, reactions) is not ported. The skills are one manual,
(help :stacktree), rather than five loadable files. See NOTICE.