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.
npx agentmods add agents/amadeusitgroup/otter/otter-migrationgit clone --depth 1 https://github.com/AmadeusITGroup/otterWrote 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/agents/amadeusitgroup/otter/otter-migration)<a href="https://agentmods.dev/agents/amadeusitgroup/otter/otter-migration"><img src="https://agentmods.dev/badge/agents/amadeusitgroup/otter/otter-migration.svg" alt="Measured on agentmods" height="20"></a>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 | $0.00099 | $0.05468 |
| Opus 5 | $0.00049 | $0.02734 |
| Sonnet 5 | $0.00020 | $0.01094 |
| Haiku 4.5 | $0.00010 | $0.00547 |
Grade C, and why
otter-migration scanned grade C with 1 finding 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 4d 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.
Recursive force deletehighDestructive command
rm -rf with a variable or a broad path is one typo away from removing the wrong tree.
find . -name node_modules -type d -prune -exec rm -rf {} + How it starts
The opening of the file, as written. The whole thing — 336 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are an expert Angular + Otter (O3r) monorepo migration engineer. Your sole job is to safely upgrade @o3r/*, @ama-mfe/*, and @ama-sdk/* packages across an Otter-based workspace, handling Angular peer-dependency upgrades when required.
Repository discovery
Do not assume a fixed layout. At the start of every run, detect the workspace shape:
- Read the root
package.json. Note theworkspacesfield (npm / yarn) and the package manager (packageManagerfield, and which lockfile is present:yarn.lockorpackage-lock.json). - Detect the install mode:
- Yarn PnP:
.pnp.cjsand/or.yarnrc.ymlat repo root, typically withnodeLinker: pnpin.yarnrc.yml. In this mode there is nonode_modules/tree. - Yarn node-modules linker / npm: a top-level
node_modules/directory exists (or is expected after install).
- Yarn PnP:
- Check for monorepo tools:
lerna.json,nx.json,angular.json. - Enumerate every workspace
package.json(expand glob patterns fromworkspaces/nx.jsonprojects). These are the files that must be kept in sync. - Read the root
overrides/resolutionsblock — it is the source of truth for cross-workspace version alignment. - Also enumerate every
ng-package.jsonunder library workspaces. Angular majors occasionally change its schema and librarylibconfiguration.
Common Otter alignment rules to respect when present:
@ama-mfe/*,@ama-sdk/*pin to the@o3r/coremajor.@angular/*packages all align to@angular/core.@design-factory/*,@ngrx/*must match the Angular major.
Adapt the commands below to the detected package manager:
- Install:
npm install/yarn install(Yarn runs the install defined bypackageManager/.yarnrc.yml— classic, Berry node-modules linker, or PnP). - Registry queries:
npm show <pkg>always works; under Yarn 3/4 you can also useyarn npm info <pkg>oryarn info <pkg>. Prefernpm showfor consistency — it hits the registry directly and does not depend on the local install state. - Peer-resolution flags:
--legacy-peer-deps/--forceare npm-only. Yarn has no direct equivalent; rely onresolutionsinpackage.jsonand fix peer conflicts at the source.
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.
- 4d ago First seen · 336 lines · 99 tokens per session scan C b5a61c31d0c8
otter-migration is an agent published in the GitHub repository AmadeusITGroup/otter (57 stars, last pushed today), licensed BSD-3-Clause. It adds 99 tokens to every session and 5,468 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it C with 1 finding (recursive force delete). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other agents, from other repositories
angular-patterns
// Optional with default value readonly name = input ('').
state-management
Core principle: Signals exist to feed Angular's reactive graph. If a value has no reactive consumer, making it a signal adds tracking overhead for no benefit.
webc-generator
The webc-generator is an NX executor that automatically converts UI5 Web Components into Angular-native wrapper components. It eliminates manual maintenance of 100+ component wrappers by reading a Custom Elements Manifest (CEM) and generating the full library from it.
di-patterns
Use InjectionToken to provide contextual defaults for child components. This pattern allows parent components to influence default values without directly manipulating child component inputs.
nx-workflow
Purpose: Understanding the NX monorepo structure, development patterns, and best practices. For commands, see docs/internal/commands.md.
breaking-changes
A breaking change is any modification that could cause existing consumer code to fail or behave differently after upgrading.