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 skills/asysta-act/agent-flow/version-checknpx skills add asysta-act/agent-flow --skill version-checkgit clone --depth 1 https://github.com/asysta-act/agent-flowWhat 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.00012 | $0.02319 |
| Opus 5 | $0.00006 | $0.01159 |
| Sonnet 5 | $0.00002 | $0.00464 |
| Haiku 4.5 | $0.00001 | $0.00232 |
Grade A, and why
version-check 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 2d 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 — 120 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Version Check
Check whether the installed plugin version is up to date. Works from any directory.
Plugin Identity
| Key | Value |
|---|---|
| Plugin | agent-flow |
| Marketplace | agent-flow |
| Legacy names | CLAUDE-agents |
All steps below use {plugin} and {marketplace} from this table.
Steps
Part A: Installed Plugin Status (always runs)
-
Read
~/.claude/plugins/installed_plugins.json.- If the file does not exist → report: "Claude Code plugin registry not found at
~/.claude/plugins/installed_plugins.json. No plugins installed — run/plugin installfirst." and STOP. - If the file is empty or is not valid JSON → report: "Plugin registry at
~/.claude/plugins/installed_plugins.jsonis empty or corrupt — cannot parse." and STOP. - Search for the plugin: find any key in
pluginsthat starts with{plugin}@. If no match, also search for keys starting with any name inLegacy names(e.g.CLAUDE-agents@). Prefer{plugin}@{marketplace}if it exists; otherwise use the first match. - If no matching key found → report: "{plugin} plugin is not installed. Run:
/plugin install {plugin}@{marketplace}" and STOP. - Read
versionandinstallPathfrom the matched entry. Store asinstalled_version,install_path, and note the actual registry key asregistry_key. - If
registry_keydoes not equal{plugin}@{marketplace}→ warn: "Plugin is registered under{registry_key}instead of{plugin}@{marketplace}. Consider reinstalling:/plugin uninstall {plugin}then/plugin install {plugin}@{marketplace}"
- If the file does not exist → report: "Claude Code plugin registry not found at
-
Verify
install_pathexists on disk.- If it does not exist → warn: "Install path
{install_path}does not exist — plugin may need reinstalling. Run:/plugin uninstall {plugin}then/plugin install {plugin}@{marketplace}". Continue to step 3.
- If it does not exist → warn: "Install path
-
Determine the latest available version from remote.
- Determine the remote URL to query. Try these sources in order (first success wins):
- If CWD is a git repo AND Part B will activate (
.claude-plugin/plugin.jsonexists with matchingname) → usegit remote get-url originfrom CWD. This is the most reliable source (uses the developer's configured SSH/HTTPS auth). - Otherwise → read
{install_path}/.claude-plugin/plugin.jsonand extract therepositoryfield. - If neither source yields a URL → report: "Remote version check skipped — no remote URL available." Skip to step 4 (show installed version only).
- If CWD is a git repo AND Part B will activate (
- Before running the remote call, check whether the URL is a placeholder. This check applies to source-2 only (plugin.json
repository); source-1 (usergit remote) is trusted by definition.
The boundary anchor# RFC 2606 reserved TLD fast-fail: # source-2 only; HTTPS-only scope; SSH SCP-style deferred (no source-1 check) # Extract hostname from URL, then match (test|example|invalid|localhost) as last DNS label # or as the bare host. Path-anchored matching avoids false positives where a reserved # label appears in a path component (e.g. github.com/foo.invalid/bar). # Match alternation kept inline for harness compatibility: (test|example|invalid|localhost) host=$(echo "$remote_url" | sed -E 's|^[a-z]+://([^/]+).*|\1|' | sed -E 's|^[^@]+@||' | sed -E 's|:[0-9]+$||') host="${host%.}" # strip RFC 1034 trailing dot last_label=$(echo "$host" | awk -F. '{print $NF}') if [ "$last_label" = "test" ] || [ "$last_label" = "example" ] || [ "$last_label" = "invalid" ] || [ "$last_label" = "localhost" ] \ || [ "$host" = "test" ] || [ "$host" = "example" ] || [ "$host" = "invalid" ] || [ "$host" = "localhost" ]; then echo "Remote version check skipped — plugin.json \`repository\` field is a placeholder. Set it to a real URL." exit 0 fi(/|:|$)is implicit in the hostname-extract step — the host is delimited by/or end-of-string after the scheme, so the URL parser handles boundary detection. - Run:
Iftimeout 10 git ls-remote --tags {remote_url} 'refs/tags/v*' 2>/dev/null | grep -v '\^{}' | sort -t/ -k3 -V | tail -1timeoutis not available, omit it and rungit ls-remotedirectly. - If the command fails (network error, SSL error, auth failure, timeout) → report: "Cannot reach remote repository. Showing installed version only." Skip to step 4.
- If the output is empty (no tags, or no tags matching
v*) → report: "No version tags found on remote repository. Showing installed version only." Skip to step 4. - Extract the version string from the tag reference (e.g.,
refs/tags/v5.5.1→5.5.1). Store asremote_version.
- Determine the remote URL to query. Try these sources in order (first success wins):
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.
- 2d ago First seen · 120 lines · 12 tokens per session scan A fc07131c7013
version-check is a skill published in the GitHub repository asysta-act/agent-flow (12 stars, last pushed 1mo ago), licensed MIT. It adds 12 tokens to every session and 2,319 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.
Other skills, from other repositories
team-up
Orchestrate persistent agent teams with TeamCreate. Use when the user says "team up", "spin up a team", or invokes /team-up.
cortivex-pipeline
Build and run AI agent pipelines that decompose complex tasks into coordinated agent workflows.
agent-code-analyzer
Agent skill for code-analyzer - invoke with $agent-code-analyzer.
foundry-config-setup
Resolve missing setup caused by a hardcoded Foundry project endpoint or model in a sample. Use when a sample fails because it uses a placeholder/hardcoded projectendpoint (for example "https://your-project.services.ai.azure.com") or a hardcoded model instead of reading them from the environment.
haiku
When writing a haiku for this bot, follow these conventions.
deploy-docker-compose
Run the Omnigent server as a Docker compose stack (server + Postgres) on any Docker host — your laptop, a VPS, EC2 by hand, or as the base layer of any container-platform deploy. Invoke when the user wants to build the image, bring up the compose stack, debug the stack on a host they already have, or extend the stack…