MCP Server Builder
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
Run the Iris harbor job-history analyzer (scripts/iris/analyzeirisharborjob.py) on a datagen/eval job and read its JSON sidecar for trustworthy throughput / preemption / productive-trial stats.
$ npx skills add open-thoughts/OpenThoughts-Agent --skill analyze-job-history-iris -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install open-thoughts/OpenThoughts-Agent analyze-job-history-iris --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/open-thoughts/OpenThoughts-Agent.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/analyze-job-history-iris .claude/skills/analyze-job-history-iris && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "analyze-job-history-iris" agent skill from https://github.com/open-thoughts/OpenThoughts-Agent/tree/main/.agents/skills/analyze-job-history-iris into .claude/skills/analyze-job-history-iris/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "analyze-job-history-iris", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/open-thoughts/OpenThoughts-Agent/tree/main/.agents/skills/analyze-job-history-irisType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add open-thoughts/OpenThoughts-Agent --skill analyze-job-history-iris -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install open-thoughts/OpenThoughts-Agent analyze-job-history-iris --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-thoughts/OpenThoughts-Agent.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/analyze-job-history-iris .agents/skills/analyze-job-history-iris && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "analyze-job-history-iris" agent skill from https://github.com/open-thoughts/OpenThoughts-Agent/tree/main/.agents/skills/analyze-job-history-iris into .agents/skills/analyze-job-history-iris/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "analyze-job-history-iris", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add open-thoughts/OpenThoughts-Agent --skill analyze-job-history-iris -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install open-thoughts/OpenThoughts-Agent analyze-job-history-iris --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-thoughts/OpenThoughts-Agent.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/analyze-job-history-iris .cursor/skills/analyze-job-history-iris && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "analyze-job-history-iris" agent skill from https://github.com/open-thoughts/OpenThoughts-Agent/tree/main/.agents/skills/analyze-job-history-iris into .cursor/skills/analyze-job-history-iris/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "analyze-job-history-iris", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/open-thoughts/OpenThoughts-Agent.git --path .agents/skills/analyze-job-history-iris--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add open-thoughts/OpenThoughts-Agent --skill analyze-job-history-iris -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install open-thoughts/OpenThoughts-Agent analyze-job-history-iris --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-thoughts/OpenThoughts-Agent.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/analyze-job-history-iris .gemini/skills/analyze-job-history-iris && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "analyze-job-history-iris" agent skill from https://github.com/open-thoughts/OpenThoughts-Agent/tree/main/.agents/skills/analyze-job-history-iris into .gemini/skills/analyze-job-history-iris/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "analyze-job-history-iris", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install open-thoughts/OpenThoughts-Agent analyze-job-history-irisInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add open-thoughts/OpenThoughts-Agent --skill analyze-job-history-iris -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/open-thoughts/OpenThoughts-Agent.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/analyze-job-history-iris .github/skills/analyze-job-history-iris && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "analyze-job-history-iris" agent skill from https://github.com/open-thoughts/OpenThoughts-Agent/tree/main/.agents/skills/analyze-job-history-iris into .github/skills/analyze-job-history-iris/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "analyze-job-history-iris", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add open-thoughts/OpenThoughts-Agent --skill analyze-job-history-iris -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install open-thoughts/OpenThoughts-Agent analyze-job-history-iris --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-thoughts/OpenThoughts-Agent.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/analyze-job-history-iris .opencode/skills/analyze-job-history-iris && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "analyze-job-history-iris" agent skill from https://github.com/open-thoughts/OpenThoughts-Agent/tree/main/.agents/skills/analyze-job-history-iris into .opencode/skills/analyze-job-history-iris/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "analyze-job-history-iris", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
analyze-job-history-irisRun the Iris harbor job-history analyzer (scripts/iris/analyzeirisharborjob.py) on a datagen/eval job and read its JSON sidecar for trustworthy throughput / preemption / productive-trial stats.
Analyze Job History Iris is an agent skill from open-thoughts/OpenThoughts-Agent. Run the Iris harbor job-history analyzer (scripts/iris/analyzeirisharborjob.py) on a datagen/eval job and read its JSON sidecar for trustworthy throughput / preemption / productive-trial stats. Use whenever a status check needs REAL metrics (gen tok/s, cycles, nonempty rate, harbor exceptions) instead of an eyeballed log tail. It now queries the finelog log store directly (live ∪ GCS, deduped) — FAST (seconds, not minutes) and it ASSERTS completeness across all preempted attempts/generations, failing loud rather…
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It works with Python. The repository describes itself as: Data recipes and robust infrastructure for training AI agents. The licence is Apache-2.0.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 3bd1917. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Analyze Job History Iris loads about 2.9k tokens when it runs. Until then it costs about 143 tokens; SKILL.md has 1,081 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from open-thoughts/OpenThoughts-Agent at commit 3bd1917, republished under its Apache-2.0 licence (© open-thoughts). 1,081 words, ~2,896 tokens.
.claude/skills/analyze-job-history-iris/SKILL.md (or your agent's skills folder).📍 Iris orientation — read first. Before acting on anything in this skill, read the Iris tools catalog (
.agents/ops/iris/ops.md) and the Iris ops directory (.agents/ops/iris/— the CoreWeave GPU particulars inops.md, the TPUmarinparticulars inops.md). They carry the binding access/preamble/gotchas and the helper-script inventory the steps below rely on.
scripts/iris/analyze_iris_harbor_job.py pulls an Iris job's complete log from the finelog store
(parquet, queried by SQL) — the live deployment ∪ the GCS archive, deduped on the monotonic seq — then
computes: §1 preemption count + time-to-preempt, §2 per-cycle trace progress (from harbor GCS output), §3
serving throughput. It writes a markdown report to --output and a JSON sidecar to <output>.json.
Always read the sidecar with python — never eyeball the markdown.
The analyzer used to paginate iris job logs by time windows — minutes per job, 15+ min on a multi-day job.
It now queries finelog directly: seconds for a training/small job, ~2–3 min for a 60 h / 16M-row
datagen job. So:
task_attempts ⋈ tasks ⋈ jobs), fetches live ∪ GCS, and asserts each attempt window is covered.
Any uncovered window > --max-coverage-gap-seconds (default 600) raises and refuses to write a
"successful" report. The sidecar carries logs_complete (bool) + missing_windows (list).finelog / rigging / duckdb:
/Users/benjaminfeuer/Documents/marin/.venv/bin/python (NOT the otagent env).~/.config/marin/iap/marin.json:OAUTHLIB_RELAX_TOKEN_SCOPE=1 /Users/benjaminfeuer/Documents/marin/.venv/bin/marin-login login marinOAUTHLIB_RELAX_TOKEN_SCOPE=1 works around Google reordering the OAuth scopes — without it the login
tracebacks at the final token-parse.) If the token expires, the analyzer's live fetch fails and the
coverage check fails loud (it won't silently return the GCS-only fragment) — just re-run the login./Users/benjaminfeuer/Documents/marin/.venv/bin/python \
/Users/benjaminfeuer/Documents/OpenThoughts-Agent/scripts/iris/analyze_iris_harbor_job.py \
<job_id> --output /tmp/$(basename <job_id>)_history.md --resync--resync re-fetches; omit it to re-parse the cached merged log
(/tmp/iris_history_<job>.filtered.log + <...>.coverage.json) instantly.--max-coverage-gap-seconds N (default 600) — the max allowed empty run inside an attempt window before
it's a coverage failure. --allow-incomplete — opt out of the strict raise (records logs_complete=falsemissing_windows and proceeds); use ONLY when you knowingly accept a fragment.--cluster cw-us-east-02a (the finelog config name
== the cluster name; it resolves cw-us-east-02a automatically). Still run under the marin venv python.
⚠ CoreWeave needs R2 archive creds, NOT IAP. On cw the live half uses a k8s tunnel (no marin-login),
but the archive half reads s3://marin-na/finelog/cw-us-east-02a (R2 — this literal is the historical store;
the resolved root comes from marin_prefix(), see .agents/ops/iris/ops.md §rendezvous) — creds the Mac lacks, so the run
crashes FileNotFoundError: The specified bucket does not exist unless you first source them from the
iris-ns secret. Procedure: .agents/ops/iris/ops.md.
Also: GPU-RL jobs have no harbor trial sidecars, so §2 is empty and most of the value is gone — for
GPU-RL use rl-job-health-deep-dive instead. This analyzer is for harbor-shaped jobs (datagen / agentic eval).[enumerate] N attempt(s), [merge] live=… + gcs=… -> deduped=…,
and [coverage] COMPLETE (or INCOMPLETE + the gaps). Confirm logs_complete: true in the sidecar before
trusting the stats./Users/benjaminfeuer/Documents/marin/.venv/bin/python - /tmp/$(basename <job_id>)_history.md.json <<'PY'
import json, sys
d = json.load(open(sys.argv[1]))
g = d.get("serving_summary", {}).get("gen_tps", {}) or {}
r = d.get("serving_summary", {}).get("running", {}) or {}
cyc = d.get("cycles", []) or []
served = [c for c in cyc if c.get("did_serve")]
tfs = served[0]["time_to_first_serve_s"] if served else None
ne, tot = d.get("non_empty_trials"), d.get("total_trial_dirs")
rate = (ne / tot) if (ne is not None and tot) else None
exc = sorted((d.get("harbor_exception_stats") or {}).items(), key=lambda kv: -kv[1])[:5]
print(f"logs_complete : {d.get('logs_complete')} missing={len(d.get('missing_windows') or [])}")
print(f"runtime_h : {round(d.get('total_runtime_s',0)/3600, 2)}")
print(f"preemptions : {d.get('iris_preemption_count')} (from_log={d.get('preempt_count_from_log')})")
print(f"state : {d.get('state')}")
print(f"cycles : total={len(cyc)} served={len(served)}")
print(f"t_first_serve_s : {tfs}")
print(f"gen_tps : n={g.get('n')} mean={round(g.get('mean',0),1)} peak={round(g.get('max',0),1)} median={round(g.get('median',0),1)}")
print(f"running : mean={round(r.get('mean',0),1)} peak={round(r.get('max',0),1)}")
print(f"saturation_rate : {d.get('serving_summary',{}).get('saturation_rate')}")
print(f"productive trials: {ne}/{tot} = {round(rate*100,1) if rate is not None else None}%")
print(f"harbor counts : completed={d.get('harbor_n_completed')} errored={d.get('harbor_n_errored')} running={d.get('harbor_n_running')} pending={d.get('harbor_n_pending')} total={d.get('harbor_n_total_trials')}")
print(f"harbor_updated_at: {d.get('harbor_updated_at')} (started {d.get('harbor_started_at')})")
print(f"top exceptions : {exc}")
PYCheck logs_complete first — if it's false, the stats are computed over a fragment; investigate the
missing_windows (usually a stale IAP token → re-login) before trusting the numbers. The sidecar stores
total_runtime_s (seconds — divide by 3600), not runtime_h; gen_tps/running expose max (use as
"peak"), not peak; harbor_exception_stats is a {name: count} dict. S1 datagen baseline ≈ gen mean 400
/ peak 1115 tok/s; short-task datasets run lower — judge health by the productive trial rate
(non_empty/total), not tok/s alone.
Two fields the user always wants are not in the JSON sidecar — they live only on harbor's live TUI
progress line in the job logs, in the form <completed>/<total> Mean: <reward> (a quick iris job logs
tail — NOT the slow pager, fine to keep using):
/Users/benjaminfeuer/Documents/marin/.venv/bin/iris --cluster=marin job logs <job_id> --max-lines 8000 2>/dev/null \
| grep -aoE '[0-9]+/[0-9]+ Mean: [-0-9.]+' | tail -1
# e.g. "11129/15713 Mean: 0.429" -> completed/total tasks = 11129/15713 (71% of dataset), mean reward = 0.429N/M — progress against the whole dataset (M is the dataset's task
count). This is DIFFERENT from the sidecar's non_empty_trials/total_trial_dirs (the productive rate among
attempted trials). Report both.Mean: X — the running mean verifier reward across completed trials.--cluster cw-us-east-02a (+ KUBECONFIG=~/.kube/coreweave-iris-gpu).It's fast now, so inline is usually fine. When sweeping SEVERAL jobs you can still offload to a subagent for parallelism — but the prompt no longer needs the foreground-and-wait warnings. Use this template per job (or list several):
Run
analyze_iris_harbor_job.pyon<job_id>(clustermarin) under the marin venv:/Users/benjaminfeuer/Documents/marin/.venv/bin/python /Users/benjaminfeuer/Documents/OpenThoughts-Agent/scripts/iris/analyze_iris_harbor_job.py <job_id> --output /tmp/<basename>_history.md --resync. It queries finelog (live ∪ GCS) and takes seconds-to-~3min; it asserts completeness and FAILS LOUD on a gap (if it complains LIVE is unavailable, the IAP token expired — note it, don't paper over it). Then parse the sidecar/tmp/<basename>_history.md.jsonwith python — confirmlogs_complete: true— and report:total_runtime_s,iris_preemption_count,cycles[].did_serve/time_to_first_serve_s,serving_summary.gen_tps.{n,mean,max},serving_summary.running.{mean,max},non_empty_trials,total_trial_dirs,harbor_exception_stats,harbor_updated_at. ALSO runiris --cluster=marin job logs <job_id> --max-lines 8000 | grep -aoE '[0-9]+/[0-9]+ Mean: [-0-9.]+' | tail -1and report mean reward + completed/total tasks (NOT in the sidecar). Return a compact key:value report + a one-line health read. Do not paste raw markdown/logs.
A completed <output>.json with logs_complete: true means that job is done — re-parse it directly (no --resync).
key column (the iris wire id incl. :attempt), NOT source (= the stream name
stdout/stderr). key LIKE '<job_or_coord>/%' captures every task, every attempt, and (for an executor
coordinator) every nested child generation at any depth.seq.INCOMPLETE almost always means the IAP token expired (live half empty → recent-L0 window
uncovered). Re-run marin-login login marin. Genuine archive gaps are rare; if --allow-incomplete is ever
needed, say so explicitly in the report.© open-thoughts, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/analyze-job-history-iris of open-thoughts/OpenThoughts-Agent.
Open the folder on GitHubat commit 3bd1917
Analyze Job History Iris next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Analyze Job History Iris this skillopen-thoughts/OpenThoughts-Agent | 301 | — | ~2.9k | Automated safety check: Pass | Apache-2.0 | |
| MCP Server Builderanthropics/skills | 180k | 63 repos | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| PDF Processinganthropics/skills | 180k | 47 repos | ~2k | Automated safety check: Pass | Proprietary | |
| NotebookLM Research AssistantPleasePrompto/notebooklm-skill | 7.8k | 14 repos | ~2.4k | Automated safety check: Notes | MIT | |
| Manim Video Productionbrowser-use/video-use | 29k | 6 repos | ~3k | Automated safety check: Pass | MIT | |
| PPT Masterhugohe3/ppt-master | 59k | 1 repos | ~2.5k | Automated safety check: Pass | MIT |
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
anthropics/skills
Handles everyday PDF jobs in Python and on the command line: extract text and tables, merge, split, rotate, watermark, fill forms, encrypt and OCR.
PleasePrompto/notebooklm-skill
Lets Claude Code ask questions of your Google NotebookLM notebooks through browser automation and return answers grounded in your uploaded sources.
browser-use/video-use
Produces math and technical explainer videos with Manim Community Edition: concept animations, equation derivations, algorithm walkthroughs and data stories.
hugohe3/ppt-master
Generates editable PowerPoint decks, rebuilds slides from images, fills .pptx templates and polishes existing presentations through routed workflows.
zLanqing/codex-claude-academic-skills
Machine learning in Python with scikit-learn. An agent skill from zLanqing/codex-claude-academic-skills.
open-thoughts/OpenThoughts-Agent
Analyze the token length of an OT-Agent conversation-format (ShareGPT-style) dataset — the per-trace distribution (median/p90/max) and/or counts under a token threshold + a metadata predicate (e.g.
open-thoughts/OpenThoughts-Agent
Given a list of models (HF name stubs) that have valid agentic ID eval scores in Supabase, build a ranking table: raw per-benchmark accuracy on the 3 ID benchmarks (SWE-Bench-100…
open-thoughts/OpenThoughts-Agent
Run the full RL behavioral-analysis pipeline (scripts/analysis/analyzerlbehavior.py) on a trained RL model to understand WHAT changed vs its pre-RL baseline, WHY, whether it PERSISTS, and its EVAL…
open-thoughts/OpenThoughts-Agent
Detailed health check for a Levanter/executor TRAINING run on the marin Iris cluster (e.g.
open-thoughts/OpenThoughts-Agent
DESIGN a non-trivial codebase change (Harbor / MarinSkyRL / vLLM / OT-Agent / LLaMA-Factory) as a dependency-ordered STAGED PLAN before writing code — a feature port, a multi-step fix with parity…
open-thoughts/OpenThoughts-Agent
Lint, run the pre-PR checks, commit, push, and author or update the branch's pull request in the required plain-text format.
Works with
Run the Iris harbor job-history analyzer (scripts/iris/analyzeirisharborjob.py) on a datagen/eval job and read its JSON sidecar for trustworthy throughput / preemption / productive-trial stats. Analyze Job History Iris is an agent skill from open-thoughts/OpenThoughts-Agent.py) on a datagen/eval job and read its JSON sidecar for trustworthy throughput / preemption / productive-trial stats.
Analyze Job History Iris fits situations like: A status check needs REAL metrics (gen tok/s; harbor exceptions) instead of an eyeballed log tail.
Run `npx skills add open-thoughts/OpenThoughts-Agent --skill analyze-job-history-iris -a claude-code`. Or copy the skill folder (.agents/skills/analyze-job-history-iris in open-thoughts/OpenThoughts-Agent) into .claude/skills/analyze-job-history-iris in your project. Claude Code loads it when a task matches its description.
Run `npx skills add open-thoughts/OpenThoughts-Agent --skill analyze-job-history-iris -a codex`. Or copy the skill folder (.agents/skills/analyze-job-history-iris in open-thoughts/OpenThoughts-Agent) into .agents/skills/analyze-job-history-iris in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add open-thoughts/OpenThoughts-Agent --skill analyze-job-history-iris -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/analyze-job-history-iris, .gemini/skills/analyze-job-history-iris, .github/skills/analyze-job-history-iris and .opencode/skills/analyze-job-history-iris in your project.
Going by SKILL.md and its folder, Analyze Job History Iris needs the command-line tools its instructions call (python). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Analyze Job History Iris is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Analyze Job History Iris: MCP Server Builder (anthropics/skills, 180k stars), PDF Processing (anthropics/skills, 180k stars), NotebookLM Research Assistant (PleasePrompto/notebooklm-skill, 7.8k stars) and Manim Video Production (browser-use/video-use, 29k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
open-thoughts (a GitHub organization) maintains it in open-thoughts/OpenThoughts-Agent, which has 301 GitHub stars. The repository holds 44 skills in this directory. The repository was last updated on September 28, 2026.
Source: open-thoughts/OpenThoughts-Agent on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.