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 fdueblab/Micro-Agent --skill video_action_recognitiongit clone --depth 1 https://github.com/fdueblab/Micro-AgentWrote 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/fdueblab/micro-agent/video_action_recognition)<a href="https://agentmods.dev/skills/fdueblab/micro-agent/video_action_recognition"><img src="https://agentmods.dev/badge/skills/fdueblab/micro-agent/video_action_recognition/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/fdueblab/micro-agent/video_action_recognition"><img src="https://agentmods.dev/badge/skills/fdueblab/micro-agent/video_action_recognition.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.00000 | $0.01769 |
| Opus 5 | $0.00000 | $0.00885 |
| Sonnet 5 | $0.00000 | $0.00354 |
| Haiku 4.5 | $0.00000 | $0.00177 |
Grade A, and why
video_action_recognition 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 9d 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.
Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
subprocess.run(cmd, check=True, capture_output=True, text=True) How it starts
The opening of the file, as written. The whole thing — 185 lines — stays where its author put it; the contents beside it link to each section on GitHub.
视频动作识别技术指导
本技能为基于视频的人体动作识别算法提供技术规范与实现指导。 适用于需要从视频中检测和分类人体动作、且不依赖 LLM 或模型训练的场景。
技术路线总览
对于不需要训练的视频动作分类任务,推荐以下流水线:
视频获取 → 帧采样 → 人体姿态估计(预训练) → 关键点轨迹提取 → 运动学特征计算 → 规则分类器 → 输出标签
一、视频获取与预处理
1.1 从 YouTube 下载视频
使用 yt-dlp(youtube-dl 的活跃维护分支):
import subprocess, os
def download_video(url: str, output_dir: str = "videos") -> str:
os.makedirs(output_dir, exist_ok=True)
output_template = os.path.join(output_dir, "%(id)s.%(ext)s")
cmd = [
"yt-dlp",
"-f", "bestvideo[height<=720][ext=mp4]+bestaudio[ext=m4a]/best[height<=720][ext=mp4]/best",
"--merge-output-format", "mp4",
"-o", output_template,
url,
]
subprocess.run(cmd, check=True, capture_output=True, text=True)
video_id = url.split("v=")[-1].split("&")[0]
return os.path.join(output_dir, f"{video_id}.mp4")
依赖:pip install yt-dlp
1.2 帧采样策略
- 建议采样率:每秒 5-10 帧(fps=5~10)即可满足动作识别需求
- 对于短视频(<60s),可使用均匀采样(如每隔 N 帧取 1 帧)
- 对于长视频,可先做运动检测,只对有运动的片段进行分析
import cv2
def extract_frames(video_path: str, sample_fps: int = 5) -> list:
cap = cv2.VideoCapture(video_path)
original_fps = cap.get(cv2.CAP_PROP_FPS)
frame_interval = max(1, int(original_fps / sample_fps))
frames = []
idx = 0
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
if idx % frame_interval == 0:
frames.append(frame)
idx += 1
cap.release()
return frames
二、人体姿态估计(MediaPipe Pose)
2.1 基本用法
MediaPipe Pose 提供 33 个人体关键点,无需训练,直接推理:
import mediapipe as mp
import numpy as np
mp_pose = mp.solutions.pose
def detect_pose_sequence(frames: list) -> list:
pose = mp_pose.Pose(
static_image_mode=False,
model_complexity=1,
min_detection_confidence=0.5,
min_tracking_confidence=0.5,
)
keypoints_sequence = []
for frame in frames:
rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
results = pose.process(rgb)
if results.pose_landmarks:
kps = np.array([
[lm.x, lm.y, lm.z, lm.visibility]
for lm in results.pose_landmarks.landmark
])
keypoints_sequence.append(kps)
else:
keypoints_sequence.append(None)
pose.close()
return keypoints_sequence
What ships with it
1 file 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.
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.
- 9d ago First seen · 185 lines · 0 tokens per session scan A d120d6176c0f
video_action_recognition is a skill published in the GitHub repository fdueblab/Micro-Agent (99 stars, last pushed 27d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,769 tokens. A static security scan graded it A with 1 finding (runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
saelens
Train sparse autoencoders to interpret model features.
batch-processing-clinical-text
Run large-scale batch NER, PII extraction, or de-identification over many clinical notes on-device with OpenMed, with sharding, checkpointing, resumability, and append-only JSONL output. Use when the user needs to process a corpus or folder of notes, de-identify a dataset, run NER over thousands of documents, build a…
exporting-to-fhir
Convert OpenMed NER output (entities from openmed.analyzetext) into FHIR R4 resources — Condition, MedicationStatement, Observation — using OpenMed's built-in FHIR R4 export helpers in openmed.clinical.exporters. Covers the verified CodeableConcept builder (coding, codeableconcept, systemuri), deterministic fullUrl…
choosing-openmed-models
Discover and pick the right OpenMed model for a clinical or biomedical task, domain, or language. Use when the user asks which OpenMed model to use, wants to list model categories, find a Disease vs Oncology vs Privacy/PII model, get a PII model for a specific language, search models by size or task, or inspect a…
extracting-clinical-entities
Run clinical and biomedical named-entity recognition on medical text with OpenMed's analyzetext. Use when the user wants to extract diseases, drugs, anatomy, genes, or other biomedical entities from notes; needs NER output as dict/json/html/csv; wants to filter by confidence, group entities, toggle sentence detection…
loading-openmed-models
Load OpenMed clinical/biomedical NER models from the Hugging Face Hub or a local path and reuse them efficiently across calls. Use when the user wants to load an OpenMed model, control the model cache, run fully offline after a one-time download, reuse a ModelLoader to avoid reloading, set a cachedir or device, or…