add-module

add-module is a skill for Claude Code, Codex from BlocUnited-LLC/mozaiks. It costs 23 tokens per session (4,446 once invoked), scanned A, original, MIT.

A guide for adding deterministic backend logic to an existing Mozaiks application. A module provides data operations, business rules, and actions that can run without AI and can be called by workflows.

In plain words
What is it for?
Use it to add CRUD operations—create, read, update, and delete—domain actions, permissions, events, settings, notifications, or administrative panels.
Why use it?
It gives backend functionality a defined structure and action interface, so workflows can use application logic without embedding that logic in AI behavior.

Skill for Claude CodeCodex

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.

agentmods
npx agentmods add skills/blocunited-llc/mozaiks/add-module
Any agent
npx skills add BlocUnited-LLC/mozaiks --skill add-module
Clone the repo
git clone --depth 1 https://github.com/BlocUnited-LLC/mozaiks

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 add-module

README.md
[![agentmods](https://agentmods.dev/badge/skills/blocunited-llc/mozaiks/add-module.svg)](https://agentmods.dev/skills/blocunited-llc/mozaiks/add-module)
Your own site
<a href="https://agentmods.dev/skills/blocunited-llc/mozaiks/add-module"><img src="https://agentmods.dev/badge/skills/blocunited-llc/mozaiks/add-module.svg" alt="Measured on agentmods" height="20"></a>
Per session 23 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 4,446 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
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.00023 $0.04446
Opus 5 $0.00012 $0.02223
Sonnet 5 $0.00005 $0.00889
Haiku 4.5 $0.00002 $0.00445

Measured 5d ago against content hash d1db29a302f0, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-05, from the pricing page.

Security

Grade A, and why

add-module 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 5d 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.

.agents/skills/add-module/SKILL.md · 572 lines

How it starts

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

Before starting: git fetch origin && gh pr list --state open && git log origin/main --oneline -3 — if another agent has an open PR touching the same files you need, wait for it to merge or branch off it instead of main.

Help the user add a backend module to an existing Mozaiks application.

A module is deterministic backend logic: CRUD actions, domain data, business rules. It runs without AI. For AI-driven behavior, use a workflow instead. Modules support workflows — they provide the action surface that AI agents call.


What a Module Is

app/modules/{name}/
├── module.yaml              ← required: identity, permissions, actions; optional: capabilities[]
├── contracts/               ← optional companion manifests
│   ├── events.yaml          ← domain events this module may publish
│   ├── reactions.yaml       ← event reactions owned by this module
│   ├── notifications.yaml   ← notification rules derived from events
│   ├── settings.yaml        ← user/app settings schema
│   ├── admin.yaml           ← admin panels (omit if none)
│   └── profile.yaml         ← optional user profile page panels
├── runtime_extensions.yaml  ← optional: api_router / startup_service
└── backend/
    ├── __init__.py
    ├── handler.py        ← required — thin dispatch, one method per action
    ├── service.py        ← recommended — all business logic and event emission
    ├── repo.py           ← recommended — MongoDB access, no logic
    ├── policy.py         ← recommended — multi-tenancy query scoping
    ├── schemas.py        ← recommended — typed shapes + pure helpers
    └── {helper_files}.py ← optional — declared, justified, module-local support

Only module.yaml and backend/handler.py are required. Add companion manifests under contracts/ only when the module needs them.

Use contracts/reactions.yaml as the canonical event-reaction contract. The runtime rejects contracts/subscriptions.yaml; module changes must author contracts/reactions.yaml.

For SaaS apps: set actions[].entitlement_gate to a capability_id string on user-facing actions that require an active plan grant. ModuleExecutor checks EntitlementPort before dispatch and returns ENTITLEMENT_REQUIRED on denial. Non-SaaS apps use NoOpEntitlementAdapter — no configuration needed. Never set entitlement_gate on admin_internal actions.

Event/reaction contract summary:

  • contracts/events.yaml declares the events this module may emit. module.yaml.actions[].emits must reference event types declared there.
  • contracts/reactions.yaml uses schema_version: mozaiks.reactions.v1, root key reactions, event_type, and nested target.kind.
  • Reaction targets use target.handler_method, target.capability_id, or target.notification_id depending on target.kind.
  • contracts/notifications.yaml declares notification rules derived from events and is separate from reaction routing.

The runtime auto-discovers and registers all modules at startup. Module routes are auto-mounted at /api/modules/{name}/{action_id}. Pages should call those routes without query strings. Put list limits in page_size and filters or selected-row values in action payloads, form state, or the module action input schema.

Modules that need persistent app chrome access should expose a real page route and put navigation intent on that page. For example, a communications module that owns /messages should give the Messages page navigation.scope: global when it is a primary destination, or navigation.scope: profile when it is account-adjacent. Use app/config/shell.json -> shortcuts for built-in profile, auth, notification, and footer chrome rather than hardcoding menu entries. The page also owns chrome intent through shell_mode: use conversation for DM/chat/thread pages so the mobile bottom bar and footer do not compete with the composer, and workspace for inbox, queue, profile, or management surfaces.

Module runtime output must be production-honest. Do not return sample, demo, mock, fake, placeholder, random, or hardcoded KPI data from module actions. Summary/stat/metric/count actions must query repo/MongoDB state or return honest empty values (0, [], null). Trend/change fields require a real historical comparison or metrics snapshot; otherwise omit them or return null.

Read the full file on GitHub · 572 lines

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. 5d ago First seen · 572 lines · 23 tokens per session scan A d1db29a302f0

Subscribe to this mod's changes

add-module is a skill published in the GitHub repository BlocUnited-LLC/mozaiks (25 stars, last pushed today), licensed MIT. It adds 23 tokens to every session and 4,446 once invoked, about $0.0001 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.

Related

Other skills, from other repositories

add-new-model

Add support for a newly-released LLM model in pydantic-ai (e.g. openai:gpt-5.6, anthropic:claude-sonnet-5). Use when a provider ships a new model id and you need to wire literals, profile flags, and tests to recognize it. Handles SDK-lag, gateway list conventions, and capability probing.

pydantic/pydantic-ai · 80 tokens

building-pydantic-ai-agents

Build AI agents with Pydantic AI — tools, capabilities (including on-demand loading), structured output, streaming, testing, and multi-agent patterns. Use when the user mentions Pydantic AI, imports pydanticai, or asks to build an AI agent, add tools/capabilities, defer capability loading, stream output, define agents…

pydantic/pydantic-ai · 85 tokens

complete-partial-pr

Evaluate and complete an issue or PR where the submitted patch fixes only a narrow symptom of the reported pain point. Use when a contribution may miss adjacent integration surfaces, provider/spec semantics, roundtrip behavior, tests, docs, or historical maintainer decisions.

pydantic/pydantic-ai · 55 tokens

testing-skill

Record, rewrite, and debug VCR cassettes for HTTP recordings. Use when running tests with --record-mode, verifying cassette playback, or inspecting request/response bodies in YAML cassettes.

pydantic/pydantic-ai · 44 tokens

pre-push-review

Run a high-judgment local review of the current branch before pushing, both before a PR exists and between PR iterations.

pydantic/pydantic-ai · 24 tokens

adding-a-provider-api-feature

Add a new provider API capability (prompt caching, strict/structured tool calling, thinking/reasoning effort, service tier, safety settings, logprobs, etc.) to Pydantic AI. Use when wiring a provider feature through the library — it enforces reasoning from the existing cross-provider abstraction before designing…

pydantic/pydantic-ai · 97 tokens