Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

TaskFlow 3.0

v3.0.0

TaskFlow 3.0 - Agent-Native 项目化任务调度系统。 AGENT INSTRUCTIONS: 1. Read PROJECT.yaml from project directory 2. Parse meta/content/target/constraints/workflow 3. E...

0· 91·0 current·0 all-time
by深圳王哥@manwjh

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for manwjh/taskflow3.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "TaskFlow 3.0" (manwjh/taskflow3) from ClawHub.
Skill page: https://clawhub.ai/manwjh/taskflow3
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Required binaries: python3
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install taskflow3

ClawHub CLI

Package manager switcher

npx clawhub@latest install taskflow3
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
!
Purpose & Capability
The declared purpose (agent-native project/task scheduler) aligns with the code and SKILL.md: scripts read PROJECT.yaml, compute scheduling, and record history. However there are several mismatches: package.json advertises CLI sh wrappers (bin/taskflow.sh, bin/scheduler.sh) that are not present; SKILL.md and package.json indicate a Python+pyyaml requirement but some code (edit-project.py and meta-planner.py) use json.load on PROJECT.yaml (which should be YAML), risking corruption of YAML config files. These discrepancies are not consistent with a cleanly implemented scheduler.
Instruction Scope
SKILL.md instructs the agent to read PROJECT.yaml, resolve paths relative to a workspace, execute workflow steps, and update executions.json — all within the expected scope. The meta-planner prompt and scripts explicitly instruct reading many files under the user's home (e.g., ~/.openclaw/.../intel/.p0-alert, vault/*.md, workspace memory files) and to use external 'browser' tools to publish. Reading local workspace and memory is expected for a scheduler, but the prompt encourages accessing potentially sensitive 'intel' vault files — which is within function but worth highlighting.
Install Mechanism
There is no remote install step (instruction-only + included scripts), so no network download risk. The metadata suggests pip install of pyyaml (reasonable for YAML parsing). However, package.json claims Node CLI sh wrappers that don't exist in the repo, which is an implementation inconsistency (users following SKILL.md may expect a provided CLI).
Credentials
The skill requests no environment variables or external credentials, which is proportionate. However the code repeatedly reads files under the user's home directory (Paths like ~/.openclaw/workspace-zsxq, ~/.openclaw/workspace/intel/vault, etc.). Access to those local files is consistent with a project scheduler, but they may contain sensitive data (the 'intel' vault). No external tokens are requested, but the skill expects the agent to use external tools (browser) for publishing, which would require platform credentials not managed by the skill.
Persistence & Privilege
The skill is not always-included and does not request elevated platform privileges. It does not modify other skills or system-wide agent settings. Autonomous invocation is allowed (platform default) but not combined with other high-risk indicators here.
What to consider before installing
Things to consider before installing/running: - Backup your workspace/projects before running: the code reads and writes PROJECT.yaml and history files under ~/.openclaw workspaces. edit-project.py uses json.load/json.dump on PROJECT.yaml (a YAML file) and may convert or corrupt YAML configs — inspect and test on copies first. - Inspect the 'intel' and 'memory' files the scripts reference (e.g., ~/.openclaw/.../intel/*.md, workspace memory) — they may contain sensitive information; the meta-planner explicitly reads these to decide publishing. - package.json claims CLI sh wrappers that are missing; the advertised 'taskflow' commands in SKILL.md may not exist as-is — expect to run the provided Python scripts directly or validate/implement missing wrappers. - The code uses different hardcoded workspace paths across files ('.openclaw/workspace', '.openclaw/workspace-zsxq', etc.) and SKILL.md uses OPENCLAW_WORKSPACE or pwd — this inconsistency can cause the skill to read unexpected directories. Confirm which workspace path will be used and test behavior in a sandbox. - No external credentials are requested by the skill itself, but publishing steps described in prompts assume use of external browser/tools that require credentials; ensure those credentials are provided only to trusted tools and not to this skill implicitly. - If you proceed: run the scripts in a restricted/sandbox environment, inspect outputs, and correct the JSON/YAML handling and missing bin wrappers before using on real projects.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

Binspython3
latestvk9783yn423zfc5h284yr4s0xs983p6b8
91downloads
0stars
1versions
Updated 1mo ago
v3.0.0
MIT-0

TaskFlow 3.0 - Agent Execution Guide

Quick Start

# Install skill
clawhub install taskflow

# Run a project
taskflow run <project-id>

# Run all due projects
taskflow run-projects

# List all projects
taskflow list

# Edit project config
taskflow edit <project-id>

When to Use

When you receive a task to execute a project or when scheduler triggers project execution.

Execution Steps

Step 1: Locate Project

# Determine workspace (current working directory or env)
WORKSPACE="${OPENCLAW_WORKSPACE:-$(pwd)}"
PROJECT_ID="{project_id_from_task}"  # Extract from task

# Build paths
PROJECT_PATH="${WORKSPACE}/projects/${PROJECT_ID}"
CONFIG_FILE="${PROJECT_PATH}/PROJECT.yaml"

# Verify existence
if [ ! -f "$CONFIG_FILE" ]; then
    echo "Error: PROJECT.yaml not found at $CONFIG_FILE"
    exit 1
fi

Step 2: Parse Configuration

Read and parse PROJECT.yaml:

# Required fields you MUST extract:
meta.id              # Project identifier
meta.enabled         # Skip if false
content.source       # Where to get content from
content.creation     # How to create/modify content
target.platform      # Where to deliver
target.manual_ref    # Platform operation manual
constraints.*        # Execution constraints
workflow.step_by_step # Steps to execute (CRITICAL)

Step 3: Check Constraints

Before execution, verify:

# Check daily limits
TODAY_COUNT=$(grep "$(date +%Y-%m-%d)" "${PROJECT_PATH}/memory/post/history.md" | wc -l)
DAILY_MAX=$(jq -r '.constraints.daily_max' "$CONFIG_FILE")

if [ "$TODAY_COUNT" -ge "$DAILY_MAX" ]; then
    echo "Daily limit reached ($TODAY_COUNT/$DAILY_MAX), skipping"
    exit 0
fi

# Check interval
LAST_TIME=$(tail -1 "${PROJECT_PATH}/memory/post/history.md" | grep -oE '[0-9]{2}:[0-9]{2}')
INTERVAL=$(jq -r '.constraints.interval_min_minutes' "$CONFIG_FILE")
# Calculate time difference, skip if < interval

# Check best_times (optional)
CURRENT_HOUR=$(date +%H)
BEST_TIMES=$(jq -r '.constraints.best_times[]' "$CONFIG_FILE")

Step 4: Execute Workflow

Read workflow.step_by_step array and execute each step in order:

# Extract workflow steps
STEPS=$(jq -r '.workflow.step_by_step[]' "$CONFIG_FILE")

# Execute each step
for step in $STEPS; do
    echo "Executing: $step"
    
    # Step format: "N. [TYPE] Action description"
    # TYPE and action are defined in PROJECT.yaml workflow
    # Common patterns (examples only, actual types vary by project):
    #   [读取] - Read file for context/deduplication
    #   [生成] - Generate/create content  
    #   [处理] - Process/transform content
    #   [发布] - Deliver to target
    #   [记录] - Update records
    #   [压缩] - Compress content
    #   [归档] - Archive content
    
    # Extract any file paths mentioned in step
    REF_FILE=$(echo "$step" | grep -oE '\S+\.md' | head -1)
    if [ -n "$REF_FILE" ]; then
        RESOLVED_PATH="${PROJECT_PATH}/${REF_FILE}"
    fi
    
    # Execute step based on content.source, content.creation, target settings
    # Implementation varies by project type
done

Step 5: Record Execution

After completion, update executions.json:

{
  "timestamp": "$(date -Iseconds)",
  "project_id": "${PROJECT_ID}",
  "action": "publish",
  "status": "success|failed|skipped",
  "reason": "if skipped or failed",
  "metadata": {
    "constraints_checked": true,
    "steps_executed": N
  }
}

Path Resolution Rules

When resolving paths from PROJECT.yaml:

PatternResolutionExample
path/file.md${PROJECT_PATH}/path/file.mdRelative to project
/abs/path/abs/pathAbsolute path
~/$HOME/path~/$HOME/pathUser home

Always resolve relative paths to absolute at execution time.

Configuration Schema

PROJECT.yaml structure you MUST handle:

meta:
  id: string              # Project ID (matches directory name)
  name: string            # Human-readable name
  version: string         # Config version
  enabled: boolean        # Skip if false
  manual_ref: string      # Path to platform manual (relative to workspace)

description: string       # Human-readable description

content:                  # Content configuration
  source:
    type: string          # memory | intel | project | rss | etc.
    path: string          # Source path (relative)
    # ... type-specific fields
  creation:
    mode: string          # original | adapt | republish | translate
    # ... mode-specific fields
  dedup:
    strategy: string      # How to check duplicates
    reference: string     # File to check against (relative path)

target:                   # Delivery target
  platform: string        # Platform identifier
  name: string            # Display name
  url: string             # Platform URL

constraints:              # Execution constraints
  daily_min: number       # Minimum daily executions
  daily_max: number       # Maximum daily executions
  interval_min_minutes: number  # Minimum interval between executions
  best_times: [string]    # Preferred time windows
  word_count:             # Content size limits
    min: number
    max: number

workflow:                 # Execution workflow (CRITICAL)
  step_by_step: [string] # Ordered list of steps to execute

memory_structure:         # Project memory organization
  # Reference only - describes file layout

Error Handling

ErrorAction
PROJECT.yaml not foundLog error, exit
meta.enabled = falseLog skip reason, exit 0
Constraint violationLog skip reason, exit 0
Step execution failsRecord failure, attempt rollback if needed
Manual reference missingUse default platform behavior

Multi-Project Coordination

When handling multiple projects:

  1. Read all enabled PROJECT.yaml files
  2. Check constraints for each
  3. Prioritize by: last_execution_time, priority, daily progress
  4. Execute ONE project at a time (no parallel execution)
  5. Respect global interval constraints

Recording to Global Log

After any execution (success, skip, or failure), append to global log:

LOG_FILE="${WORKSPACE}/memory/taskflow-log.md"

echo "
### $(date '+%H:%M')
- **项目**: ${PROJECT_ID}
- **状态**: ${STATUS}
- **原因**: ${REASON}
- **详情**: ${PROJECT_PATH}/memory/executions.json
" >> "$LOG_FILE"

CLI Commands

When user asks about TaskFlow status:

# Check all projects status
ls -1 "${WORKSPACE}/projects/" | while read proj; do
    [ -f "${WORKSPACE}/projects/$proj/PROJECT.yaml" ] && echo "$proj"
done

# Read specific project config
cat "${WORKSPACE}/projects/{project_id}/PROJECT.yaml"

# Check project history
cat "${WORKSPACE}/projects/{project_id}/memory/post/history.md"

Agent Guide: Read PROJECT.yaml → Parse → Check constraints → Execute workflow → Record

Comments

Loading comments...