diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..fc1a808 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,60 @@ +# Changelog + +All notable changes to the Porkbun DNS skill will be documented in this file. + +## [1.0.0] - 2026-02-10 + +### Added +- Initial release of Porkbun DNS management skill +- CLI tool `scripts/porkbun-dns.js` for all DNS operations +- Support for common record types: A, AAAA, CNAME, MX, TXT, NS, ALIAS, SRV, TLSA, CAA, HTTPS, SVCB, SSHFP +- Domain listing and status checking +- DNS record create, read, update, delete (CRUD) operations +- Batch operations: edit/delete by type and subdomain +- Configuration via environment variables or config file +- Full SKILL.md documentation with examples + +### Features +- **Ping**: Test API connection +- **List domains**: View all domains with status and expiration +- **Records**: Get all DNS records for a domain +- **Create**: Add new DNS records with full control (type, name, content, TTL, priority) +- **Edit**: Update records by ID or by type/subdomain +- **Delete**: Remove records by ID or by type/subdomain +- **Get**: Retrieve specific records with filtering by type and/or name + +### Documentation +- Complete SKILL.md with API reference and usage examples +- README.md with quick start guide +- Inline tool help (`node porkbun-dns.js --help`) + +--- + +## [Unreleased] + +### Planned +- DNS record validation before submission +- Bulk record import/export +- DNSSEC management support +- Zone file import/export +- Webhook notifications for DNS changes +- Rate limit handling + +--- + +## Version Guidelines + +This project follows [Semantic Versioning](https://semver.org/): + +- **MAJOR** version: Incompatible API changes +- **MINOR** version: Backwards-compatible functionality additions +- **PATCH** version: Backwards-compatible bug fixes + +## Categories + +- **Added**: New features +- **Changed**: Changes in existing functionality +- **Deprecated**: Soon-to-be removed features +- **Removed**: Removed features +- **Fixed**: Bug fixes +- **Security**: Security vulnerabilities \ No newline at end of file diff --git a/README.md b/README.md index 3c1b72e..0658322 100644 --- a/README.md +++ b/README.md @@ -10,31 +10,46 @@ This skill enables OpenClaw to manage DNS records on Porkbun's DNS service. It i ### For OpenClaw Users -Installation will be available via clawhub.ai once published. The skill file is `porkbun.skill`. +Installation is available via clawhub.ai: `openclaw skills install porkbun-dns` ### Manual Installation -1. Download `porkbun.skill` -2. Install in your OpenClaw skills directory -3. Configure API credentials (see Setup below) +1. Download or clone this repository +2. Create `~/.config/porkbun/config.json` with your credentials (see Setup below) +3. The CLI tool is available at `scripts/porkbun-dns.js` ## Setup ### 1. Get API Keys -Generate API keys at: https://porkbun.com/account/api +1. Log in to Porkbun +2. Visit https://porkbun.com/account/api +3. Generate API credentials (both public and secret keys) ### 2. Configure Credentials -Create `~/.config/porkbun/config.json`: -```json +**Option A: Config file (recommended)** +```bash +mkdir -p ~/.config/porkbun +cat > ~/.config/porkbun/config.json << EOF { - "apiKey": "your-porkbun-api-key", - "secretApiKey": "your-porkbun-secret-key" + "apiKey": "your-pk1-api-key-here", + "secretApiKey": "your-sk1-secret-key-here" } +EOF ``` -**Important:** These keys are sensitive. Keep them secure and don't commit them to git. +**Option B: Environment variables** +```bash +export PORKBUN_API_KEY="your-pk1-api-key-here" +export PORKBUN_SECRET_API_KEY="your-sk1-secret-key-here" +``` + +**Important:** +- These keys are sensitive - never commit them to git or share publicly +- The config file is read automatically if present +- Environment variables take precedence over config file +- Store credentials in `~/.config/porkbun/` which is excluded from git ### 3. Enable API Access @@ -69,8 +84,10 @@ Example conversations: ## Documentation Inside the skill: +- **CHANGELOG.md** - Version history and changes - **SKILL.md** - Main usage guide - **references/dns-record-types.md** - Complete DNS record reference +- **package.json** - Skill metadata and environment requirements Online: - [Porkbun API Documentation](https://porkbun.com/api/json/v3/documentation) diff --git a/package.json b/package.json new file mode 100644 index 0000000..847ab2e --- /dev/null +++ b/package.json @@ -0,0 +1,64 @@ +{ + "name": "porkbun-dns", + "version": "1.0.0", + "description": "Manage Porkbun DNS records and domains via API v3. Create, read, update, and delete DNS records for domains managed by Porkbun.", + "homepage": "http://git.theta42.com/nova/porkbun-skill", + "author": { + "name": "Nova AI", + "email": "nova@vm42.us" + }, + "owner": "wmantly", + "openclaw": { + "always": false, + "capabilities": [ + "execute" + ] + }, + "environment": { + "required": { + "PORKBUN_API_KEY": { + "description": "Porkbun API key from https://porkbun.com/account/api", + "help": "Create API credentials at Porkbun account settings", + "type": "string" + }, + "PORKBUN_SECRET_API_KEY": { + "description": "Porkbun secret API key from https://porkbun.com/account/api", + "help": "Must be paired with PORKBUN_API_KEY", + "type": "string" + } + }, + "optional": {}, + "config": { + "paths": [ + "~/.config/porkbun/config.json" + ], + "help": "Alternatively, store credentials in ~/.config/porkbun/config.json with format: {\"apiKey\": \"key\", \"secretApiKey\": \"secret\"}" + } + }, + "install": { + "type": "instruction", + "steps": [ + "1. Get API credentials: Log in to Porkbun and visit https://porkbun.com/account/api", + "2. Create API credentials (both public and secret keys)", + "3. Set environment variables OR create config file:", + " Option A: export PORKBUN_API_KEY='your-key' && export PORKBUN_SECRET_API_KEY='your-secret'", + " Option B: mkdir -p ~/.config/porkbun && cat > ~/.config/porkbun/config.json << EOF", + " {", + " \"apiKey\": \"your-pk1-key\",", + " \"secretApiKey\": \"your-sk1-key\"", + " }", + " EOF" + ] + }, + "scripts": { + "porkbun-dns": "scripts/porkbun-dns.js" + }, + "license": "MIT", + "keywords": [ + "dns", + "porkbun", + "domain", + "api", + "cli" + ] +} \ No newline at end of file