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 skills add oxy-hq/oxygen --skill oxy-automationsgit clone --depth 1 https://github.com/oxy-hq/oxygenWrote 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/oxy-hq/oxygen/oxy-automations)<a href="https://agentmods.dev/skills/oxy-hq/oxygen/oxy-automations"><img src="https://agentmods.dev/badge/skills/oxy-hq/oxygen/oxy-automations/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/oxy-hq/oxygen/oxy-automations"><img src="https://agentmods.dev/badge/skills/oxy-hq/oxygen/oxy-automations.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.00140 | $0.01543 |
| Opus 5.5 | $0.00056 | $0.00617 |
| Sonnet 5.5 | $0.00028 | $0.00309 |
| Haiku 4.5 | $0.00014 | $0.00154 |
Grade A, and why
oxy-automations 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 yesterday.
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 — 114 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Oxy automations
The reference is upstream and maintained — read it rather than guessing:
https://www.oxygen-hq.com/docs/guide/build/automations
(index, loops, task-types, variables).
This skill deliberately does not restate the schema. It carries the things that reference does not tell you, and the mistakes that cost time.
The file-naming trap
The canonical extension is .automation.yml.
.procedure.ymlis the legacy name. It is still accepted, so a workspace full of it keeps working and nothing warns you — which is exactly why it spreads. One production workspace has 18 automations, and every one of them is still.procedure.yml..workflow.ymlis no longer a recognised file kind at all. A file with that name is silently not an automation, andoxy runrefuses it.oxy migrate-automationsrenames legacy files (and rewrites references to them);--dry-runpreviews. It is the only thing that reads.workflow.ymlfiles for that purpose.
Write new files as .automation.yml. Do not copy the extension from a
neighbouring file in the workspace you are editing — that is how the legacy name
propagated in the first place.
Naming, and why the code disagrees with the docs
"Automation" is the current name for what used to be called a Procedure, and
before that a Workflow. The sub-automation task is still type: workflow, and
API payloads and stored run records still say workflow — those are wire and
storage contracts, not stale naming to be tidied up. Seeing workflow in a
payload does not mean you are looking at something deprecated.
Routes follow the same split: /automations/:id is canonical;
/workflows/:id, /procedures, and /agentic-workflows are aliases.
Task-type gotchas
- A misspelled
type:passes validation and fails only at run time. An unrecognised task type —type: sql,type: execute— is read as an "unknown" step rather than rejected, sooxy validatereports the file valid and the run fails on that step withunknown task type. Check everytype:against the task-types page by eye, then run the automation; validation alone proves nothing here. (A wrong field inside a known type, such asquery:instead ofsql_query:, does fail validation.) {{ step_name }}renders as JSON rows, not as a table. A prior SQL step's result renders into a template as a compact JSON list of row objects ([{"region": "west", "total": 42}, …]). That is what anagentorformatterprompt wants, and what a loop iterates over — butSELECT … FROM {{ extract }}sends that JSON to the warehouse as SQL and fails. To chain SQL steps, either inline the earlier query as a CTE in the later step, or have the earlier step write a table (CREATE OR REPLACE TABLE …) and read the table by name.http_requestis HTTPS-only and blocks private egress. Requests to localhost, cloud-metadata endpoints, and private IP ranges are refused unless that task opts in withallow_hosts. A task that works locally and fails in cloud is usually this, not a network problem.- Partial failures are their own state. A run where some steps failed records
as
completed_with_errors, not as a failed run. Code and dashboards that only check for "failed" will report it as a success.
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.
- yesterday Changed · +46 lines · +140 tokens per session 4f8e5fd369c7
- 2d ago First seen · 68 lines · 0 tokens per session scan A fd9f5f7f6098
oxy-automations is a skill published in the GitHub repository oxy-hq/oxygen (203 stars, last pushed yesterday), licensed Apache-2.0. It adds 140 tokens to every session and 1,543 once invoked, about $0.0006 per session on Opus 5.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-10-14.
Other skills, from other repositories
story-readiness
Is a story implementation-ready? Checks clear acceptance criteria, open questions, ADR refs. READY/NEEDS WORK/BLOCKED/NOT ASSESSED.
recipe-create-meet-space
Create a Google Meet meeting space and share the join link.
workthreads
SpecStory Workthreads - a weekly work-thread rollup across a team's repos from SpecStory coding histories (any agent - Claude Code, Codex, Cursor, Gemini, and more). It groups the window's sessions into threads of work per project and labels each new / open / recently closed, so a lead sees what shipped, what is still…
atmos-config
Atmos root configuration: atmos.yaml discovery, precedence, deep merging, basepath, imports, minimal bootstrap, and routing to narrower Atmos skills.
projects
List all managed projects with status, branch, open PRs, and open issue counts — portfolio-level view.
handle-linkedin-connection-request-signal
Use this skill when someone sends a team member an inbound LinkedIn connection request. An inbound request is a deliberate, ACTIVE first-party intent signal — meaningfully stronger than a passive profile view — and it deserves different scoring rules. The skill resolves and enriches the requester, gates them through…