← 返回 Skills 市场
waqas-orcalo

Comonyx Admin

作者 waqas-orcalo · GitHub ↗ · v1.0.1
cross-platform ⚠ suspicious
560
总下载
0
收藏
1
当前安装
2
版本数
在 OpenClaw 中安装
/install comonyx-admin
功能描述
Admin skill to sign into Cosmonyx, fetch companies, filter/export (PDF or Excel), optionally email the export, or send reminder emails to filtered companies.
使用说明 (SKILL.md)

Cosmonyx Admin – Sign in, Fetch Companies, Export as PDF or Excel

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.

You 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.


Step 0 – Prompt for admin credentials

Before calling any API:

  • Ask once:
    • "Please provide your Cosmonyx admin email."
    • "Please provide your Cosmonyx admin password."
  • Do not echo the password back in any reply. Treat it as sensitive.
  • Use the provided email/password as the sign-in payload.

If the user has already given both an email and password in their initial request, reuse those and do not ask again.


Step 1 – Sign in (admin)

  • POST https://gateway-dev.cosmonyx.co/auth/signin
  • Headers: Content-Type: application/json
  • Body: JSON with the admin credentials you obtained in Step 0, e.g.:
    • {"email":"\x3CADMIN_EMAIL>","password":"\x3CADMIN_PASSWORD>"}
  • From the response, take the auth token from whichever field exists first:
    • accessToken, token, data.token, or data.accessToken
  • Keep this token in memory only and never print it in any reply.

If sign-in fails (4xx/5xx or missing token), stop, explain the error briefly, and ask the user to correct the credentials instead of proceeding.


Step 2 – Fetch all company records

  • GET https://gateway-dev.cosmonyx.co/companies
  • Headers: Authorization: Bearer \x3CTOKEN> where \x3CTOKEN> is from Step 1.
  • Fetch the full list of companies. If the API is paginated:
    • Detect pagination from response fields like page, totalPages, links.next, etc.
    • Request all pages until there are no more, concatenating results.
  • The list may be in:
    • data, companies, or the root.
  • Extract the complete list of company objects into an in-memory structure (array of objects).

If there are zero companies, still continue to the export choice but clearly state that the dataset is empty.


Step 3 – Choose action on the records

After fetching all companies, prompt the admin to choose what they want to do:

"What would you like to do with the Cosmonyx company records?

  1. List records where complianceStatus is Not Started
  2. List records with riskType = Low
  3. List records where the primary user’s sumsubVerificationStatus is under_review
  4. Send reminder emails to records where complianceStatus is Not Started
  5. Send reminder emails to records whose expiryDate is before a given date
  6. Work with all records (no filter)"

Step 3A – Filtering logic

Apply filters in memory over the full company list from Step 2:

  • Option 1: compliance not started
    • Filter: company.complianceStatus === "Not Started".
  • Option 2: low risk
    • Filter: company.riskType === "Low".
  • Option 3: KYC under review
    • Filter: company.primaryUser?.sumsubVerificationStatus === "under_review".
  • Option 4: compliance not started (for email)
    • Same filter as option 1.
  • Option 5: expiry date before a given date
    • Ask once: "Please provide a cutoff date (YYYY-MM-DD). Records with expiryDate earlier than this date will be selected."
    • Parse the cutoff into a date and filter records where expiryDate is non-null and \x3C cutoff.
  • Option 6: all records
    • No extra filter; use the full dataset.

If the filter results in zero records, report that to the user and stop (no export and no emails).

Step 3B – Branching: export vs email

  • If the admin chose 1, 2, 3, or 6, proceed to Step 4 – Export filtered records (PDF or Excel).
  • If the admin chose 4 or 5, proceed to Step 5 – Send reminder emails to the filtered companies.

Step 4 – Export filtered records (PDF or Excel)

Step 4A – Ask export format (PDF vs Excel)

For actions 1, 2, 3, or 6, after filtering:

"I selected N matching companies. How would you like to export these records?

  1. PDF file
  2. Excel (.xlsx) file"

Interpret the user’s reply:

  • If they answer with "1", "pdf", or similar → choose PDF.
  • If they answer with "2", "excel", "xlsx", or similar → choose Excel.
  • If unclear, ask once for clarification and then proceed.

Step 4B – Generate PDF file (if user chose PDF)

