This skill should be used when creating and posting community content to Discord. It generates brand-consistent posts (project updates, tips, milestones, or custom topics), validates against the brand guide, and posts via webhook after approval.
From soleurnpx claudepluginhub jikig-ai/soleur --plugin soleurThis skill uses the workspace's default tool permissions.
Create and post brand-consistent community content to Discord. Content is generated from a user-provided topic, validated against the brand guide, and posted via webhook after explicit user approval.
Before generating content, verify both prerequisites. If either fails, display the error message and stop.
Check if knowledge-base/marketing/brand-guide.md exists.
If missing:
No brand guide found. Run the brand architect agent first to establish brand identity:
Use the brand-architect agent to define our brand.
Stop execution.
Check if the DISCORD_WEBHOOK_URL environment variable is set.
If missing:
DISCORD_WEBHOOK_URLis not set. To configure:
- Open Discord server > Server Settings > Integrations > Webhooks
- Click "New Webhook" and configure the target channel
- Copy the webhook URL
- Set the environment variable:
export DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/..."
Stop execution.
Ask the user: "What would you like to post about?"
Accept a freeform topic description. Optionally offer: "Summarize recent git activity?" -- if accepted, run git log --oneline -20 to gather recent commits and PRs as source material.
Read the brand guide sections that inform content generation:
## Voice -- apply brand voice, tone, do's and don'ts## Channel Notes > ### Discord -- apply Discord-specific guidelines (if the section exists)Generate a draft post that:
## Voice## Channel NotesBefore presenting the draft to the user, validate it against the brand guide:
### Do's and Don'ts sectionPresent the final draft to the user with character count displayed. Use the AskUserQuestion tool with three options:
On acceptance, post the content via webhook:
First get the webhook URL with printenv DISCORD_WEBHOOK_URL, then use the literal URL:
curl -s -o /dev/null -w "%{http_code}" \
-H "Content-Type: application/json" \
-d "{\"content\": \"ESCAPED_CONTENT\", \"username\": \"Sol\", \"avatar_url\": \"AVATAR_URL\", \"allowed_mentions\": {\"parse\": []}}" \
"<webhook-url>"
Replace <webhook-url> with the actual URL from printenv.
Set avatar_url to the hosted logo URL (e.g., the GitHub-hosted logo-mark-512.png). Webhook messages freeze author identity at post time -- these fields ensure consistent branding.
Content must be properly JSON-escaped before inserting into the payload. Escape double quotes, backslashes, and newlines.
Payload format: Plain content field only. No rich embeds in v1.
On success (HTTP 2xx):
Posted to Discord successfully.
On failure (HTTP 4xx/5xx):
Failed to post to Discord (HTTP [status_code]).
Draft content (copy-paste manually):
[full draft content]
Display the draft so the user can post it manually. Do not retry automatically.
content field, not Discord rich embeds## Channel Notes > ### Discord section is missing, generate content using only the ## Voice section (no error)username and avatar_url fields to ensure consistent bot identity -- webhook messages freeze author identity at post time