initial-setup
GitHub用于新用户引导和初始设置,动态发现已安装Agent并自动构建工作区目录结构,帮助用户快速上手EvoNexus平台。
Trigger Scenarios
Install
npx skills add evolution-foundation/evo-nexus --skill initial-setup -g -y
SKILL.md
Frontmatter
{
"name": "initial-setup",
"description": "Welcome and onboard new EvoNexus users — introduce agents, skills, routines, and the dashboard. Triggers when the user says 'get started', 'how do I use this', 'what can you do', 'help me get started', 'onboarding', 'show me around', 'what agents do I have', 'how does this work', 'first time here', or seems unfamiliar with the workspace. Also trigger when the user opens Claude Code in an EvoNexus workspace for the first time."
}
EvoNexus — Welcome & Onboarding
The user already has EvoNexus installed and running. Your job is to welcome them, show what's available, and help them start using agents, skills, and routines right away.
Step 0: Bootstrap Workspace Structure (dynamic)
Before welcoming, ensure the workspace/ folder tree exists. The workspace is gitignored (personal data) so new installations start empty — you need to discover which agents are installed and create folders based on what each agent declares in its own system prompt, not a hardcoded list. This keeps the skill self-updating: when new agents are added (business, engineering, or custom), their folders are created automatically the next time this runs.
Discovery phase
-
Read
config/workspace.yamlto getworkspace.owner,workspace.company,workspace.language,workspace.timezone,workspace.name. These values drive language and personalization. -
List all installed agents with
Glob .claude/agents/*.md. This captures:- Business layer agents (
clawdia-assistant.md,flux-finance.md, etc.) - Engineering layer agents (
apex-architect.md,bolt-executor.md, etc.) as they get imported - Custom agents (
custom-*.md) the user created
- Business layer agents (
-
For each agent file, Read it and extract:
- Name from the frontmatter (
name: ...) - Color from the frontmatter (
color: ...) — used for future dashboard integration - Domain / role from the
description:frontmatter field or the first prose paragraph - Working folder — look for the
## Working Foldersection and parse the first sentence forworkspace/{folder}/. If the agent has no## Working Foldersection (e.g., pure orchestrators like Clawdia, knowledge agents like Oracle), record it as "no dedicated folder" and skip folder creation for that agent. - Subfolders — if the Working Folder description or the agent's prose mentions specific subfolders (e.g.,
strategy/analyses/,project/github-reviews/), extract them too. - Anti-patterns / approval rules — scan sections like
## Anti-patterns,## Absolute Rules,## Your Level,### REQUIRES user approvalto extract the 1-2 most important conventions.
- Name from the frontmatter (
-
Build an in-memory table of
{agent, folder, subfolders, domain, conventions}. This is the source of truth for Step 1.
Creation phase
-
Check if the structure already exists. Run a quick check: if every folder in the discovered table already exists on disk, structure is already bootstrapped — skip creation and proceed to the "Customizations" summary below. Otherwise, continue.
-
Create folders. For each entry in the table that declares a Working Folder:
- Create
workspace/{folder}/if missing - Create any declared subfolders
- Create
.gitkeepin the top-level folder (subfolders don't need it — the wildcard in.gitignorehandles them) - Never overwrite existing folders or files
- Create
-
Create the shared read-only folder
workspace/projects/(plural) if missing — this is where the user uploads git repositories that every agent can read. Also add a.gitkeep. -
Create operational folders that are not owned by any single agent but are referenced by routines:
workspace/daily-logs/— written by clawdia and by the morning/eod routinesworkspace/meetings/— managed byint-sync-meetingsroutine (Fathom)
Only create these if they're referenced by at least one installed routine or agent; skip if the underlying agent/routine is not installed.
Overview files phase
-
Read
workspace.languagefromconfig/workspace.yaml. All overview files respect this value:- Filename and content are translated to
workspace.language(e.g.,pt-BR→[C] Visão Geral — Financeiro.md;en→[C] Overview — Finance.md;es→[C] Visión General — Finanzas.md) - If
workspace.languageis not set, default toen - This is the only place where the codebase writes localized filenames, because these files land in
workspace/(gitignored, personal)
- Filename and content are translated to
-
For each folder you created in Step 6, write an overview file using this canonical template (translate title, headings, and bullets to the target language before writing):
# Overview — {Sector} Working folder for agent **@{agent-name}** ({agent domain extracted from the agent file}). ## What goes here {Extract 3-6 bullets from the agent's Working Folder description and Responsibilities section} ## Conventions - Files created by the agent are prefixed with `[C]` - {1-2 agent-specific rules extracted from Anti-patterns / Absolute Rules / Your Level}Never overwrite an existing overview — if one already exists in any language, skip it (the user may have customized it).
Customizations summary phase
-
Scan agent improvement notes. For each agent, check if
.claude/agent-memory/{agent-name}/_improvements.mdexists. If yes, read the first few lines and remember them for the summary. -
Scan agent memory folders for customizations the user has saved (e.g., feedback memories, project memories). Count how many entries each agent has in its
MEMORY.mdindex. -
Report customizations to the user. After the welcome, include a "Your workspace customizations" section that surfaces:
- Which agents have pending
_improvements.mdnotes (and the first line of each) - Which agents have non-empty
MEMORY.mdindexes (count of entries) — this tells the user where they've already built up context - Any
custom-*agents the user has created - Any new folders the user added to
workspace/that don't match an installed agent
This makes onboarding dynamic: instead of a generic tour, the user sees their workspace state and what's already been tailored.
- Which agents have pending
Important rules
- Never overwrite existing files or folders — the user may already have content
- Discovery drives creation — never hardcode folder names; always parse from the agent files. If a new agent is added, it will be picked up automatically.
projects/(plural) is shared read-access for all agents; the user uploads git repos there- Engineering agents (dev layer from oh-my-claudecode) typically don't declare a
## Working Folderbecause they work across the codebase itself — skip folder creation for them personal/may contain a health dashboard setup (docker-compose.yml,health-data.js) — don't touch if it existsmeetings/is managed by the sync-meetings routine — no overview file (has its ownREADME.md)- Speed: the discovery phase reads ~30 small markdown files; keep it fast by only reading the top ~40 lines of each agent unless you need deeper inspection
After bootstrap is done (or confirmed already existing), proceed to Welcome.
Welcome
Start with a warm, dynamic welcome that uses the counts you discovered in Step 0. Do not hardcode agent or skill numbers — read them from the filesystem so the message stays accurate as the workspace grows.
Counts to compute at runtime:
- Agents:
Glob .claude/agents/*.mdand count entries (excludecustom-*.mdor report them separately) - Skills:
Glob .claude/skills/*/SKILL.mdand count entries - Routines: count entries in
config/routines.yaml(orROUTINES.mdif yaml doesn't exist) - Custom extensions: count
.claude/agents/custom-*.md,.claude/skills/custom-*/SKILL.md,.claude/commands/custom-*.md
Welcome text (template, translate to workspace.language):
Welcome to {workspace.name} — your AI-powered operating system, {workspace.owner}. You have {N} agents, {N} skills, and {N} automated routines ready to go. Let me show you what you can do.
Your Agents
Present the agents in a dynamic table built from Step 0's discovery table. Group them by layer:
- Business layer — agents whose file name matches the canonical business names (clawdia, flux, atlas, pulse, pixel, sage, nex, mentor, kai, oracle, mako, aria, zara, lex, nova, dex) or whose description mentions a business domain
- Engineering layer — agents whose file name starts with a known dev role (apex, bolt, compass, echo, flow, grid, hawk, lens, oath, prism, probe, quill, raven, scout, scroll, trail, vault, zen, canvas) — these come from oh-my-claudecode
- Custom layer — any agent whose filename starts with
custom-
For each layer, build a table dynamically by reading each agent file and extracting command, name, and one-line role:
| Command | Agent | Role | Try saying... |
|---|---|---|---|
/{command} |
{Name} | {role from description frontmatter} | {first example from description} |
Do not hardcode the table. Build it from the files on disk so new agents (including engineering imports and custom ones) appear automatically.
After the agents table, add:
You don't have to use slash commands — just describe what you need and I'll route to the right agent automatically.
Quick Wins to Try Right Now
Suggest 3 things the user can try immediately based on what's most useful:
1. Morning Briefing
"Say 'good morning' and the Ops agent will check your calendar, emails, tasks, and give you a prioritized plan for the day."
2. Dashboard Overview
"Open http://localhost:8080 to see the web dashboard — overview metrics, reports, services, and even a Claude Code terminal in the browser."
3. Run a Routine
"Try running a routine manually:
make morning— morning briefingmake community— community pulse reportmake fin-pulse— financial snapshot
Each routine generates an HTML report you can view in the dashboard under Reports."
Skills by Domain
Compute skill categories dynamically from the filesystem:
Glob .claude/skills/*/SKILL.md→ list of installed skills- Group by prefix (the part before the first
-):fin-,social-,dev-,int-,mkt-, etc. - Count entries per prefix
- For each prefix, pull 2-3 representative examples by reading the
name:frontmatter of the first few skills in that group
Present as a table:
You have {total} skills organized by prefix. Here are the categories installed in your workspace:
| Prefix | Count | Examples |
|---|---|---|
{prefix}- |
{N} | {skill1, skill2, skill3} |
| ... | ... | ... |
Do not hardcode the prefix list. Different installations may have different layers enabled — the business layer (fin-, social-, mkt-, hr-, legal-, etc.), the engineering layer (dev-), and any custom prefixes the user introduced. Build the table from what's actually installed.
After the table:
Browse all skills in the dashboard under Skills, or just ask me to do something and I'll use the right skill.
Automated Routines
Read config/routines.yaml at runtime to list the actual routines installed in this workspace. Group them by frequency (daily / weekly / monthly) based on the cron schedule or frequency: field, and list the first handful per group.
Present as:
EvoNexus can run routines automatically on a schedule. You have {N} routines installed:
Daily: {list top 5-6 by name} Weekly: {list} Monthly: {list}
Start the scheduler with
make schedulerand routines run at their configured times. See the full list withmake help.
If config/routines.yaml is missing or empty, say so and point the user to create-routine skill to set up their first one.
The Web Dashboard
"Your dashboard at http://localhost:8080 has:
- Overview — all metrics at a glance
- Chat — Claude Code terminal in the browser
- Reports — HTML reports from routines
- Systems — register and manage your apps
- Services — start/stop scheduler, see live logs
- Routines — metrics per routine + manual run button
- Integrations — connect YouTube, Instagram, LinkedIn via OAuth
- Users & Roles — manage access with custom permissions"
Your Workspace Customizations
After the welcome tour, surface what's already been tailored in this specific workspace — this turns a generic onboarding into a personalized status check. Gather:
-
Agent improvement notes — for each agent folder in
.claude/agent-memory/, check if_improvements.mdexists. If yes, read the first line and list it. Example output:- @flux has 2 pending improvement ideas: "Add cash flow forecast chart…"
- @sage has 1 pending improvement idea: "Link OKR review to Linear cycles…"
-
Agent memory depth — for each
.claude/agent-memory/{agent}/MEMORY.md, count the index entries. Report agents with accumulated context:- @clawdia has built up 14 memories (feedback, project context, references)
- @aria has 3 memories
-
Shared knowledge base — check
memory/index.md. Report how many people profiles, projects, glossary entries, and trends are populated:- Shared memory: 6 people profiles, 2 project histories, 42 glossary terms, 15 weekly trend snapshots
-
Custom agents, skills, and commands — list anything under
.claude/agents/custom-*,.claude/skills/custom-*,.claude/commands/custom-*. These are workspace-specific extensions the user created. -
Orphaned folders — list any directories in
workspace/that do not match a declared agent working folder. These may be legacy or manual organization and deserve a heads-up:workspace/meetings/— managed by the sync-meetings routine (not owned by any agent, this is expected)workspace/{unknown}/— not matched to any agent, you may want to review
-
Config status — check
config/workspace.yamlvalues. Ifowner,company,language, ortimezoneare missing/default, flag them as "needs configuration".
Present all of this as a concise summary under a heading like:
Your workspace so far
Here's what's already been customized in {workspace.name}:
- {bulleted list from items 1-6 above}
This tells you where you've invested setup time. Agents with pending
_improvements.mdnotes are great targets for your next session — open the file with your agent and clear the backlog.
What to Do Next
Based on what you discovered in the customizations phase, suggest personalized next steps — don't hardcode suggestions:
- If the user has populated
memory/people/but notmemory/projects/→ suggest updating project context - If any agent has
_improvements.md→ suggest tackling it - If no routines are scheduled → suggest running a morning briefing manually
- If the user has
custom-*agents → suggest trying one of them - Default: suggest "good morning" to
@clawdia(if installed) for the daily briefing
End with:
Just tell me what you're working on and I'll route you to the right agent.
Tone
- Enthusiastic but not overwhelming — show value quickly
- Let the user explore at their own pace
- Suggest concrete actions, not abstract descriptions
- If they seem experienced, be concise; if new, be more detailed
- Always end with an invitation to try something: "Want to try one of these now?"
Version History
- 7f5dd76 Current 2026-07-25 04:54