If the user selected PDF:

  • Create a PDF file summarizing all filtered company records (not the full list).
  • At minimum, include a table or clearly formatted list with columns such as:
    • id, name, status, country, and any other key fields returned.
  • Save the file into the current user’s Downloads folder so it appears in your normal download location, e.g.:
    • $HOME/Downloads/comonyx-companies.pdf
  • Ensure the file contains all filtered companies from Step 3 (not truncated).

When done, reply with:

  1. A short confirmation that admin sign-in succeeded.
  2. A brief summary of how many companies were selected by the filter.
  3. The path and name of the generated PDF file (e.g. $HOME/Downloads/comonyx-companies.pdf) so the user (or tools) can retrieve it.

Then proceed to Step 4D – Optional: Email the exported file.

Do not ask what to do next.


Step 4C – Generate Excel file (if user chose Excel)

If the user selected Excel:

  • Create an Excel .xlsx file listing all filtered company records in a sheet named Companies.
  • Include columns for key fields such as:
    • id, name, status, country, email, and any other important fields present in the API response.
  • Each company should be one row.
  • Save the file into the current user’s Downloads folder:
    • $HOME/Downloads/comonyx-companies.xlsx
  • Ensure the file contains all filtered companies from Step 3.

When done, reply with:

  1. A short confirmation that admin sign-in succeeded.
  2. A brief summary of how many companies were selected by the filter.
  3. The path and name of the generated Excel file (e.g. $HOME/Downloads/comonyx-companies.xlsx).

Then proceed to Step 4D – Optional: Email the exported file.

Do not ask what to do next.


Step 4D – Optional: Email the exported file (PDF or Excel)

After Step 4B or 4C (once the export file path is known):

  1. Ask 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").
  2. If the user provides an email address:
    • Use 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).
    • Write the body file: echo "Cosmonyx companies export attached." > /tmp/companies_body.txt
    • Run 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 \x3Cskill-dir> for the path; resolve that to this skill’s directory).
    • If send succeeds, confirm in your final reply: "The export was emailed to \x3Caddress>."
    • If send fails, report the error and still mention where the file was saved.

Do not ask what to do next after sending (or after declining).


Step 5 – Send reminder emails to filtered companies (options 4 and 5)

If the admin chose option 4 or 5 in Step 3:

  1. Use the filtered list from Step 3A.
  2. For each company, determine the email recipient:
    • Prefer company.email if non-empty.
    • Otherwise use company.primaryUser?.email if present.
    • Skip records that have no email at all.
  3. Ask the admin once for:
    • The email subject, e.g. "Compliance onboarding reminder".
    • The email body template, which may include placeholders like {companyName}, {status}, {expiryDate} – you can do simple string replacements for these placeholders per company.
  4. For each selected company with a recipient address:
    • Fill in the template with that company’s values.
    • Write the final body to a temp file (e.g. /tmp/comonyx-admin-email-body.txt).
    • Use 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.
  5. Keep track of how many emails were successfully attempted vs skipped (no email address).

If sending fails due to SMTP issues, report the error and remind the user to configure SMTP_* environment variables (host, port, user, password).


Reply format (final response)

After completing the chosen action (export or sending emails), send one final reply that includes:

  1. Sign-in result – e.g. "Signed in to Cosmonyx as admin successfully."
  2. Filter summary – what option was chosen and how many companies matched (e.g. "Selected 24 companies where complianceStatus is Not Started.").
  3. Outcome:
    • For exports:
      • PDF: "Generated PDF export at $HOME/Downloads/comonyx-companies.pdf."
      • Excel: "Generated Excel export at $HOME/Downloads/comonyx-companies.xlsx."
    • If the user asked to email the file and you sent it: "The export was emailed to \x3Caddress>."
    • For reminder emails (options 4/5):
      • E.g. "Attempted to send reminder emails to 24 companies; 22 emails sent, 2 skipped due to missing email address."

Do not add follow-up offers like "let me know if you need anything else" or questions about next steps. End after confirming the outcome.

