agentsclimarketplace

Skill

Skill refly-ai/refly/packages/cli/skill

The first open-source agent skills builder. Define skills by vibe workflow, run on Claude Code, Cursor, Codex & more. Build Clawdbot 🦞· APIs for Lovable · Bots for Slack & Lark/Feishu · Skills are infrastructure, not prompts.

Install
npx -y skills add refly-ai/refly --skill skill

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

What its author says it does

Copied from the file, not written here

Base skill for Refly ecosystem: creates, discovers, and runs domain-specific skills bound to workflows. Routes user intent to matching domain skills via symlinks, delegates execution to Refly backend. Use when user asks to: create skills, run workflows, automate multi-step tasks, or manage pipelines. Triggers: refly, skill, workflow, run skill, create skill, automation, pipeline. Requires: @refly/cli installed and authenticated.

SKILL.md

6.6 KB, as published. Nobody here has run it

Refly

Rules

  1. CLI only - Use refly <command>, never call API directly.
  2. Trust JSON - Only trust CLI JSON (ok, payload, error, hint).
  3. No fabricated IDs - Never invent workflow/run/node IDs.
  4. No tokens - Never print or request auth tokens.
  5. Stop on error - If ok=false, stop and show hint.

Available Commands

CommandID FormatDescription
refly status-Check authentication and connection status
refly login-Authenticate with Refly
refly skill list-List all available skills in the marketplace
refly skill installations-List your installed skills (get installationId here)
refly skill run --id <installationId> --input '<json>'skpi-xxxRun an installed skill, returns runId (we-xxx)
refly workflow status <runId> --watchwe-xxxWatch workflow execution status
refly workflow detail <runId>we-xxxGet workflow run details
refly workflow toolcalls <runId> --files --latestwe-xxxGet files from latest toolcall
refly file download <fileId> -o <path>df-xxxDownload a file

Tip: Get installationId (skpi-xxx) from refly skill installations.

Command Options

CommandOptionDescription
workflow status--watchPoll until workflow completes
workflow status--interval <ms>Polling interval in milliseconds (default: 5000)
workflow toolcalls--filesReturn simplified output with only files and content
workflow toolcalls--latestWith --files, return only files from the most recent toolcall
workflow toolcalls--rawDisable output sanitization (show full tool outputs)

Recommended: Use --files --latest to get files from the final output without processing all toolcalls.

Skill Categories & Execution Patterns

Choose the execution pattern based on the skill's output type:

CategorySkillsOutputPattern
File Generationimage, video, audio skillsFiles (png/mp4/mp3)Run → Wait → Download → Open
Text/Datasearch, research, report skillsText contentRun → Wait → Extract content
Actionemail, messaging, integration skillsStatus confirmationRun → Wait → Confirm

Pattern A: File Generation Skills

Use for: nano-banana-pro, fal-image, fal-video, fal-audio, seedream-image, kling-video, wan-video

# Step 1: Run and capture RUN_ID
RESULT=$(refly skill run --id <installationId> --input '<json>')
RUN_ID=$(echo "$RESULT" | jq -r '.payload.workflowExecutions[0].id')

# Step 2: Wait for completion
refly workflow status "$RUN_ID" --watch --interval 30000

# Step 3: Get files and download to Desktop
FILES=$(refly workflow toolcalls "$RUN_ID" --files --latest | jq -r '.payload.files[]')
echo "$FILES" | jq -c '.' | while read -r file; do
  FILE_ID=$(echo "$file" | jq -r '.fileId')
  FILE_NAME=$(echo "$file" | jq -r '.name')
  if [ -n "$FILE_ID" ] && [ "$FILE_ID" != "null" ]; then
    refly file download "$FILE_ID" -o "$HOME/Desktop/${FILE_NAME}"
    open "$HOME/Desktop/${FILE_NAME}"
  fi
done

Pattern B: Text/Data Skills

Use for: jina, perplexity, weather-report, exa, research skills

