mulmoterminal-shared-app

mulmoterminal-shared-app is a skill for Claude Code, Codex from receptron/mulmoterminal. It costs 114 tokens per session (23,906 once invoked), scanned A, original, MIT.

A guide for building a shared web app, such as a survey, booking form, sign-up sheet, or shared list, whose records are stored in one cloud location.

In plain words
What is it for?
Use it to define a shared app with forms, views, cloud-stored records, and access for invited people.
Why use it?
It solves the problem of collecting or sharing information when other people need to use the app without having the repository or the same computer.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: reads .claude/ paths; mentions Claude Code.

Good fit Use it to define a shared app with forms, views, cloud-stored records, and access for invited people.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/receptron/mulmoterminal/mulmoterminal-shared-app
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add receptron/mulmoterminal --skill mulmoterminal-shared-app
Clone the repo
git clone --depth 1 https://github.com/receptron/mulmoterminal

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for mulmoterminal-shared-app

README.md
[![agentmods](https://agentmods.dev/badge/skills/receptron/mulmoterminal/mulmoterminal-shared-app/github.svg)](https://agentmods.dev/skills/receptron/mulmoterminal/mulmoterminal-shared-app)
Your own site
<a href="https://agentmods.dev/skills/receptron/mulmoterminal/mulmoterminal-shared-app"><img src="https://agentmods.dev/badge/skills/receptron/mulmoterminal/mulmoterminal-shared-app/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for mulmoterminal-shared-app

Your own site · 80×15
<a href="https://agentmods.dev/skills/receptron/mulmoterminal/mulmoterminal-shared-app"><img src="https://agentmods.dev/badge/skills/receptron/mulmoterminal/mulmoterminal-shared-app.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 114 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 23,906 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector warn 7 Sept 2026
SkillSpector: 3 findings, up to high

These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →

  • high Rogue Agent · line 988
    Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.
    Fix: Prevent the skill from modifying its own code, SKILL.md, or configuration files. Treat skill files as read-only at runtime.
  • medium Excessive Agency · line 44
    Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
    Fix: Add human-in-the-loop confirmation for destructive, irreversible, or high-impact operations. Never auto-execute commands that modify files, send data, or alter system state.
  • medium Tool Misuse · line 386
    Tool defaults are unsafe or overly permissive (e.g. disabled TLS verification, no authentication, world-writable permissions). Unsafe defaults widen the attack surface.
    Fix: Override unsafe defaults with secure settings (verify=True, auth required, restrictive permissions). Review and harden all tool configurations.
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00114 $0.23906
Opus 5 $0.00057 $0.11953
Sonnet 5 $0.00023 $0.04781
Haiku 4.5 $0.00011 $0.02391

Measured 8d ago against content hash 57fda9ec2a8f, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-12, from the pricing page.

Security

Grade A, and why

mulmoterminal-shared-app scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

server/skills/mulmoterminal-shared-app/SKILL.md · 1,397 lines

How it starts

The opening of the file, as written. The whole thing — 1,397 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Something other people use

A request like "make a survey for my talk", "I need a sign-up sheet", "let people book a slot", "a form I can send a link to" is asking for a SHARED APP — a thing that lives on the web, keeps its answers in one place, and can be handed to people who do not have this repository or this machine.

Do not offer a printable page, a Google Form, or a stand-alone HTML form as the answer. They are what this looked like before there was anywhere to keep the answers, and each of them leaves the user to solve the actual problem — where the responses go — by themselves. Offer them only if the user turns this down.

What a shared app is

  • One repository is one app. The folder this session is open in becomes the app; its declaration is app.json at the root.
  • The definition is committed; the answers are not. Schemas and views are files in the repository. Records live in the app's cloud store, so everyone sees the same rows.
  • Who may do what is a list of email addresses in app.json. Inviting somebody is adding a line and publishing — they need no account here and no repository.

Start from a template when one fits

Nine shapes are written out in full — declaration, schemas, and the reasoning behind each key:

  • templates/salon.md — a request that a NAMED PERSON approves, and only their own (a salon's bookings, interviews, repairs, review assignments). This is what assignee is for.
  • templates/gym.mdfirst come, first served, with a waiting list and a per-class opening time (a gym class, a workshop, a slot booking). This is what stampField and window.fromField are for, and it explains why the capacity lives in the VIEW and not in the rules.
  • templates/survey.mdcollecting answers, with nothing to run out of (a survey, a quiz, an application form, a sign-up with no cap). The shortest declaration of the nine, and the shape most often written with a public page and nothing else — so this one is built around its member page, which is where the answers are read. It also spells out the three-way trade above, and what a tally may and may not claim about values a respondent typed.
  • templates/meeting-room.md — a bookable unit you can LIST IN ADVANCE, taken on the spot with no approval (a meeting room, a desk, equipment on loan, a parking space). This is what idFrom: "field" and mirror are for, and it is the one that spells out who refills the slots, and what a cancellation does NOT do.
  • templates/live-poll.md — a page that MOVES while people are looking at it (a live stream, a lecture, a stand-up quiz). This is what views[].live is for, and the only one whose declaration is decided by FAN-OUT: the audience may watch the questions, only the desk may watch the votes, and the shape that would let both is refused by publish. In English, because the strings in its pages are what a stranger reads.
  • templates/project-board.md — the same work-claiming board with a ROSTER and an owner's desk: people register a name once (names, idFrom: "auth.uid"), then take work; the owner adds and removes tasks and frees an abandoned one from /m/. This is what writerDelete is for, and the one that spells out view.mine()'s three states — "you have not registered" and "nobody looked" are different answers, and treating them alike shows the registration form to somebody who has already registered. It also shows the owner-only form: a public.submit declaration whose window is CLOSED, which is how a page gets a create form that only a writer may send.
  • templates/append-feed.md — a record a CLOSED GROUP writes to and nobody rewrites: rows are only ever added, and only their author may remove one (a shift handover note, an incident timeline, a team log, a class's question board, a chat room). This is what views[].limit is for — the one shape whose collection grows with the app's AGE rather than with the thing being booked — and the one where writerDelete is deliberately ABSENT, which is project-board.md turned over: an owner pressing delete on somebody else's row is refused by Firestore. It is also the only sample showing public.enabled: false beside a populated public.submit, which is the pair the naming makes look contradictory.
  • templates/ai-council.md — a discussion the participants are AI AGENTS rather than people, held in public, which a human host can END (a debate, a design review by several models, a red-team panel). This is what agents[] is for — the app publishes the JOB beside the pages, so an agent at another MulmoTerminal takes a seat from the slug alone, with no copy of your repository. It is also the only sample that has to bind its own OWNER: every agent here signs in as the owner, so the host's close is enforced by refIn, a transitions map with no exit, and sealed together — any one alone is walked around in two writes. Read it for what a declaration can and cannot hold when the writer is an agent you handed your sign-in to.
  • templates/magazine.md — several writers publishing things to READ, each at its own URL, each signing their own and editing nobody else's (a team blog, a newsletter's back issues, a research log, release notes, a review column). This is what views[].article is for — the platform draws the article page, so the app declares which fields are the title, the body and the byline, and idFrom: "slug" makes the writer's chosen name the document id and freezes it. It is the only sample that states a protocol of its own, the only one whose limit is a COST — publish works it out in bytes and refuses the declaration when it is too large — and the one that explains why the owner has to hold participant on their own collection — audience forces submitOnly, submitOnly closes the writer branch, and an owner who skips it cannot publish at all. Read it before any app where a record is something a stranger is meant to sit and read.

Read the full file on GitHub · 1,397 lines

Files

What ships with it

10 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 8d ago Changed · +61 lines 57fda9ec2a8f
  2. 12d ago First seen · 1,336 lines · 114 tokens per session scan A b310c31447f8

Subscribe to this mod's changes

mulmoterminal-shared-app is a skill published in the GitHub repository receptron/mulmoterminal (212 stars, last pushed today), licensed MIT. It adds 114 tokens to every session and 23,906 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.