skills/cert-manager/SKILL.md
A comprehensive toolset for automated SSL certificate generation and management using DNS validation (Let's Encrypt). This skill supports multiple usage routes including direct code import, command-line interface (CLI), client-server architecture, and MCP protocol integration.
npx skillsauth add cubenlp/chattool cert-managerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill provides automated SSL certificate generation and management capabilities using DNS validation (Let's Encrypt). It offers flexibility through multiple usage routes, allowing you to choose the best method for your specific development or deployment scenario.
Choose the most appropriate route based on your scenario:
| Route | Scenario | Core Tool |
| :--- | :--- | :--- |
| 1. Code Import | Python script development, integration into other apps | chattool.tools.cert.cert_updater.SSLCertUpdater |
| 2. CLI | Local machine, Shell script automation, simple ops | chattool dns cert-update |
| 3. Server-Client | Remote management, async tasks, multi-tenant, distributed | chattool serve cert (Server) <br> chattool client cert (Client) |
| 4. MCP | AI Agent integration, generic tool call | dns_cert_update (via MCP Server) |
Import and use the SSLCertUpdater class directly in Python code.
Configuration:
Example:
import asyncio
from chattool.tools.cert.cert_updater import SSLCertUpdater
from chattool.utils import setup_logger
async def main():
updater = SSLCertUpdater(
domains=["example.com", "*.example.com"],
email="[email protected]",
dns_type="aliyun",
cert_dir="./certs",
access_key_id="...", # Optional, defaults to env var
access_key_secret="..." # Optional, defaults to env var
)
success = await updater.run_once()
if success:
print("Certificate generated successfully!")
if __name__ == "__main__":
asyncio.run(main())
Use the chattool command-line interface to request certificates directly.
Configuration:
ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET (for Aliyun).Example:
# Generate certificate
chattool dns cert-update \
-d example.com -d "*.example.com" \
-e [email protected] \
--provider aliyun \
--cert-dir ./my-certs
Start an HTTP server to handle certificate requests and call it remotely via the client tool. Supports multi-tenant isolation (Token-based).
Step 1: Start Server
# Start on server, set auth token
chattool serve cert --token "my-secret-token" --provider aliyun
Step 2: Client Call
# Apply for certificate (Client side)
chattool client cert apply \
-d example.com -d "*.example.com" \
--token "my-secret-token" \
--server http://<server-ip>:8000
# List certificates
chattool client cert list --token "my-secret-token" --server http://<server-ip>:8000
# Download certificate
chattool client cert download example.com --token "my-secret-token" --server http://<server-ip>:8000
Call tools via MCP protocol if the ChatTool MCP Server is running.
Tool Name: dns_cert_update
Arguments:
domains: List[str] (e.g., ["example.com"])email: strprovider: str ("aliyun" or "tencent")Example (JSON-RPC):
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "dns_cert_update",
"arguments": {
"domains": ["example.com"],
"email": "[email protected]",
"provider": "aliyun"
}
},
"id": 1
}
tools
Create staged previews of Zulip topics using read-only CLI queries, including full-thread originals, a small zh-en translation slice, and a Chinese overview in an external work directory such as ~/tmp/chattool-zulip/<channel>/<topic>. Use when asked to preview, summarize, or translate Zulip thread content.
tools
Aggregate and summarize Zulip community updates via ChatTool CLI. Use when user asks to fetch latest Zulip news, list streams/messages, or generate periodic summaries from configured streams/topics.
tools
Use `chattool pypi init` to scaffold a minimal Python package, then validate it with doctor/build/check. Example package name `mychat`.
tools
Post-task normalization workflow for ChatTool development. Use after implementation to review the completed work, extract reusable pieces into the repo, check existing CLI surfaces before adding scripts, run $chattool-dev-review, and then drive docs/tests/changelog/PR updates through the project standards. If the task also includes merged-mainline release work, hand off to $chattool-release after PR/MR stage.