Skill flagged — suspicious patterns detected

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

pa-ownership

v1.0.0

Autonomous task tracking with retry loops and proactive updates. Use when Heleni takes ownership of a task that needs to be tracked, retried on failure, and...

0· 71·0 current·0 all-time
byNetanel Abergel@netanel-abergel

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for netanel-abergel/pa-ownership.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "pa-ownership" (netanel-abergel/pa-ownership) from ClawHub.
Skill page: https://clawhub.ai/netanel-abergel/pa-ownership
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
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 pa-ownership

ClawHub CLI

Package manager switcher

npx clawhub@latest install pa-ownership
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
The name/description (task ownership, retries, heartbeat integration) align with the actions described (persist tasks, retry logic, heartbeat checks). However, the SKILL.md references messaging actions (reacting to messages, sending DMs/replies) and contact-specific WhatsApp memory files without declaring any credentials or environment variables for messaging access. Also it expects a local '.context' to provide variables (OWNER_PHONE, TASKS_FILE, WORKSPACE) but does not declare them as required — an inconsistency between claimed purpose and declared requirements.
!
Instruction Scope
Instructions instruct the agent to read and write persistent files under /opt/ocana/openclaw/workspace (pa-tasks.json, memory/whatsapp/*/context.md) and to add entries to HEARTBEAT.md. They also source a local .context file for runtime variables. The skill tells the agent to react to messages and send notifications (Netanel/group), which implies access to messaging APIs or platform connectors that are not described. The instructions can modify other agent config (HEARTBEAT.md), and they do not list or constrain what data is written to WhatsApp memory files — this broad file I/O and config modification is beyond a simple guidance doc.
Install Mechanism
No install spec and no code files — instruction-only. This is lower risk because nothing is downloaded or written to disk by an installer. The runtime instructions will write files, but there's no install-time code execution to evaluate.
!
Credentials
requires.env is empty, yet the SKILL.md expects values (OWNER_PHONE, TASKS_FILE, WORKSPACE) from a local .context and expects the agent to send messages and react in WhatsApp/DM/group contexts. The skill does not declare any messaging credentials, tokens, or API keys needed to perform notifications. Writing to WhatsApp memory files and escalating to a named person (Netanel) implies access to contact/channel identifiers; that access is not declared or scoped, which is disproportionate and unclear.
!
Persistence & Privilege
The skill persists a pa-tasks.json file and writes to memory/whatsapp paths on every state change (expected for tracking). However it also instructs adding a block to HEARTBEAT.md (modifying another skill/config), which is a change to a system-level integration point. While persistent storage is reasonable for this purpose, modifying global heartbeat config and writing to chat memory without explicit scoping is elevated privilege and should be explicitly authorized.
What to consider before installing
What to check before installing: - Ask the author what the .context file contains and where it comes from. Ensure it does NOT contain secrets you don't want the skill to use or expose. - Confirm how message reactions and notifications are delivered: which messaging connector or credentials will the skill use? Require explicit env vars (messaging API tokens, phone identifiers) rather than hidden .context values. - Review and approve the exact paths it will write to (/opt/ocana/openclaw/workspace/data/pa-tasks.json and memory/whatsapp/*). These files can contain chat history and personally identifiable info; ensure access is limited and backed up if needed. - Approve modification to HEARTBEAT.md (or refuse it). If you do not want the skill to modify global heartbeat behavior, ask the author to provide an optional snippet you can add manually instead of automatic modification. - Test in a sandbox or with a non-production account and monitor what notifications are sent (especially the 'escalate to Netanel' rule). Why I rated it 'suspicious': the skill's functional intent is coherent, but it references and requires runtime data (messaging actions, contact/phone info, .context) without declaring the credentials or explicit permissions. That mismatch — plus its instruction to edit HEARTBEAT.md — increases risk and calls for clarification and least-privilege controls before installation. Additional information that would raise or lower confidence: providing the contents/spec of the .context, declaring required env vars and scopes for messaging, or moving HEARTBEAT integration to an opt-in/manual step would reduce concern; discovery of hidden credential usage or automatic edits to other skills' configs would raise it.

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

latestvk974fnr18sn5xfkyjvbmkyjrxd84bpdj
71downloads
0stars
1versions
Updated 3w ago
v1.0.0
MIT-0

Load Local Context

CONTEXT_FILE="/opt/ocana/openclaw/workspace/skills/pa-ownership/.context"
[ -f "$CONTEXT_FILE" ] && source "$CONTEXT_FILE"
# Then use: $OWNER_PHONE, $TASKS_FILE, $WORKSPACE, etc.

PA Ownership Skill

Heleni tracks tasks she owns — executing, retrying when blocked, and closing the loop when done.


When to Use

Trigger phrases:

  • "take ownership"
  • "track this" "own this"
  • "add to my tasks"
  • Any task Heleni explicitly commits to completing

Data File

All tasks are persisted to:

/opt/ocana/openclaw/workspace/data/pa-tasks.json

Schema

{
  "tasks": [
    {
      "id": "task_<YYYYMMDD_HHMMSS>",
      "title": "Short task description",
      "description": "Full context / what needs to happen",
      "status": "NEW",
      "initiated_by": "Netanel | group:<jid> | self",
      "created_at": "2026-04-03T10:00:00Z",
      "updated_at": "2026-04-03T10:00:00Z",
      "due_at": null,
      "attempts": 0,
      "max_attempts": 3,
      "last_attempt_at": null,
      "blocked_reason": null,
      "result": null,
      "reported_done": false
    }
  ]
}

Status Values

StatusMeaning
NEWTask received, not yet started
IN_PROGRESSCurrently executing
DONECompleted successfully
BLOCKEDCannot proceed — waiting on something
FAILEDExhausted all retry attempts

Step-by-Step Process

Step 1: Register the Task

When a task is received and Heleni commits to it:

  1. React 👍 immediately to the owner's message (before starting work)
  2. Read data/pa-tasks.json (create if missing: {"tasks": []})
  3. Generate a task ID: task_<YYYYMMDD_HHMMSS>
  4. Determine initiated_by:
    • DM from Netanel → "Netanel"
    • Group message → "group:<jid>"
    • Heleni's own initiative → "self"
  5. Set status: "NEW", attempts: 0
  6. Write updated JSON back to file
  7. Write to WhatsApp memory: memory/whatsapp/dms/<PHONE-sanitized>/context.md

Step 2: Execute

  1. Set status to IN_PROGRESS, update updated_at
  2. Execute the task using available tools
  3. On success → go to Step 4 (Done)
  4. On failure → go to Step 3 (Retry)

Step 3: Retry (Blocked / Failed Attempt)

On failure or block:

  1. Increment attempts counter
  2. Record blocked_reason
  3. Record last_attempt_at

Backoff schedule:

  • Attempt 1 fail → retry after ~5 minutes
  • Attempt 2 fail → retry after ~15 minutes
  • Attempt 3 fail → mark as FAILED, notify Netanel immediately
If attempts >= max_attempts:
  → Set status: "FAILED"
  → Report to initiated_by: "❌ [task] failed after 3 attempts: [reason]"
  → Do NOT retry further
Else:
  → Set status: "BLOCKED"
  → Log blocked_reason
  → Schedule retry (via heartbeat or mental note)

Step 4: Mark Done

  1. Set status: "DONE", result: "<outcome summary>", updated_at: now
  2. If reported_done == false:
    • React ✅ to the original task message
    • Report to initiated_by with result
    • Set reported_done: true
  3. Update the JSON file
  4. Write outcome to WhatsApp memory file

Close-the-loop rule: ALWAYS report back to whoever initiated the task. No exceptions.

  • Netanel initiated → send DM to Netanel
  • Group initiated → reply in that group
  • Self-initiated → log in daily memory

Step 5: Write to File

After every state change, write the full updated pa-tasks.json.

import json, datetime, os

TASKS_FILE = "/opt/ocana/openclaw/workspace/data/pa-tasks.json"

def load_tasks():
    if not os.path.exists(TASKS_FILE):
        return {"tasks": []}
    with open(TASKS_FILE) as f:
        return json.load(f)

def save_tasks(data):
    os.makedirs(os.path.dirname(TASKS_FILE), exist_ok=True)
    with open(TASKS_FILE, "w") as f:
        json.dump(data, f, indent=2, ensure_ascii=False)

def update_task_status(task_id, status, **kwargs):
    data = load_tasks()
    for task in data["tasks"]:
        if task["id"] == task_id:
            task["status"] = status
            task["updated_at"] = datetime.datetime.utcnow().isoformat() + "Z"
            for k, v in kwargs.items():
                task[k] = v
            break
    save_tasks(data)

Heartbeat Integration

During every heartbeat, scan for stale tasks:

For each task in pa-tasks.json where status IN ["IN_PROGRESS", "BLOCKED"]:
  age = now - updated_at
  
  If age > 2 hours AND NOT reported_stuck:
    → Mark last_notified_at = now
  
  If status == "BLOCKED" AND attempts < max_attempts:
    → Attempt retry

Add this block to HEARTBEAT.md:

## PA Ownership Check
- Scan data/pa-tasks.json for IN_PROGRESS or BLOCKED tasks
- Alert if any task >2h without update
- Retry BLOCKED tasks with remaining attempts

HEARTBEAT.md Snippet

When setting up this skill for the first time, add to HEARTBEAT.md:

## Task Ownership Check
- Read /opt/ocana/openclaw/workspace/data/pa-tasks.json
- Flag any task with status IN_PROGRESS or BLOCKED updated >2h ago
- Retry BLOCKED tasks if attempts < max_attempts
- Report FAILED tasks to Netanel immediately

Alert Format

Task Stuck Alert (>2h)

📋 [task title]
[max_attempts]

Task Complete

📝 [result summary]

Task Failed (all retries exhausted)


Rules

  1. Always close the loop — when done, always report to whoever initiated it
  2. Never silently fail — BLOCKED or FAILED always triggers a notification
  3. Max 3 retries — after that, escalate to Netanel
  4. Persist everything — every state change is written to pa-tasks.json
  5. Heartbeat integration — stale tasks surface automatically, no manual polling

Cost Notes

  • File reads/writes: cheap — do on every state change
  • Retry logic: don't call external APIs in tight loops; space out via heartbeat
  • Alert: only send once per "stuck" detection (use last_notified_at)

Comments

Loading comments...