Agent skill
build-raycast-script-command
Quellcode ansehen: yigitkonur/skills-by-yigitkonur
Installation
npx skills add yigitkonur/skills-by-yigitkonur --skill build-raycast-script-command32
Installationen
EU-hosted inference API
Power your AI agent skills with open-source models.
Drop-in OpenAI-compatible API. No data leaves Europe.
MiniMax
MiniMax M3
$0.40 / $1.40
per M tokens
Z.ai
GLM 5.3 Flash
$0.20 / $0.60
per M tokens
MoonshotAI
Kimi K3
$4.00 / $18.00
per M tokens
DeepSeek
DeepSeek V4.1 Flash
$0.40 / $1.40
per M tokens
Build Raycast Script Command
Author or repair a Raycast Script Command (a single .sh or .py file with a # @raycast.* metadata header that Raycast discovers from a script directory). This skill is for Script Commands only — not the Raycast Extensions API (@raycast/api, ray build, React <List>/<Detail> views).
When to use
Italicized triggers — match any one:
- Creating a new
.shor.pyRaycast Script Command from scratch - Converting an existing Python or shell script into a Raycast Script Command
- Adding, removing, or repairing the
# @raycast.title/# @raycast.mode/# @raycast.argument*metadata block - Choosing between
fullOutput,compact,silent, orinlinemodes (or fixingrefreshTime/packageName) - Wiring
# @raycast.argument*typed arguments tosys.argv[1..3]or$1..$3 - Diagnosing why a script does not appear in Raycast (discovery, shebang,
chmod +x, schemaVersion) - Fixing wrong stdout shape, refresh cadence, exit-code-on-failure, or missing-dependency UX
- Hardening a command for the Raycast community-repo conventions
Do NOT use this skill for:
- Raycast Extensions (anything importing
@raycast/api, usingray build/ray develop, JSX views, or an extensionpackage.json) — this skill covers Script Commands only. - Building Chrome or browser extensions — use
build-chrome-extension. - Plain Python/Bash scripts with no
# @raycast.*header and no Raycast integration intent. - Browser automation flows (
run-agent-browser).
If you see import { ... } from "@raycast/api" or a package.json declaring "raycast": { ... }, this is an extension — exit this skill.
Trigger fingerprint
A file is in scope iff all are true:
- Filename ends in
.shor.py(other interpreters are possible but rare). - First line is a shebang (
#!/bin/bash,#!/usr/bin/env python3, etc.). - The header contains
# @raycast.schemaVersion 1and# @raycast.title …and# @raycast.mode …directly under the shebang. - The file is meant to live in a Raycast script directory (added via Raycast Settings → Extensions → Script Commands → Add Script Directory), not inside a
src/extension tree.
If any of (1)–(4) is missing or contradicted, stop and confirm scope before editing.
Load-bearing rules
Read these before touching the file. Detail lives in references/ — these are the rules you cannot violate.
Required metadata (every command)
| Field | Required | Notes |
|---|---|---|
# @raycast.schemaVersion 1 |
yes | Constant. Wrong/missing → command never appears. |
# @raycast.title <Human Title> |
yes | Shown in Raycast root search. |
# @raycast.mode <fullOutput|compact|silent|inline> |
yes | Drives stdout contract. |
# @raycast.icon |
optional | Emoji or path; improves discoverability. |
# @raycast.packageName |
optional | Group label in Raycast UI. |
# @raycast.refreshTime <Ns|Nm|Nh> |
required for inline only |
Seconds/minutes/hours. |
# @raycast.argument1..3 |
optional | JSON object per argument. See below. |
Deep detail: references/metadata/required-fields.md.
Mode → stdout contract
| Mode | Use when | Stdout shown | Failure UX |
|---|---|---|---|
fullOutput |
Result is meant to be read (lists, reports, multi-line text) | Full text in a result window | Last line + non-zero exit |
compact |
One-line confirmation of an action (toast-style) | Last non-empty stdout line | Last line + non-zero exit |
silent |
Pure side effect, no UI | Nothing on success | Last line + non-zero exit |
inline |
Dashboard widget refreshed on a timer | First non-empty line, refreshed every refreshTime |
First line + non-zero exit |
inline requires # @raycast.refreshTime. No other mode uses it.
Deep detail: references/metadata/mode-selection.md, references/metadata/inline-refresh-and-errors.md.
Typed arguments (Script Commands support 3 only)
# @raycast.argument1 { "type": "text", "placeholder": "query" }
# @raycast.argument2 { "type": "password", "placeholder": "secret", "optional": true }
# @raycast.argument3 { "type": "dropdown", "placeholder": "env", "data": [{"title":"Prod","value":"prod"}] }- Supported types:
text,password,dropdown. Noselect, nofile, nonumber— those are extension-only. - Up to 3 arguments. Args 2 and 3 may be optional; argument 1 is effectively required (Raycast prompts for it).
- In Python, read with
sys.argv[1],sys.argv[2],sys.argv[3](always guard length for optionals). - In Bash, read with
"$1","$2","$3"(always quote; check-zfor optionals).
Deep detail: references/metadata/typed-arguments.md.
Discovery non-negotiables
A command will not appear in Raycast unless all are true:
- The script's parent directory is registered in Raycast Settings → Script Commands.
- File is executable (
chmod +x file.sh/chmod +x file.py). - First line is a valid shebang for an interpreter present on the user's
PATH. - Metadata header is directly under the shebang with no blank line breaking it (Raycast is strict).
schemaVersion,title, andmodeare all present and parseable.- Filename does not contain
.template.(those are intentionally hidden as user-edit-required).
Deep detail: references/troubleshooting/discovery-checklist.md.
Failure & dependency UX
- Exit non-zero on any error path. Raycast surfaces the last (or first, for
inline) line of stdout/stderr on failure. - If the command needs
jq,gh,requests, etc., detect missing deps first and print a one-line install hint, then exit non-zero. Do not let an opaquecommand not foundreach the user. - Never emit noisy multi-line progress for
compact,silent, orinline— they all collapse stdout.
Deep detail: references/troubleshooting/runtime-and-output-issues.md, references/foundations/dependencies-and-portability.md.
Workflow
Step 1 — Detect scope
Inspect the workspace before writing anything:
- Is there an existing
.pyor.shto convert, or is this greenfield? - Does the existing header use
# @raycast.*? Is it well-formed? - Is the surrounding repo a Raycast Extension (sniff for
@raycast/api,ray build,package.jsonwith"raycast"key)? If yes, exit this skill. - Decide Python vs Bash: see
references/foundations/language-selection.mdand the Defaults below.
If the task type is unclear after inspection, read references/foundations/scope-and-fit.md.
Step 2 — Route by task
Read only the branch-relevant references before writing:
| Task | Read first |
|---|---|
| New Python command | references/foundations/workflow.md → references/python/file-anatomy.md → references/python/implementation-patterns.md → references/metadata/mode-selection.md → references/python/python-recipes.md |
| New Bash command | references/foundations/workflow.md → references/bash/bash-script-patterns.md → references/metadata/mode-selection.md → references/bash/bash-recipes.md |
| Convert existing script | references/foundations/workflow.md → references/metadata/required-fields.md → references/foundations/dependencies-and-portability.md → references/troubleshooting/discovery-checklist.md |
| Choose / fix mode | references/metadata/mode-selection.md → references/metadata/inline-refresh-and-errors.md → references/troubleshooting/runtime-and-output-issues.md |
| Add / fix arguments | references/metadata/typed-arguments.md → references/python/implementation-patterns.md or references/bash/bash-script-patterns.md |
| Command does not appear | references/troubleshooting/discovery-checklist.md → references/metadata/required-fields.md |
| Wrong runtime / output | references/troubleshooting/runtime-and-output-issues.md → references/metadata/mode-selection.md → references/metadata/inline-refresh-and-errors.md |
| Python vs Bash decision | references/foundations/language-selection.md |
| Make it shareable | references/foundations/community-repo-conventions.md → references/foundations/dependencies-and-portability.md |
| Provenance / source audit | references/foundations/source-map.md |
Step 3 — Build or repair
- Start from
assets/templates/python-script-command.pyorassets/templates/bash-script-command.sh— these are seed files, not finished code. - Place the metadata block directly under the shebang. Use
# @raycast.*for both Python and Bash (the#line-comment syntax is identical). - Read arguments defensively: guard
sys.argvlength in Python; quote"$1"and check-z "$2"in Bash. - Add a missing-dependency precheck and a one-line user-readable failure message for any external tool.
- Match the stdout contract of the chosen mode exactly — see the table above.
Step 4 — Validate
Run the bundled checkers against the actual command file:
scripts/check-raycast-script-metadata.sh path/to/command.{py,sh}— verifies shebang, required metadata, mode legality,refreshTimepresence forinline, and typed-argument JSON.scripts/preview-script.sh path/to/command.{py,sh} [args...]— runs the command and previews how Raycast will display its stdout for the declared mode.- If discovery fails, follow
references/troubleshooting/discovery-checklist.md. - If output/refresh/exit semantics fail, follow
references/troubleshooting/runtime-and-output-issues.md. - Report the exact verification rung reached (read / metadata-checker / preview / installed-and-ran-in-Raycast). Do not treat "looks plausible" as a smoke test.
Defaults (use unless the task contradicts)
- Python for: HTTP/API calls, JSON parsing, non-trivial text processing, anything multi-step with structured data.
- Bash for: thin wrappers around an existing CLI (
gh,pbcopy,osascript,open), small filesystem actions. - Mode
fullOutputwhen the user is meant to read the result. - Mode
compactfor one-line "did the thing" confirmations. - Mode
silentfor pure side-effects (clipboard, app launch, system action) with no useful output. - Mode
inlineonly for dashboard-style status widgets (battery, weather, builds) withrefreshTimeset.
Bundled scripts
Each script has a paired .md doc next to it.
| Script | Purpose | Mutates? |
|---|---|---|
scripts/check-raycast-script-metadata.sh |
Validate shebang, required metadata, mode, inline refreshTime, typed-argument JSON. See scripts/check-raycast-script-metadata.md. |
No |
scripts/preview-script.sh |
Execute the command and preview Raycast's stdout display contract for the declared mode. See scripts/preview-script.md. |
No |
Bundled assets
| Asset | Purpose |
|---|---|
assets/templates/python-script-command.py |
Seed Python command with metadata header, argument scaffolding, dependency check, and exit-code discipline. |
assets/templates/bash-script-command.sh |
Seed Bash command with the same scaffolding. |
Reference index
| File | When to read |
|---|---|
references/foundations/scope-and-fit.md |
Deciding whether the task is really a Script Command and not a full Raycast extension. |
references/foundations/workflow.md |
End-to-end build flow for creating or converting a command. |
references/foundations/language-selection.md |
Choosing between Python and Bash. |
references/foundations/community-repo-conventions.md |
Aligning with raycast/script-commands repo conventions for sharing. |
references/foundations/dependencies-and-portability.md |
Commands that depend on external tools/packages or must stay portable. |
references/foundations/source-map.md |
Provenance for internal references; expanding the skill from original Raycast research. |
references/metadata/required-fields.md |
Adding or repairing the metadata header. |
references/metadata/mode-selection.md |
Choosing between fullOutput, compact, silent, inline. |
references/metadata/inline-refresh-and-errors.md |
Inline refresh cadence, first-line/last-line behavior, failure semantics. |
references/metadata/typed-arguments.md |
Adding, changing, or debugging @raycast.argument*. |
references/python/file-anatomy.md |
Layout of a Python command file: shebang, header, code regions. |
references/python/implementation-patterns.md |
Wiring sys.argv, dependency notes, failure messages, output patterns. |
references/python/python-recipes.md |
Concrete copy-shapeable Python command patterns. |
references/bash/bash-script-patterns.md |
Building or fixing a Bash-based Script Command. |
references/bash/bash-recipes.md |
Concrete copy-shapeable Bash command patterns. |
references/troubleshooting/discovery-checklist.md |
Command does not appear in Raycast. |
references/troubleshooting/runtime-and-output-issues.md |
Output, refresh, or failure behavior is wrong. |
Guardrails
- Do not invent metadata fields not in the table above; only those verified against Raycast-owned sources are valid.
- Do not import
@raycast/api, AI Extension, or extension Form schemas — those belong to extensions, not Script Commands. - Do not use unsupported argument types (
select,file,number); onlytext,password,dropdown. - Do not declare
inlinewithoutrefreshTime. - Do not emit multi-line progress for
compact,silent, orinline. - Do not read optional arguments unsafely; guard
sys.argvlength and quote"$1"/"$2"/"$3". - Do not let
command not foundreach the user — precheck deps and fail readably. - Do not leave
.template.in a final filename unless the command intentionally requires user edits before first use. - Do not pad with shell or Python tutorial content when a routed reference covers it.
Output contract
When the task is finished, report:
- command file path
- selected mode and why it matches the output shape
- metadata fields present (and any optional ones added)
- supported arguments and how they map to
$1..$3/sys.argv[1..3] - dependencies and any setup notes
- validation run: metadata-checker result and preview result
- Raycast install/use instruction (including adding the script directory if relevant)
- verification rung reached (read / metadata-checker / preview / installed-and-ran-in-Raycast)
Installationen
Sicherheitsprüfung
Quellcode ansehen
yigitkonur/skills-by-yigitkonur
Mehr aus dieser Quelle
Give agents clean web context
Search and extract the public web as Markdown or structured JSON through one API or hosted MCP server.
Verwandte Skills
Mehr aus dieser Quelle: yigitkonur/skills-by-yigitkonur
So verwenden Sie diesen Skill
Install build-raycast-script-command by running npx skills add yigitkonur/skills-by-yigitkonur --skill build-raycast-script-command in your project directory. Führen Sie den obigen Installationsbefehl in Ihrem Projektverzeichnis aus. Die Skill-Datei wird von GitHub heruntergeladen und in Ihrem Projekt platziert.
Keine Konfiguration erforderlich. Ihr KI-Agent (Claude Code, Cursor, Windsurf usw.) erkennt installierte Skills automatisch und nutzt sie als Kontext bei der Code-Generierung.
Der Skill verbessert das Verständnis Ihres Agenten für build-raycast-script-command, und hilft ihm, etablierte Muster zu befolgen, häufige Fehler zu vermeiden und produktionsreifen Code zu erzeugen.
Was Sie erhalten
Skills sind Klartext-Anweisungsdateien — kein ausführbarer Code. Sie kodieren Expertenwissen über Frameworks, Sprachen oder Tools, das Ihr KI-Agent liest, um seine Ausgabe zu verbessern. Das bedeutet null Laufzeit-Overhead, keine Abhängigkeitskonflikte und volle Transparenz: Sie können jede Anweisung vor der Installation lesen und prüfen.
Kompatibilität
Dieser Skill funktioniert mit jedem KI-Coding-Agenten, der das skills.sh-Format unterstützt, einschließlich Claude Code (Anthropic), Cursor, Windsurf, Cline, Aider und anderen Tools, die projektbezogene Kontextdateien lesen. Skills sind auf Transportebene framework-agnostisch — der Inhalt bestimmt, für welche Sprache oder welches Framework er gilt.