Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/SAP/leanix-ai-pluginsnpx agentmods add skills/sap/leanix-ai-plugins/automations-toolkitWrote 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/sap/leanix-ai-plugins/automations-toolkit)<a href="https://agentmods.dev/skills/sap/leanix-ai-plugins/automations-toolkit"><img src="https://agentmods.dev/badge/skills/sap/leanix-ai-plugins/automations-toolkit/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/sap/leanix-ai-plugins/automations-toolkit"><img src="https://agentmods.dev/badge/skills/sap/leanix-ai-plugins/automations-toolkit.svg" alt="Reviewed on agentmods" width="80" 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.1 | $0.00093 | $0.06036 |
| Opus 5.5 | $0.00037 | $0.02414 |
| Sonnet 5.5 | $0.00019 | $0.01207 |
| Haiku 4.5 | $0.00009 | $0.00604 |
Grade A, and why
automations-toolkit scanned grade A 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 today.
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.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
**All LeanIX API calls use MCP tools.** No shell commands, no token exchange, no curl. How it starts
The opening of the file, as written. The whole thing — 523 lines — stays where its author put it; the contents beside it link to each section on GitHub.
LeanIX Automation Assistant
Comprehensive help for LeanIX Run Script automations: create, debug, design, optimize, and learn.
CRITICAL: API Access
All LeanIX API calls use MCP tools. No shell commands, no token exchange, no curl.
- Authentication is handled internally by the MCP server
- No bearer tokens need to be managed in the skill workflow
- No
.mcp.jsonparsing is required — MCP handles credentials automatically
Anti-Patterns (Don't Do This)
| Pattern | Why It Fails |
|---|---|
function main(data) or function main(context) |
main() takes zero parameters. data and context are injected globals at runtime. |
function main(){}; export { main } (re-export) or export default function main() |
The save-time validator requires direct export: export function main(), export async function main(), or export const main = .... |
async function main() with no await inside |
require-await lint rule blocks save. Drop async if no await. |
Top-level await outside main() |
Rejected by TS1308. await only works inside the async main() body. |
import statements |
The runner blocks module imports and remote code fetches; rejected by TS2307. Only fetch, data, context, and standard JS built-ins are available. |
TS-style type annotations in .js (e.g. function f(x: string)) |
Rejected by TS8010. |
Calling Deno, setTimeout, setInterval, eval, Function, WebAssembly |
These globals are deleted at runtime. ReferenceError at execute time. |
Relying on console.log for visible output |
Captured to stdout (returned in execution result), but NOT shown prominently in the Automations UI. For visible failure, throw new Error(...). |
relApplicationToITComponent without wrapper |
Must use ... on Application { relApplicationToITComponent { } } |
Mutations without currentRev tracking |
Revision conflict errors |
| No idempotency check | Infinite loop when automation re-triggers itself |
Using name for ITComponent matching |
Use displayName to include Provider prefix |
| Returning relations/subscriptions | Return object can't update these - use GraphQL |
| Using a technical/service identity as ownerId | Shows "null null" in UI — use set_owner_to_current_user=True (on update_automation only) or a real human user's ID |
Guessing API endpoints (e.g., /scripts/{id}, /technicalUsers) |
Use MCP tools — they handle endpoints internally |
Setting creatorId on template update |
Immutable; silently ignored (API returns 200 but no change) |
| Investigating UUIDs before comparing with working automations | Slow; comparison-first debugging is faster |
| Re-fetching templates without caching | Redundant MCP calls; cache list_automations() result in context for the session |
Building the secret key dynamically ("default_" + "auto...") |
Reference the secret key literally as "default_automations_secret" so it resolves. Dynamic construction means the secret is not attached — context.secrets ends up empty. |
LIFECYCLE_PHASE_CHANGE trigger combined with IGNORE_TECHNICAL_USERS condition |
Service rejects: technical-user condition is not allowed on job-type triggers. |
Multiple actions with startsAfter: null (or zero such actions) |
Exactly one first action is allowed per template. All others must chain via startsAfter. |
Inline script: "..." field on an action payload |
Service strips it. Always create scripts separately via POST /scripts and reference by scriptId. |
Using console.warn / console.info / console.debug for diagnostics |
Not captured by the runner; output is silently dropped. Only console.log and console.error are captured (to stdout / stderr). |
Mutating data or context in place |
The runner process is reused across executions and globals are restored between runs. Treat both as read-only. |
What ships with it
57 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.
- examples/api-calls/fetch-fact-sheets.js 2.0 KB runs code
- examples/api-calls/README.md 5.3 KB
- examples/archive/archive-initiative-after-eol.js 1.9 KB runs code
- examples/basic/hello-world.js 299 B runs code
- examples/basic/README.md 1.5 KB
- examples/data-processing/filter-applications.js 815 B runs code
- examples/data-processing/README.md 3.2 KB
- examples/INDEX.md 21 KB
- examples/initiative-management/initiative-status-permission-sync.js 4.9 KB runs code
- examples/initiative-management/README.md 4.0 KB
- examples/lifecycle-actions/archive-on-tag.js 2.3 KB runs code
- examples/lifecycle-actions/llm-eoss-todo-on-application.js 8.5 KB runs code
- examples/lifecycle-actions/llm-eoss-todo-on-application.README.md 5.2 KB
- examples/lifecycle-management/bc-eol-break-app-seal.js 3.7 KB runs code
- examples/lifecycle-management/README.md 1.6 KB
- examples/notifications/dynamic-todo-notification.js 2.8 KB runs code
- examples/relation-creation/auto-link-itc-by-provider.js 6.3 KB runs code
- examples/relation-field-propagation/field-propagation-reconciler.js 9.3 KB runs code
- examples/relation-field-propagation/field-propagation-through-hierarchy.js 21 KB runs code
- examples/relation-field-propagation/README.md 9.9 KB
- examples/relation-management/link-app-to-microsoft-itc.js 3.9 KB runs code
- examples/relation-management/obsolescence-risk-calculator.js 4.0 KB runs code
- examples/relation-management/README.md 3.6 KB
- examples/relation-propagation/bc-cleanup-on-child-unlink.js 7.0 KB runs code
- examples/relation-propagation/bc-propagate-to-parent.js 8.0 KB runs code
- examples/relation-propagation/bc-reconcile-all-parents.js 9.9 KB runs code
- examples/relation-propagation/README.md 5.1 KB
- examples/reports/lifecycle-report.js 1.9 KB runs code
- examples/reports/README.md 3.4 KB
- examples/subscription-inheritance/app-owner-to-interface.js 4.2 KB runs code
- examples/subscription-inheritance/app-owner-to-itc.js 4.5 KB runs code
- examples/subscription-inheritance/itc-owner-cleanup.js 4.3 KB runs code
- examples/subscription-inheritance/README.md 4.1 KB
- examples/subscription-management/eol-subscriber-downgrade.js 3.1 KB runs code
- examples/subscription-management/it-app-owner-guard.js 2.8 KB runs code
- examples/subscription-management/README.md 3.0 KB
- examples/subscription-management/subscription-role-counter.js 2.3 KB runs code
- examples/tagging/document-sensitivity-tagging.js 5.7 KB runs code
- examples/tagging/energy-consumption-tagging.js 1.6 KB runs code
- examples/tagging/README.md 3.8 KB
- examples/tagging/relation-based-tagging.js 4.2 KB runs code
- examples/tagging/risk-currency-rollup/README.md 11 KB
- examples/tagging/risk-currency-rollup/risk-currency-app-trigger.js 4.5 KB runs code
- examples/tagging/risk-currency-rollup/risk-currency-itc-trigger.js 7.0 KB runs code
- examples/transitive-relations/app-bc-context-sync.js 7.6 KB runs code
- examples/transitive-relations/bc-propagate-context-to-apps.js 8.6 KB runs code
- examples/transitive-relations/README.md 4.5 KB
- examples/utilities/data-validator.js 1.7 KB runs code
- examples/utilities/README.md 3.8 KB
- README.md 1.2 KB
- references/API-REFERENCE.md 47 KB
- references/CRITICAL-RULES.md 6.3 KB
- references/LEANIX-MODEL.md 19 KB
- references/MANAGE-AUTOMATIONS.md 4.0 KB
- references/NAMING-CONVENTION.md 5.3 KB
- references/TEMPLATES.md 68 KB
- references/WORKSPACE-ANALYSIS.md 14 KB
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.
- today First seen · 523 lines · 93 tokens per session scan A ee8d08426c30
automations-toolkit is a skill published in the GitHub repository SAP/leanix-ai-plugins (10 stars, last pushed 1mo ago), licensed Apache-2.0. It adds 93 tokens to every session and 6,036 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-11-07.
automations-toolkit compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| automations-toolkitSAP/leanix-ai-plugins | Skill | 10 | 1mo ago | Apache-2.0 | A | 93 | Claude Code |
| api-errorscyanheads/obsidian-mcp-server | Skill | 702 | 7d ago | Apache-2.0 | A | 54 | Claude Code |
| debugging-mutationsserac-labs/serac | Skill | 77 | 17d ago | Apache-2.0 | A | 41 | Claude Code |
| diagnose-connectivitypyworkload/3x-ui-mcp | Skill | 7 | 21d ago | MIT | A | 83 | Claude Code, Codex |
| sn-safe-writeIvanBBaev/servicenow-mcp-ai | Skill | 11 | 6d ago | GPL-3.0 | A | 43 | Claude Code |
| sn-triageIvanBBaev/servicenow-mcp-ai | Skill | 11 | 6d ago | GPL-3.0 | A | 50 | Claude Code |
| sn-impactIvanBBaev/servicenow-mcp-ai | Skill | 11 | 6d ago | GPL-3.0 | A | 47 | Claude Code |