安全使用建议
Before installing or running this skill: 1) Verify the gateway host (https://gateway-dev.cosmonyx.co) is the correct production endpoint for your organization — the 'gateway-dev' name suggests a development server and could be wrong or hostile. 2) Inspect .env.example in the skill root; do not place real SMTP credentials in a skill directory unless you trust the skill source and storage location. Consider providing per-request SMTP credentials via temporary environment export rather than permanently storing them in the skill folder. 3) Confirm you trust the skill author (no homepage, unknown owner). 4) Note the default sender identity in the script (IdentityGram) is inconsistent with the Cosmonyx product and may indicate reuse of code; ask the author to clarify/remove unrelated defaults. 5) Understand that giving admin credentials to the agent will allow it to fetch all company records and (with SMTP creds or by exporting files) send that data to arbitrary recipients — only proceed if you intend to transmit that data and you control the recipients. 6) Ask the maintainer to update the registry metadata to declare required env vars (SMTP_*), fix naming inconsistencies, and confirm the intended gateway URL; if you cannot validate these, treat the skill as untrusted and avoid supplying org admin or SMTP credentials.
功能分析
Type: OpenClaw Skill Name: comonyx-admin Version: 1.0.1 The skill is classified as suspicious due to significant vulnerabilities that could enable data exfiltration and shell injection, even though there's no clear evidence of intentional malice. The `TOOLS.md` file instructs the agent to execute a bash command that sets environment variables (`EMAIL_TO`, `ATTACHMENT_PATH`) using single quotes. If user-provided input for `<recipient>` or `<path-to-file>` contains single quotes, it could lead to shell injection. Furthermore, the `scripts/send-email.py` script allows attaching any file specified by `ATTACHMENT_PATH`. While `SKILL.md` intends this for generated export files, a compromised agent (e.g., via prompt injection) could be instructed to set `ATTACHMENT_PATH` to sensitive system files (e.g., `~/.ssh/id_rsa`, `/etc/passwd`), leading to unauthorized data exfiltration to an arbitrary email address.
能力评估
Purpose & Capability
The declared purpose (sign into Cosmonyx, fetch companies, export, email) matches the code and instructions. However: registry metadata lists no required env vars while TOOLS.md/send-email.py clearly expect SMTP credentials (.env or environment); the skill name in the registry (Comonyx) and docs (Cosmonyx/Cosmonyx) are inconsistent; the API host used is a 'gateway-dev' domain (suggests a development endpoint). These mismatches reduce confidence that the manifest accurately describes needed capabilities.
Instruction Scope
SKILL.md directs the agent to collect admin credentials, call the gateway API (including iterating pages), write exports to $HOME/Downloads, and optionally run the bundled email script which reads a .env in the skill root. The instructions permit sending potentially sensitive company data to arbitrary recipient addresses. The skill does not declare or surface the .env requirement in the registry manifest — the .env is described only in TOOLS.md. The use of a 'gateway-dev' endpoint and default values embedded in the email script (IdentityGram default sender) are unexpected and should be validated.
Install Mechanism
No install spec (instruction-only plus included script files). No network download/exec of remote archives. This is the lower-risk install pattern.
Credentials
The skill will need SMTP credentials (SMTP_USERNAME and SMTP_PASSWORD) to send email, and TOOLS.md instructs placing them in a .env in the skill root or exporting them in the exec command — yet the registry lists no required env vars and 'Required env vars: none'. The send-email.py also has default SMTP host and default sender fields (in-v3.mailjet.com and [email protected]) that do not match the Cosmonyx branding, which is suspicious/unexplained. Requesting admin email/password for the gateway sign-in is expected, but the absence of declared required env vars and odd defaults is disproportionate to the manifest.
Persistence & Privilege
The skill does not request special installation privileges, always is false, and it does not attempt to modify other skills or global config. It will write files to user-visible locations (Downloads, /tmp) when exporting, which is expected for its function.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install comonyx-admin
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /comonyx-admin 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.1
**Email sending is now handled by a built-in script.** - Added dedicated email script at `scripts/send-email.py` for sending exports directly from this skill. - Updated documentation to clarify email export uses this skill's own script (not a shared one from elsewhere). - Adjusted TOOLS.md integration instructions to resolve the email script path to this skill’s directory. - Minor clarifications in export and email instructions for better usability.
v1.0.0
Initial release: sign in, filter companies, export PDF/Excel, optional email export, reminder emails.
元数据
Slug comonyx-admin
版本 1.0.1
许可证
累计安装 1
当前安装数 1
历史版本数 2
常见问题

Comonyx Admin 是什么?

Admin skill to sign into Cosmonyx, fetch companies, filter/export (PDF or Excel), optionally email the export, or send reminder emails to filtered companies. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 560 次。

如何安装 Comonyx Admin?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install comonyx-admin」即可一键安装,无需额外配置。

Comonyx Admin 是免费的吗?

是的,Comonyx Admin 完全免费(开源免费),可自由下载、安装和使用。

Comonyx Admin 支持哪些平台?

Comonyx Admin 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Comonyx Admin?

由 waqas-orcalo(@waqas-orcalo)开发并维护,当前版本 v1.0.1。

💬 留言讨论