# Step 1: Run and capture RUN_ID
RESULT=$(refly skill run --id <installationId> --input '<json>')
RUN_ID=$(echo "$RESULT" | jq -r '.payload.workflowExecutions[0].id')

# Step 2: Wait for completion
refly workflow status "$RUN_ID" --watch --interval 30000

# Step 3: Extract text content from toolcalls
CONTENT=$(refly workflow toolcalls "$RUN_ID" --files --latest | jq -r '.payload.nodes[].content')
echo "$CONTENT"

Pattern C: Action Skills

Use for: send-email, slack, microsoft-teams, zoom, calendar, CRM integrations

# Step 1: Run and capture RUN_ID
RESULT=$(refly skill run --id <installationId> --input '<json>')
RUN_ID=$(echo "$RESULT" | jq -r '.payload.workflowExecutions[0].id')

# Step 2: Wait for completion
refly workflow status "$RUN_ID" --watch --interval 30000

# Step 3: Confirm action status
STATUS=$(refly workflow detail "$RUN_ID" | jq -r '.payload.status')
echo "Action completed with status: $STATUS"

ID Types:

ID FormatExampleUsed For
skpi-xxxskpi-h9kpmts9ho1kl9l1sohaloeuskill run --id only
we-xxxwe-abc123def456workflow status, workflow detail, workflow toolcalls
c-xxxc-g6emwcpi1wpalsz6j4gyi3d9Browser URL only
df-xxxdf-b3yxyelshtwsbxbrkmcqxmx9file download
skpe-xxxskpe-qga5lpyv59yjzz2ghz2iv9bu⚠️ Do NOT use for workflow commands

Required behavior:

  • skill run returns RUN_ID (we-xxx) in .payload.workflowExecutions[0].id
  • Use we-xxx for all workflow commands (status, detail, toolcalls)
  • Choose execution pattern (A/B/C) based on skill category
  • File skills: Download to ~/Desktop/ and open to show user
  • Text skills: Extract .payload.nodes[].content for text output
  • Action skills: Confirm .payload.status for completion

Directory Structure

~/.refly/skills/
├── base/                       # Base skill files (this symlink target)
│   ├── SKILL.md
│   └── rules/
│       ├── execution.md
│       ├── workflow.md
│       ├── node.md
│       ├── file.md
│       └── skill.md
└── <skill-name>/               # Domain skill directories
    └── SKILL.md

~/.claude/skills/
├── refly → ~/.refly/skills/base/           # Base skill symlink
└── <skill-name> → ~/.refly/skills/<name>/  # Domain skill symlinks

Routing

User intent -> match domain skill (name/trigger) in ~/.claude/skills/ -> read domain skill SKILL.md -> execute via refly skill run -> return CLI-verified result.

References

  • rules/execution.md - Skill execution patterns and error handling
  • rules/workflow.md - Workflow command reference
  • rules/node.md - Node command reference
  • rules/file.md - File command reference
  • rules/skill.md - Customized Skill command reference

Gives 0 of the 12 instructions most automation workflows skills give

Counted across 745 of the 1,008 authors here whose files we hold, read 2026-08-06

  • write conventional commit messagesin 36 of 745, across 35 files
  • delete branches after mergein 30 of 745, across 21 files
  • make atomic commitsin 25 of 745, across 15 files
  • write minimal code to pass testsin 22 of 745, across 10 files
  • run tests before committingin 21 of 745, across 13 files
  • re-snapshot after navigation or DOM changesin 21 of 745, across 13 files
  • use try-catch for error handlingin 20 of 745, across 6 files
  • write tests before implementationin 20 of 745, across 8 files
  • configure branch protection rulesin 19 of 745, across 5 files
  • explain the why in commit messagesin 19 of 745, across 9 files
  • refactor code while tests remain greenin 19 of 745, across 6 files
  • Interact with elements using refsin 19 of 745, across 11 files

Said here and by no other author read

  • use refly cli for all commands
  • trust only cli json output
  • stop and show hint on error
  • use we id for workflow commands
  • use skpi id to run skills
  • choose execution pattern by skill category

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.