/pulse-faq-sync
Sync and update the community FAQ from Discord conversations, WhatsApp groups, and GitHub issues. Identifies recurring questions, adds new entries, and keeps the FAQ as a living knowledge base. Use when user says 'update faq', 'sync faq', 'community faq', 'frequently asked
$ npx -y skills add evolution-foundation/evo-nexus --skill pulse-faq-sync --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/pulse-faq-sync
Context preview
The summary Claude sees to decide when to auto-load this skill.
Sync and update the community FAQ from Discord conversations, WhatsApp groups, and GitHub issues. Identifies recurring questions, adds new entries, and keeps the FAQ as a living knowledge base. Use when user says 'update faq', 'sync faq', 'community faq', 'frequently asked
SKILL.md
pulse-faq-sync.SKILL.mdname: pulse-faq-sync
description: "Sync and update the community FAQ from Discord conversations, WhatsApp groups, and GitHub issues. Identifies recurring questions, adds new entries, and keeps the FAQ as a living knowledge base. Use when user says 'update faq', 'sync faq', 'community faq', 'frequently asked questions', or when running community routines that detect unanswered/recurring questions."
FAQ Sync — Living Knowledge Base
Routine that keeps the community FAQ always updated, fed by questions from Discord, WhatsApp, and GitHub issues.
**Always respond in English.**
Main file
workspace/community/[C] FAQ.md
This is the single source of truth file. All agents and support bots should consult this file.
FAQ Structure
The file follows this format:
# FAQ — Community
> Automatically updated. Last sync: {YYYY-MM-DD HH:MM}
> Sources: Discord (#help, #feedback) + GitHub Issues
> Total: {N} questions
---
## Installation & Setup
<!-- tag: installation, setup, docker, deploy -->
### How to install the main API via Docker?
**Answer:** [clear and direct answer]
**Source:** Discord #help (recurring) | [Official doc link if available]
**Added:** YYYY-MM-DD
### How to configure SSL/HTTPS?
**Answer:** [...]
**Source:** GitHub YOUR_ORG/main-api#123
**Added:** YYYY-MM-DD
---
## Configuration
<!-- tag: config, env, variables, webhook -->
### How to configure webhooks?
...
---
## Integrations
<!-- tag: whatsapp, telegram, typebot, n8n, chatwoot -->
...
## Evo CRM
<!-- tag: crm, agents, pipeline, leads -->
...
## Evo Go
<!-- tag: evogo, go, manager -->
...
## Billing & Licenses
<!-- tag: license, plan, price, payment -->
...
## Common Errors
<!-- tag: error, bug, 503, 401, timeout -->
...Workflow
Step 1 — Read current FAQ
Read `workspace/community/[C] FAQ.md`. If it does not exist, create it with the base structure.
Count how many entries exist and which categories.
Step 2 — Collect new questions
**From Discord (last 24h):** Use `/discord-get-messages` on channels:
- `🆘・help` (ID do canal de help)
- `🆘・feedback`
- `💬・chat-pt`
Identify messages that are **questions** (end in ?, ask for help, report errors).
**From GitHub (last 24h):**
# Issues abertas recentemente nos 5 repos
gh issue list --repo YOUR_ORG/main-api --state open --json title,body,labels,createdAt --limit 10
gh issue list --repo YOUR_ORG/crm-product --state open --json title,body,labels,createdAt --limit 10
gh issue list --repo YOUR_ORG/go-service --state open --json title,body,labels,createdAt --limit 10
gh issue list --repo YOUR_ORG/crm-community --state open --json title,body,labels,createdAt --limit 10
gh issue list --repo YOUR_ORG/methodology --state open --json title,body,labels,createdAt --limit 5
Filter issues that are questions or recurring bugs.
**From WhatsApp (last 24h):** Use `/int-whatsapp` to fetch messages from groups:
python3 {project-root}/.claude/skills/int-whatsapp/scripts/whatsapp_client.py messages_24hFilter messages that are questions (end in ?, ask for help, report errors, ask for configuration guidance). Mark source as "WhatsApp {group name}".
**From Linear — "Evolution Suporte" Project:** Use Linear MCP to fetch recently resolved issues from the paid support project:
list_issues(project="Evolution Suporte", state="Done", updatedAt="-P1D")
Resolved issues from paid support are a gold mine for the FAQ — these are real client problems with validated solutions. For each resolved issue:
- Extract the reported problem as a question
- Extract the resolution as an answer
- Mark source as "Linear — Paid Support"
- Prioritize inclusion in FAQ (paying clients = high relevance)
Step 3 — Analyze and classify (MANDATORY validation gate)
For each question found:
1. **Already in the FAQ?** → If yes, check if the answer needs updating 2. **Is it recurring?** → If it appeared 2+ times (Discord, GitHub, or WhatsApp), add with priority 3. **HAS A REAL, VERIFIED ANSWER?** → **This is a HARD GATE. If this check fails, SKIP the question — do NOT add to FAQ.** Required by source:
- **GitHub issues:** must link to the specific comment URL with the solution, and the comment must be from a team member (org member, maintainer) OR the issue must be in state `closed` with label `solved`/`resolved`. Issues with no replies or only community speculation → SKIP.
- **Linear (Evolution Suporte):** only issues with `state=Done` AND a resolution comment from the assignee. Cite the issue ID + resolution comment.
- **Discord:** must cite the exact username + timestamp + message link of the **reply** (not the question). The reply must come from a team member or a verified helper. Questions without a reply, or with only "+1"/"same here" → SKIP.
- **WhatsApp:** since messages don't have stable links, require the responder's name + approximate timestamp AND the literal reply text. If only the question exists with no reply → SKIP.
- **No answer found within 24h?** → SKIP and count under "pending documentation" in the Step 6 report. Do not create an FAQ entry.
4. **Which category?** → Classify in the correct FAQ category
Step 4 — Update FAQ (no paraphrasing)
For each new question that passed the Step 3 gate:
- Formulate a clear question in PT-BR (rewriting the question is fine)
- **DO NOT rewrite, paraphrase or "improve" the answer.** Extract the literal text of the answer from the source and cite it. Light formatting (bullet list, code fences) is OK, but the content must come from the source.
- If the source answer is partial or unclear for one aspect, add `[pending: {specific missing detail}]` inline and flag for follow-up — do not fill the gap with generic knowledge.
- Include source with the verifiable reference (comment URL, username + timestamp, Linear issue ID)
- Include date
- Add to the correct category
For existing questions:
- Update the answer only if there is new verified information from a sou
Read more
name: pulse-faq-sync description: "Sync and update the community FAQ from Discord conversations, WhatsApp groups, and GitHub issues. Identifies recurring questions, adds new entries, and keeps the FAQ as a living knowledge base. Use when user says 'update faq', 'sync faq', 'community faq', 'frequently asked questions', or when running community routines that detect unanswered/recurring questions."
FAQ Sync — Living Knowledge Base
Routine that keeps the community FAQ always updated, fed by questions from Discord, WhatsApp, and GitHub issues.
**Always respond in English.**
Main file
workspace/community/[C] FAQ.md
This is the single source of truth file. All agents and support bots should consult this file.
FAQ Structure
The file follows this format:
# FAQ — Community
> Automatically updated. Last sync: {YYYY-MM-DD HH:MM}
> Sources: Discord (#help, #feedback) + GitHub Issues
> Total: {N} questions
---
## Installation & Setup
<!-- tag: installation, setup, docker, deploy -->
### How to install the main API via Docker?
**Answer:** [clear and direct answer]
**Source:** Discord #help (recurring) | [Official doc link if available]
**Added:** YYYY-MM-DD
### How to configure SSL/HTTPS?
**Answer:** [...]
**Source:** GitHub YOUR_ORG/main-api#123
**Added:** YYYY-MM-DD
---
## Configuration
<!-- tag: config, env, variables, webhook -->
### How to configure webhooks?
...
---
## Integrations
<!-- tag: whatsapp, telegram, typebot, n8n, chatwoot -->
...
## Evo CRM
<!-- tag: crm, agents, pipeline, leads -->
...
## Evo Go
<!-- tag: evogo, go, manager -->
...
## Billing & Licenses
<!-- tag: license, plan, price, payment -->
...
## Common Errors
<!-- tag: error, bug, 503, 401, timeout -->
...Workflow
Step 1 — Read current FAQ
Read `workspace/community/[C] FAQ.md`. If it does not exist, create it with the base structure.
Count how many entries exist and which categories.
Step 2 — Collect new questions
**From Discord (last 24h):** Use `/discord-get-messages` on channels:
- `🆘・help` (ID do canal de help)
- `🆘・feedback`
- `💬・chat-pt`
Identify messages that are **questions** (end in ?, ask for help, report errors).
**From GitHub (last 24h):**
# Issues abertas recentemente nos 5 repos gh issue list --repo YOUR_ORG/main-api --state open --json title,body,labels,createdAt --limit 10 gh issue list --repo YOUR_ORG/crm-product --state open --json title,body,labels,createdAt --limit 10 gh issue list --repo YOUR_ORG/go-service --state open --json title,body,labels,createdAt --limit 10 gh issue list --repo YOUR_ORG/crm-community --state open --json title,body,labels,createdAt --limit 10 gh issue list --repo YOUR_ORG/methodology --state open --json title,body,labels,createdAt --limit 5
Filter issues that are questions or recurring bugs.
**From WhatsApp (last 24h):** Use `/int-whatsapp` to fetch messages from groups:
python3 {project-root}/.claude/skills/int-whatsapp/scripts/whatsapp_client.py messages_24hFilter messages that are questions (end in ?, ask for help, report errors, ask for configuration guidance). Mark source as "WhatsApp {group name}".
**From Linear — "Evolution Suporte" Project:** Use Linear MCP to fetch recently resolved issues from the paid support project:
list_issues(project="Evolution Suporte", state="Done", updatedAt="-P1D")
Resolved issues from paid support are a gold mine for the FAQ — these are real client problems with validated solutions. For each resolved issue:
- Extract the reported problem as a question
- Extract the resolution as an answer
- Mark source as "Linear — Paid Support"
- Prioritize inclusion in FAQ (paying clients = high relevance)
Step 3 — Analyze and classify (MANDATORY validation gate)
For each question found:
1. **Already in the FAQ?** → If yes, check if the answer needs updating 2. **Is it recurring?** → If it appeared 2+ times (Discord, GitHub, or WhatsApp), add with priority 3. **HAS A REAL, VERIFIED ANSWER?** → **This is a HARD GATE. If this check fails, SKIP the question — do NOT add to FAQ.** Required by source:
- **GitHub issues:** must link to the specific comment URL with the solution, and the comment must be from a team member (org member, maintainer) OR the issue must be in state `closed` with label `solved`/`resolved`. Issues with no replies or only community speculation → SKIP.
- **Linear (Evolution Suporte):** only issues with `state=Done` AND a resolution comment from the assignee. Cite the issue ID + resolution comment.
- **Discord:** must cite the exact username + timestamp + message link of the **reply** (not the question). The reply must come from a team member or a verified helper. Questions without a reply, or with only "+1"/"same here" → SKIP.
- **WhatsApp:** since messages don't have stable links, require the responder's name + approximate timestamp AND the literal reply text. If only the question exists with no reply → SKIP.
- **No answer found within 24h?** → SKIP and count under "pending documentation" in the Step 6 report. Do not create an FAQ entry.
4. **Which category?** → Classify in the correct FAQ category
Step 4 — Update FAQ (no paraphrasing)
For each new question that passed the Step 3 gate:
- Formulate a clear question in PT-BR (rewriting the question is fine)
- **DO NOT rewrite, paraphrase or "improve" the answer.** Extract the literal text of the answer from the source and cite it. Light formatting (bullet list, code fences) is OK, but the content must come from the source.
- If the source answer is partial or unclear for one aspect, add `[pending: {specific missing detail}]` inline and flag for follow-up — do not fill the gap with generic knowledge.
- Include source with the verifiable reference (comment URL, username + timestamp, Linear issue ID)
- Include date
- Add to the correct category
For existing questions:
- Update the answer only if there is new verified information from a sou
Other skills on evo-nexus.
- /ai-image-creator
Generate PNG images using AI (multiple models via OpenRouter including Gemini, FLUX.2, Riverflow, SeedDream, GPT-5 Image, proxied through Cloudflare AI Gateway BYOK). Also analyze/describe existing images using multimodal AI vision. Use when user asks to "generate an image",
Open skill - /create-agent
Create a new custom agent for the workspace. Guides the user through defining agent name, domain, personality, skills, model, and memory folder. Use when the user says 'create an agent', 'new agent', 'add an agent', 'I need a custom agent', or wants to create a specialized agent
Open skill - /create-command
Create a new slash command for Claude Code. Guides the user through defining the command name, what it does, and generates the markdown file in .claude/commands/. Use when the user says 'create a command', 'new command', 'add a slash command', 'I want a shortcut for', or wants
Open skill - /create-goal
Create a Mission, Project, or Goal (Mission → Project → Goal → Task hierarchy) in EvoNexus. Guides the user through picking a mission, choosing or creating a project, defining a measurable goal with metric_type and target_value. Writes to the SQLite goals tables via POST
Open skill - /create-heartbeat
Create a new heartbeat (proactive agent scheduled with a decision prompt) for EvoNexus. Guides the user through picking an agent, setting interval, wake triggers, and the decision prompt that governs when the agent acts. Writes to config/heartbeats.yaml with pydantic validation.
Open skill - /create-integration
Create a new custom integration (API/service wrapper) for the workspace. Guides the user through defining the integration's slug, display name, description, category, and required env keys. Writes .claude/skills/custom-int-{slug}/SKILL.md via POST /api/integrations/custom. Use
Open skill

