{
  "schemaVersion": "1.0",
  "item": {
    "slug": "comonyx-admin",
    "name": "Comonyx Admin",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/waqas-orcalo/comonyx-admin",
    "canonicalUrl": "https://clawhub.ai/waqas-orcalo/comonyx-admin",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/comonyx-admin",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=comonyx-admin",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "TOOLS.md",
      "clawhub.json",
      "scripts/send-email.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/comonyx-admin"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/comonyx-admin",
    "agentPageUrl": "https://openagent3.xyz/skills/comonyx-admin/agent",
    "manifestUrl": "https://openagent3.xyz/skills/comonyx-admin/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/comonyx-admin/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Cosmonyx Admin – Sign in, Fetch Companies, Export as PDF or Excel",
        "body": "This skill lets an admin sign in to Cosmonyx, fetch all company records using the same endpoints as the Cosmonyx gateway API, then choose to export those records as PDF or Excel, or send reminder emails. Email is sent by this skill’s own script (scripts/send-email.py); see TOOLS.md.\n\nYou must run all HTTP requests yourself (no external repos). For structured config (endpoints, run order) you can also load SKILL.yaml from this directory if present, but this SKILL.md is the source of truth for behavior."
      },
      {
        "title": "Step 0 – Prompt for admin credentials",
        "body": "Before calling any API:\n\nAsk once:\n\n\"Please provide your Cosmonyx admin email.\"\n\"Please provide your Cosmonyx admin password.\"\n\n\nDo not echo the password back in any reply. Treat it as sensitive.\nUse the provided email/password as the sign-in payload.\n\nIf the user has already given both an email and password in their initial request, reuse those and do not ask again."
      },
      {
        "title": "Step 1 – Sign in (admin)",
        "body": "POST https://gateway-dev.cosmonyx.co/auth/signin\nHeaders: Content-Type: application/json\nBody: JSON with the admin credentials you obtained in Step 0, e.g.:\n\n{\"email\":\"<ADMIN_EMAIL>\",\"password\":\"<ADMIN_PASSWORD>\"}\n\n\nFrom the response, take the auth token from whichever field exists first:\n\naccessToken, token, data.token, or data.accessToken\n\n\nKeep this token in memory only and never print it in any reply.\n\nIf sign-in fails (4xx/5xx or missing token), stop, explain the error briefly, and ask the user to correct the credentials instead of proceeding."
      },
      {
        "title": "Step 2 – Fetch all company records",
        "body": "GET https://gateway-dev.cosmonyx.co/companies\nHeaders: Authorization: Bearer <TOKEN> where <TOKEN> is from Step 1.\nFetch the full list of companies. If the API is paginated:\n\nDetect pagination from response fields like page, totalPages, links.next, etc.\nRequest all pages until there are no more, concatenating results.\n\n\nThe list may be in:\n\ndata, companies, or the root.\n\n\nExtract the complete list of company objects into an in-memory structure (array of objects).\n\nIf there are zero companies, still continue to the export choice but clearly state that the dataset is empty."
      },
      {
        "title": "Step 3 – Choose action on the records",
        "body": "After fetching all companies, prompt the admin to choose what they want to do:\n\n\"What would you like to do with the Cosmonyx company records?\n\nList records where complianceStatus is Not Started\nList records with riskType = Low\nList records where the primary user’s sumsubVerificationStatus is under_review\nSend reminder emails to records where complianceStatus is Not Started\nSend reminder emails to records whose expiryDate is before a given date\nWork with all records (no filter)\""
      },
      {
        "title": "Step 3A – Filtering logic",
        "body": "Apply filters in memory over the full company list from Step 2:\n\nOption 1: compliance not started\n\nFilter: company.complianceStatus === \"Not Started\".\n\n\nOption 2: low risk\n\nFilter: company.riskType === \"Low\".\n\n\nOption 3: KYC under review\n\nFilter: company.primaryUser?.sumsubVerificationStatus === \"under_review\".\n\n\nOption 4: compliance not started (for email)\n\nSame filter as option 1.\n\n\nOption 5: expiry date before a given date\n\nAsk once: \"Please provide a cutoff date (YYYY-MM-DD). Records with expiryDate earlier than this date will be selected.\"\nParse the cutoff into a date and filter records where expiryDate is non-null and < cutoff.\n\n\nOption 6: all records\n\nNo extra filter; use the full dataset.\n\nIf the filter results in zero records, report that to the user and stop (no export and no emails)."
      },
      {
        "title": "Step 3B – Branching: export vs email",
        "body": "If the admin chose 1, 2, 3, or 6, proceed to Step 4 – Export filtered records (PDF or Excel).\nIf the admin chose 4 or 5, proceed to Step 5 – Send reminder emails to the filtered companies."
      },
      {
        "title": "Step 4A – Ask export format (PDF vs Excel)",
        "body": "For actions 1, 2, 3, or 6, after filtering:\n\n\"I selected N matching companies. How would you like to export these records?\n\nPDF file\nExcel (.xlsx) file\"\n\nInterpret the user’s reply:\n\nIf they answer with \"1\", \"pdf\", or similar → choose PDF.\nIf they answer with \"2\", \"excel\", \"xlsx\", or similar → choose Excel.\nIf unclear, ask once for clarification and then proceed."
      },
      {
        "title": "Step 4B – Generate PDF file (if user chose PDF)",
        "body": "If the user selected PDF:\n\nCreate a PDF file summarizing all filtered company records (not the full list).\nAt minimum, include a table or clearly formatted list with columns such as:\n\nid, name, status, country, and any other key fields returned.\n\n\nSave the file into the current user’s Downloads folder so it appears in your normal download location, e.g.:\n\n$HOME/Downloads/comonyx-companies.pdf\n\n\nEnsure the file contains all filtered companies from Step 3 (not truncated).\n\nWhen done, reply with:\n\nA short confirmation that admin sign-in succeeded.\nA brief summary of how many companies were selected by the filter.\nThe path and name of the generated PDF file (e.g. $HOME/Downloads/comonyx-companies.pdf) so the user (or tools) can retrieve it.\n\nThen proceed to Step 4D – Optional: Email the exported file.\n\nDo not ask what to do next."
      },
      {
        "title": "Step 4C – Generate Excel file (if user chose Excel)",
        "body": "If the user selected Excel:\n\nCreate an Excel .xlsx file listing all filtered company records in a sheet named Companies.\nInclude columns for key fields such as:\n\nid, name, status, country, email, and any other important fields present in the API response.\n\n\nEach company should be one row.\nSave the file into the current user’s Downloads folder:\n\n$HOME/Downloads/comonyx-companies.xlsx\n\n\nEnsure the file contains all filtered companies from Step 3.\n\nWhen done, reply with:\n\nA short confirmation that admin sign-in succeeded.\nA brief summary of how many companies were selected by the filter.\nThe path and name of the generated Excel file (e.g. $HOME/Downloads/comonyx-companies.xlsx).\n\nThen proceed to Step 4D – Optional: Email the exported file.\n\nDo not ask what to do next."
      },
      {
        "title": "Step 4D – Optional: Email the exported file (PDF or Excel)",
        "body": "After Step 4B or 4C (once the export file path is known):\n\nAsk once: \"Would you like this file emailed to someone? If yes, provide the email address.\" If the user says no or does not provide an address, skip sending and go to the final reply (Step \"Reply format\").\nIf the user provides an email address:\n\nUse TOOLS.md in this skill directory. Set EMAIL_TO to the address they gave and ATTACHMENT_PATH to the exact path of the generated file (e.g. $HOME/Downloads/comonyx-companies.pdf or $HOME/Downloads/comonyx-companies.xlsx). Expand $HOME to the actual home path if needed (e.g. /home/musawir).\nWrite the body file: echo \"Cosmonyx companies export attached.\" > /tmp/companies_body.txt\nRun the one-line send command from TOOLS.md in a single exec (with EMAIL_TO and ATTACHMENT_PATH set). Use the script in this skill’s scripts/send-email.py (TOOLS.md uses <skill-dir> for the path; resolve that to this skill’s directory).\nIf send succeeds, confirm in your final reply: \"The export was emailed to <address>.\"\nIf send fails, report the error and still mention where the file was saved.\n\nDo not ask what to do next after sending (or after declining)."
      },
      {
        "title": "Step 5 – Send reminder emails to filtered companies (options 4 and 5)",
        "body": "If the admin chose option 4 or 5 in Step 3:\n\nUse the filtered list from Step 3A.\nFor each company, determine the email recipient:\n\nPrefer company.email if non-empty.\nOtherwise use company.primaryUser?.email if present.\nSkip records that have no email at all.\n\n\nAsk the admin once for:\n\nThe email subject, e.g. \"Compliance onboarding reminder\".\nThe email body template, which may include placeholders like {companyName}, {status}, {expiryDate} – you can do simple string replacements for these placeholders per company.\n\n\nFor each selected company with a recipient address:\n\nFill in the template with that company’s values.\nWrite the final body to a temp file (e.g. /tmp/comonyx-admin-email-body.txt).\nUse the email script in this skill’s scripts/send-email.py and the SMTP/recipient settings in this skill’s TOOLS.md. Set EMAIL_TO to that company’s recipient address (and no attachment for reminder emails) before running the send command.\n\n\nKeep track of how many emails were successfully attempted vs skipped (no email address).\n\nIf sending fails due to SMTP issues, report the error and remind the user to configure SMTP_* environment variables (host, port, user, password)."
      },
      {
        "title": "Reply format (final response)",
        "body": "After completing the chosen action (export or sending emails), send one final reply that includes:\n\nSign-in result – e.g. \"Signed in to Cosmonyx as admin successfully.\"\nFilter summary – what option was chosen and how many companies matched (e.g. \"Selected 24 companies where complianceStatus is Not Started.\").\nOutcome:\n\nFor exports:\n\nPDF: \"Generated PDF export at $HOME/Downloads/comonyx-companies.pdf.\"\nExcel: \"Generated Excel export at $HOME/Downloads/comonyx-companies.xlsx.\"\n\n\nIf the user asked to email the file and you sent it: \"The export was emailed to <address>.\"\nFor reminder emails (options 4/5):\n\nE.g. \"Attempted to send reminder emails to 24 companies; 22 emails sent, 2 skipped due to missing email address.\"\n\nDo not add follow-up offers like \"let me know if you need anything else\" or questions about next steps. End after confirming the outcome."
      }
    ],
    "body": "Cosmonyx Admin – Sign in, Fetch Companies, Export as PDF or Excel\n\nThis skill lets an admin sign in to Cosmonyx, fetch all company records using the same endpoints as the Cosmonyx gateway API, then choose to export those records as PDF or Excel, or send reminder emails. Email is sent by this skill’s own script (scripts/send-email.py); see TOOLS.md.\n\nYou must run all HTTP requests yourself (no external repos). For structured config (endpoints, run order) you can also load SKILL.yaml from this directory if present, but this SKILL.md is the source of truth for behavior.\n\nStep 0 – Prompt for admin credentials\n\nBefore calling any API:\n\nAsk once:\n\"Please provide your Cosmonyx admin email.\"\n\"Please provide your Cosmonyx admin password.\"\nDo not echo the password back in any reply. Treat it as sensitive.\nUse the provided email/password as the sign-in payload.\n\nIf the user has already given both an email and password in their initial request, reuse those and do not ask again.\n\nStep 1 – Sign in (admin)\nPOST https://gateway-dev.cosmonyx.co/auth/signin\nHeaders: Content-Type: application/json\nBody: JSON with the admin credentials you obtained in Step 0, e.g.:\n{\"email\":\"<ADMIN_EMAIL>\",\"password\":\"<ADMIN_PASSWORD>\"}\nFrom the response, take the auth token from whichever field exists first:\naccessToken, token, data.token, or data.accessToken\nKeep this token in memory only and never print it in any reply.\n\nIf sign-in fails (4xx/5xx or missing token), stop, explain the error briefly, and ask the user to correct the credentials instead of proceeding.\n\nStep 2 – Fetch all company records\nGET https://gateway-dev.cosmonyx.co/companies\nHeaders: Authorization: Bearer <TOKEN> where <TOKEN> is from Step 1.\nFetch the full list of companies. If the API is paginated:\nDetect pagination from response fields like page, totalPages, links.next, etc.\nRequest all pages until there are no more, concatenating results.\nThe list may be in:\ndata, companies, or the root.\nExtract the complete list of company objects into an in-memory structure (array of objects).\n\nIf there are zero companies, still continue to the export choice but clearly state that the dataset is empty.\n\nStep 3 – Choose action on the records\n\nAfter fetching all companies, prompt the admin to choose what they want to do:\n\n\"What would you like to do with the Cosmonyx company records?\n\nList records where complianceStatus is Not Started\nList records with riskType = Low\nList records where the primary user’s sumsubVerificationStatus is under_review\nSend reminder emails to records where complianceStatus is Not Started\nSend reminder emails to records whose expiryDate is before a given date\nWork with all records (no filter)\"\nStep 3A – Filtering logic\n\nApply filters in memory over the full company list from Step 2:\n\nOption 1: compliance not started\nFilter: company.complianceStatus === \"Not Started\".\nOption 2: low risk\nFilter: company.riskType === \"Low\".\nOption 3: KYC under review\nFilter: company.primaryUser?.sumsubVerificationStatus === \"under_review\".\nOption 4: compliance not started (for email)\nSame filter as option 1.\nOption 5: expiry date before a given date\nAsk once: \"Please provide a cutoff date (YYYY-MM-DD). Records with expiryDate earlier than this date will be selected.\"\nParse the cutoff into a date and filter records where expiryDate is non-null and < cutoff.\nOption 6: all records\nNo extra filter; use the full dataset.\n\nIf the filter results in zero records, report that to the user and stop (no export and no emails).\n\nStep 3B – Branching: export vs email\nIf the admin chose 1, 2, 3, or 6, proceed to Step 4 – Export filtered records (PDF or Excel).\nIf the admin chose 4 or 5, proceed to Step 5 – Send reminder emails to the filtered companies.\nStep 4 – Export filtered records (PDF or Excel)\nStep 4A – Ask export format (PDF vs Excel)\n\nFor actions 1, 2, 3, or 6, after filtering:\n\n\"I selected N matching companies. How would you like to export these records?\n\nPDF file\nExcel (.xlsx) file\"\n\nInterpret the user’s reply:\n\nIf they answer with \"1\", \"pdf\", or similar → choose PDF.\nIf they answer with \"2\", \"excel\", \"xlsx\", or similar → choose Excel.\nIf unclear, ask once for clarification and then proceed.\nStep 4B – Generate PDF file (if user chose PDF)\n\nIf the user selected PDF:\n\nCreate a PDF file summarizing all filtered company records (not the full list).\nAt minimum, include a table or clearly formatted list with columns such as:\nid, name, status, country, and any other key fields returned.\nSave the file into the current user’s Downloads folder so it appears in your normal download location, e.g.:\n$HOME/Downloads/comonyx-companies.pdf\nEnsure the file contains all filtered companies from Step 3 (not truncated).\n\nWhen done, reply with:\n\nA short confirmation that admin sign-in succeeded.\nA brief summary of how many companies were selected by the filter.\nThe path and name of the generated PDF file (e.g. $HOME/Downloads/comonyx-companies.pdf) so the user (or tools) can retrieve it.\n\nThen proceed to Step 4D – Optional: Email the exported file.\n\nDo not ask what to do next.\n\nStep 4C – Generate Excel file (if user chose Excel)\n\nIf the user selected Excel:\n\nCreate an Excel .xlsx file listing all filtered company records in a sheet named Companies.\nInclude columns for key fields such as:\nid, name, status, country, email, and any other important fields present in the API response.\nEach company should be one row.\nSave the file into the current user’s Downloads folder:\n$HOME/Downloads/comonyx-companies.xlsx\nEnsure the file contains all filtered companies from Step 3.\n\nWhen done, reply with:\n\nA short confirmation that admin sign-in succeeded.\nA brief summary of how many companies were selected by the filter.\nThe path and name of the generated Excel file (e.g. $HOME/Downloads/comonyx-companies.xlsx).\n\nThen proceed to Step 4D – Optional: Email the exported file.\n\nDo not ask what to do next.\n\nStep 4D – Optional: Email the exported file (PDF or Excel)\n\nAfter Step 4B or 4C (once the export file path is known):\n\nAsk once: \"Would you like this file emailed to someone? If yes, provide the email address.\" If the user says no or does not provide an address, skip sending and go to the final reply (Step \"Reply format\").\nIf the user provides an email address:\nUse TOOLS.md in this skill directory. Set EMAIL_TO to the address they gave and ATTACHMENT_PATH to the exact path of the generated file (e.g. $HOME/Downloads/comonyx-companies.pdf or $HOME/Downloads/comonyx-companies.xlsx). Expand $HOME to the actual home path if needed (e.g. /home/musawir).\nWrite the body file: echo \"Cosmonyx companies export attached.\" > /tmp/companies_body.txt\nRun the one-line send command from TOOLS.md in a single exec (with EMAIL_TO and ATTACHMENT_PATH set). Use the script in this skill’s scripts/send-email.py (TOOLS.md uses <skill-dir> for the path; resolve that to this skill’s directory).\nIf send succeeds, confirm in your final reply: \"The export was emailed to <address>.\"\nIf send fails, report the error and still mention where the file was saved.\n\nDo not ask what to do next after sending (or after declining).\n\nStep 5 – Send reminder emails to filtered companies (options 4 and 5)\n\nIf the admin chose option 4 or 5 in Step 3:\n\nUse the filtered list from Step 3A.\nFor each company, determine the email recipient:\nPrefer company.email if non-empty.\nOtherwise use company.primaryUser?.email if present.\nSkip records that have no email at all.\nAsk the admin once for:\nThe email subject, e.g. \"Compliance onboarding reminder\".\nThe email body template, which may include placeholders like {companyName}, {status}, {expiryDate} – you can do simple string replacements for these placeholders per company.\nFor each selected company with a recipient address:\nFill in the template with that company’s values.\nWrite the final body to a temp file (e.g. /tmp/comonyx-admin-email-body.txt).\nUse the email script in this skill’s scripts/send-email.py and the SMTP/recipient settings in this skill’s TOOLS.md. Set EMAIL_TO to that company’s recipient address (and no attachment for reminder emails) before running the send command.\nKeep track of how many emails were successfully attempted vs skipped (no email address).\n\nIf sending fails due to SMTP issues, report the error and remind the user to configure SMTP_* environment variables (host, port, user, password).\n\nReply format (final response)\n\nAfter completing the chosen action (export or sending emails), send one final reply that includes:\n\nSign-in result – e.g. \"Signed in to Cosmonyx as admin successfully.\"\nFilter summary – what option was chosen and how many companies matched (e.g. \"Selected 24 companies where complianceStatus is Not Started.\").\nOutcome:\nFor exports:\nPDF: \"Generated PDF export at $HOME/Downloads/comonyx-companies.pdf.\"\nExcel: \"Generated Excel export at $HOME/Downloads/comonyx-companies.xlsx.\"\nIf the user asked to email the file and you sent it: \"The export was emailed to <address>.\"\nFor reminder emails (options 4/5):\nE.g. \"Attempted to send reminder emails to 24 companies; 22 emails sent, 2 skipped due to missing email address.\"\n\nDo not add follow-up offers like \"let me know if you need anything else\" or questions about next steps. End after confirming the outcome."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/waqas-orcalo/comonyx-admin",
    "publisherUrl": "https://clawhub.ai/waqas-orcalo/comonyx-admin",
    "owner": "waqas-orcalo",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/comonyx-admin",
    "downloadUrl": "https://openagent3.xyz/downloads/comonyx-admin",
    "agentUrl": "https://openagent3.xyz/skills/comonyx-admin/agent",
    "manifestUrl": "https://openagent3.xyz/skills/comonyx-admin/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/comonyx-admin/agent.md"
  }
}