Open Mercato is an open-source TypeScript foundation framework for building CRM, ERP, commerce, and other business applications with established architecture, specifications, permissions, events, and domain modules. It is for teams and developers who want AI coding assistants to build consistent business software on top of ready-made foundations. The catalogue add-ons teach agents the framework’s conventions and workflows for implementing, testing, reviewing, and debugging features.
Borrowing it
Nothing to install: this file belongs to open-mercato/open-mercato. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/open-mercato/open-mercato/main/.ai/skills/om-auto-upgrade-0.6.7-to-0.7.0/SKILL.mdgit clone --depth 1 https://github.com/open-mercato/open-mercatoWrote 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.
[](https://agentmods.dev/skills/open-mercato/open-mercato/om-auto-upgrade-0.6.7-to-0.7.0)<a href="https://agentmods.dev/skills/open-mercato/open-mercato/om-auto-upgrade-0.6.7-to-0.7.0"><img src="https://agentmods.dev/badge/skills/open-mercato/open-mercato/om-auto-upgrade-0.6.7-to-0.7.0/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.
<a href="https://agentmods.dev/skills/open-mercato/open-mercato/om-auto-upgrade-0.6.7-to-0.7.0"><img src="https://agentmods.dev/badge/skills/open-mercato/open-mercato/om-auto-upgrade-0.6.7-to-0.7.0.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 1 finding, up to medium
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 →
- medium Excessive Agency · line 55 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.
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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00141 | $0.03037 |
| Opus 5 | $0.00071 | $0.01519 |
| Sonnet 5 | $0.00028 | $0.00607 |
| Haiku 4.5 | $0.00014 | $0.00304 |
Grade A, and why
om-auto-upgrade-0.6.7-to-0.7.0 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 13d 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.
How it starts
The opening of the file, as written. The whole thing — 112 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Auto upgrade 0.6.7 to 0.7.0
Apply the mechanical parts of the Open Mercato 0.6.7 → 0.7.0 upgrade to a downstream app. Treat the matching section of UPGRADE_NOTES.md as the source of truth and leave every intent-sensitive change as an explicit manual finding.
Scope
Operate on a standalone app or downstream repository that depends on @open-mercato/*. Never modify the framework monorepo, framework-owned packages/, dependency pins, lockfiles, generated output, vendored dependencies, or secrets. Run after the user has selected and installed 0.7.0.
Arguments
--path <dir>: downstream repository root; defaults to the current directory.--dry-run: detect, classify, and report without editing files or running mutating commands.--only <id[,id...]>: limit work to named checks.--skip <id[,id...]>: omit named checks and record the omission in the report.
Reject unknown flags and combining --only with --skip.
Upgrade checks
| ID | Classification | Detect | Action |
|---|---|---|---|
passkey-mfa-assertion |
Detect and report | Callers that post { credentialId, challenge }, or a bare credential id, to POST /api/security/mfa/verify or POST /api/security/sudo/verify, and custom passkey enrollment paths |
Report the removed payload shape and require the object returned by startAuthentication() as payload.response; carry the operator actions for credentials enrolled through the still-open attestation shortcut (#5296) and never delete or reset MFA rows automatically |
jwt-secret-required |
Detect and report | ${JWT_SECRET:-…} defaults in compose files, JWT_SECRET or JWT_<AUDIENCE>_SECRET values that are absent, shorter than 32 characters, or a published placeholder, and JWT_LEGACY_GRACE_MINUTES set without JWT_LEGACY_CUTOVER_AT |
Report the required operator steps before the production rollout, including the legacy-token cutover decision; never generate, print, or write a secret value into a repository file |
standalone-ds-i18n-gates |
Detect and report | Standalone apps missing scripts/ds-check.mjs, scripts/i18n-check-hardcoded.mjs, the matching package.json scripts, the typecheck memory headroom, or yarn ds:check in .ai/agentic.config.json validation.commands |
Report the copy-and-register steps against the current template and the reasoned .ds-check-ignore baseline; keep yarn i18n:check-hardcoded advisory and never add a hard-failing gate to a user's config unprompted |
module-fact-sheet-directories |
Automatic when exact; otherwise report | Literal .ai/guides/modules/<id>.md or .ai/guides/reference-modules/<id>.md reads in harness scripts, skills, or docs |
Rewrite only an exact flat-sheet path to the <id>/index.md form; report globs, manifest-driven readers, and any consumer that enumerated the flat layout |
user-confirmation-semantics |
Detect and report | User creation, setup, or update code that writes isConfirmed: false |
Report each write whose users are still expected to authenticate; do not invent a replacement field |
audit-log-context-shape |
Detect and report | Command interceptors returning metadata.context, and consumers that assume keys are absent from ActionLog.context_json |
Explain the new metadata.logContext input and shallow-merge precedence; do not rewrite ownership-sensitive logging code |
global-search-acl |
Detect and report | Clients of /api/search/search/global authorized only by search.view, custom search.ts entities without aclFeatures, and custom-entity search consumers |
Report the required search.global grant and per-entity view features; include the post-upgrade role-ACL sync command as manual work |
hybrid-search-acl |
Detect and report | Callers of GET /api/search/search authorized only by search.view, and custom search.ts entities that declare no aclFeatures |
Report the per-entity view features those callers now need and the fail-closed behaviour for entity types without aclFeatures; point at OM_SEARCH_DEBUG=true for the dropped-type diagnosis and never widen a role's grants automatically |
preset-search-module |
No code action | Existing crm or empty apps whose module registry omits search |
Explain that only new scaffolds changed and show the optional module registration for apps that want Cmd+K search |
data-sync-batch-traces |
Detect and report | Adapter streamImport/streamExport implementations that return a synchronous iterable of promises, hand-rolled per-batch spans, and saved traces or dashboards that assumed sync work nested under the triggering request |
Report the enforced genuine AsyncIterable contract, the now-redundant adapter span, and the new data_sync.*.batch root traces reached through a span link; never rewrite an adapter's iteration protocol automatically |
tanstack-table-v9 |
Automatic when exact; otherwise report | Root imports of ColumnDef, useReactTable, row-model factories, renamed state/function types, and Jest transform allowlists |
Rewrite only an exact single-specifier type import of ColumnDef to LegacyColumnDef as ColumnDef from @tanstack/react-table/legacy; report combined imports, hooks, generics, renamed types, and Jest config for review |
ioredis-resp2 |
Detect and report | Direct ioredis construction that does not use shared connection helpers or REDIS_WIRE_PROTOCOL |
Report the client and require an explicit RESP2 decision; never inject connection options blindly |
sales-line-default-order |
No code action | Consumers of order-line or quote-line list endpoints that pass no explicit sort | Explain the new line_number ASC, id ASC default, cache-TTL caveat, and ?sortField=id compatibility choice |
workflow-unresolved-templates |
Detect and report | Source-controlled UPDATE_ENTITY inputs or EMIT_EVENT payloads containing literal {{...}} templates |
Report candidates that may intentionally pass braces through and require review of stored workflow definitions; never escape or relocate templates automatically |
credential-free-integrations |
No code action | Integrations or bundles declaring an effective credentials schema with fields: [] |
Explain that they now resolve as configured and that inherited bundle credentials still win |
removed-example-injection-flag |
Automatic when exact; otherwise report | NEXT_PUBLIC_OM_EXAMPLE_INJECTION_WIDGETS_ENABLED in environment files, deployment config, source, or copied example injection registries |
Remove only an exact assignment line in a regular .env* file without displaying its value; report every other occurrence and every conditional registry for manual simplification |
module-facts-v2 |
Detect and report | Direct readers of .ai/guides/module-facts.json, explicit factsContractVersion: 1, pinned contribution IDs/modes, and extension-table workarounds |
Report migration to the v2 sidecar/default extractor contract and require consumers to repin intentionally; do not rewrite fact IDs or explicit extension tables |
settings-section-group-id |
Automatic when exact; otherwise report | Injected groupId values and buildSettingsSections order maps keyed by rendered-label slugs |
Replace only the exact groupId: 'module-configs' or double-quoted equivalent with settings.sections.moduleConfigs, preserving quote style; report every other slug and sectionOrder key |
webhook-body-limits |
No code action | Public webhook deployments and custom payment handler registrations | Report the 1 MiB global ceiling, the InboxOps override, proxy-limit alignment, and provider verification required before opting payment handlers into maxBodyBytes |
standalone-security-headers |
Detect and report | Standalone next.config.* files missing the current CSP and attachment sandbox headers |
Point to the latest template and require a manual merge that preserves provider origins and the attachment sandbox; never replace a whole Next.js config |
sidebar-preference-null |
Detect and report | Callers of loadSidebarPreference from @open-mercato/core/modules/auth/services/sidebarPreferencesService |
Report the findSidebarPreference replacement and its null contract, and warn that feeding the fabricated default object back into applySidebarPreference erases the role layer; leave intentional default-object callers to (await findSidebarPreference(em, scope)) ?? normalizeSidebarSettings(null) |
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.
- 13d ago First seen · 112 lines · 141 tokens per session scan A e48058704310
om-auto-upgrade-0.6.7-to-0.7.0 is a skill published in the GitHub repository open-mercato/open-mercato (1,720 stars, last pushed yesterday), licensed MIT. It adds 141 tokens to every session and 3,037 once invoked, about $0.0007 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.
Other skills, from other repositories
drizzle-orm
Use when modeling data or querying with Drizzle ORM in TypeScript — pgTable schema in .ts, type-safe select/insert/relational queries, drizzle-kit migrations. NOT Prisma Client or schema.prisma (that is prisma-orm), NOT ORM-agnostic migration strategy (that is db-migrations), NOT Postgres engine tuning or EXPLAIN…
prisma-orm
Use when modeling data or writing type-safe queries with Prisma ORM in TypeScript — schema.prisma, prisma.config.ts, the generated Prisma Client, and Prisma Migrate, including the v6 to v7 upgrade. NOT schema-as-TS with a SQL builder (that is drizzle-orm), NOT ORM-agnostic zero-downtime migration (that is…
frontmcp-production-readiness
Pre-production audit, hardening, and go-live checklists for FrontMCP servers. Use before shipping to verify security hardening, performance, reliability, and observability, and for target-specific production checklists: Node server (Docker, graceful shutdown, Redis session scaling), Vercel and edge (cold-start…
frontmcp-setup
Use when starting, scaffolding, or organizing a FrontMCP project. Covers creating a new project (CLI scaffold or manual) for Node, Vercel, and other targets; standalone versus Nx-monorepo layout, naming conventions, generators, and dependency rules; composing multiple @App classes, ESM packages, and remote MCP servers…
azure-cosmos-ts
Data plane SDK for Azure Cosmos DB NoSQL API operations — CRUD on documents, queries, bulk operations.
azure-postgres-ts
Connect to Azure Database for PostgreSQL Flexible Server using the pg (node-postgres) package with support for password and Microsoft Entra ID (passwordless) authentication.