chore: initial monorepo scaffold + WDS Phase 1+2 artifacts
- Nx 22.7 monorepo (pnpm 11.1, TypeScript 5.9, Node 24) - apps/api: NestJS 11 (CJS conforme CODING-RULES.md PGD-DB-004) - apps/web: React 19 + Vite 8 (ESM) - libs/shared/api-interface: Zod contract base - Docker Compose dev: Postgres 18, Valkey 8, MinIO, Mailpit - WDS artifacts: - design-artifacts/A-Product-Brief/ (5 docs canônicos + 16 dialogs) - design-artifacts/B-Trigger-Map/ (hub + 4 personas + feature impact) - Stack canon: STACK.md v2.2 + CODING-RULES.md v2.0 + brand.md - AGENTS.md + README.md como entrada para devs/agentes Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
151
.claude/skills/sync/SKILL.md
Normal file
151
.claude/skills/sync/SKILL.md
Normal file
@@ -0,0 +1,151 @@
|
||||
---
|
||||
name: sync
|
||||
version: "1.0.0"
|
||||
description: Syncs WDS skills from the current project (_bmad/wds/) to ~/.claude/commands/ so they work in any project. Called automatically on every agent activation.
|
||||
agents: [saga, freya, mimir]
|
||||
---
|
||||
|
||||
# WDS Sync
|
||||
|
||||
Keeps `~/.claude/commands/` current with the WDS installation in the active project.
|
||||
Agents call this silently on every activation. Users can also call it directly.
|
||||
|
||||
---
|
||||
|
||||
## Entry points
|
||||
|
||||
**On agent activation — silent mode**
|
||||
- First time (no global commands exist): ask the user once, then sync.
|
||||
- Subsequent activations: compare files, sync silently if changed, skip if identical.
|
||||
- Never block activation. If sync fails for any reason, continue.
|
||||
|
||||
**Direct user request** ("sync", "update WDS", "sync skills", "check for updates") — verbose, report each step.
|
||||
|
||||
---
|
||||
|
||||
## Steps
|
||||
|
||||
### 1 — Locate project installation
|
||||
|
||||
Find `_bmad/wds/` relative to the current project root.
|
||||
|
||||
If `_bmad/wds/` does not exist:
|
||||
- Silent mode: stop silently.
|
||||
- Verbose mode: `⚠️ WDS not installed in this project. Run: npx bmad-method install`
|
||||
|
||||
Store the source root: `WDS_SRC = {project-root}/_bmad/wds`
|
||||
|
||||
---
|
||||
|
||||
### 2 — Detect home directory
|
||||
|
||||
```bash
|
||||
# Mac / Linux
|
||||
HOME_DIR="$HOME"
|
||||
|
||||
# Windows (PowerShell)
|
||||
$HOME_DIR = $env:USERPROFILE
|
||||
```
|
||||
|
||||
Destination directories:
|
||||
- Commands: `{HOME_DIR}/.claude/commands/`
|
||||
- Tools: `{HOME_DIR}/.claude/wds/tools/memory/`
|
||||
- Data: `{HOME_DIR}/.claude/wds/data/`
|
||||
|
||||
---
|
||||
|
||||
### 3 — Check sync state
|
||||
|
||||
Check if `{HOME_DIR}/.claude/commands/wrap.md` exists.
|
||||
|
||||
**First time (file missing):** go to step 4 — ask user.
|
||||
|
||||
**Already synced:** compare `{HOME_DIR}/.claude/commands/wrap.md` to `{WDS_SRC}/skills/wrap.md`.
|
||||
|
||||
```bash
|
||||
# Mac / Linux
|
||||
diff -q "{HOME_DIR}/.claude/commands/wrap.md" "{WDS_SRC}/skills/wrap.md"
|
||||
|
||||
# Windows
|
||||
Compare-Object (Get-Content "{HOME_DIR}\.claude\commands\wrap.md") (Get-Content "{WDS_SRC}\skills\wrap.md")
|
||||
```
|
||||
|
||||
If identical: finish silently.
|
||||
If different: go to step 5 — sync silently.
|
||||
|
||||
---
|
||||
|
||||
### 4 — First time: ask user
|
||||
|
||||
Print exactly:
|
||||
|
||||
```
|
||||
WDS is installed in this project but skills are not yet available globally.
|
||||
Sync now? Adds /saga /freya /mimir /start /wrap /handoff to all Claude Code sessions.
|
||||
[Y/n]
|
||||
```
|
||||
|
||||
If **n**: stop. Do not ask again this session.
|
||||
If **y** (or Enter): go to step 5.
|
||||
|
||||
---
|
||||
|
||||
### 5 — Sync files
|
||||
|
||||
Create destination directories if they don't exist:
|
||||
|
||||
```bash
|
||||
# Mac / Linux
|
||||
mkdir -p "{HOME_DIR}/.claude/commands"
|
||||
mkdir -p "{HOME_DIR}/.claude/wds/tools/memory"
|
||||
mkdir -p "{HOME_DIR}/.claude/wds/data"
|
||||
|
||||
# Windows
|
||||
New-Item -ItemType Directory -Force "{HOME_DIR}\.claude\commands"
|
||||
New-Item -ItemType Directory -Force "{HOME_DIR}\.claude\wds\tools\memory"
|
||||
New-Item -ItemType Directory -Force "{HOME_DIR}\.claude\wds\data"
|
||||
```
|
||||
|
||||
Copy agent commands:
|
||||
|
||||
| Source | Destination |
|
||||
|--------|-------------|
|
||||
| `{WDS_SRC}/skills/saga.activation.md` | `{HOME_DIR}/.claude/commands/saga.md` |
|
||||
| `{WDS_SRC}/skills/freya.activation.md` | `{HOME_DIR}/.claude/commands/freya.md` |
|
||||
| `{WDS_SRC}/skills/mimir.activation.md` | `{HOME_DIR}/.claude/commands/mimir.md` |
|
||||
| `{WDS_SRC}/skills/start.md` | `{HOME_DIR}/.claude/commands/start.md` |
|
||||
| `{WDS_SRC}/skills/wrap.md` | `{HOME_DIR}/.claude/commands/wrap.md` |
|
||||
| `{WDS_SRC}/skills/handoff.md` | `{HOME_DIR}/.claude/commands/handoff.md` |
|
||||
|
||||
Copy tools and data:
|
||||
|
||||
| Source | Destination |
|
||||
|--------|-------------|
|
||||
| `{WDS_SRC}/tools/memory/SKILL.md` | `{HOME_DIR}/.claude/wds/tools/memory/SKILL.md` |
|
||||
| `{WDS_SRC}/data/wds-glossary.md` | `{HOME_DIR}/.claude/wds/data/wds-glossary.md` |
|
||||
| `{WDS_SRC}/data/agent-contracts.md` | `{HOME_DIR}/.claude/wds/data/agent-contracts.md` |
|
||||
| `{WDS_SRC}/data/shared-activation.md`| `{HOME_DIR}/.claude/wds/data/shared-activation.md`|
|
||||
|
||||
Skip any source file that does not exist — do not error.
|
||||
|
||||
---
|
||||
|
||||
### 6 — Report
|
||||
|
||||
**First-time / direct call:**
|
||||
```
|
||||
✓ WDS skills synced to ~/.claude/commands/
|
||||
/saga /freya /mimir /start /wrap /handoff
|
||||
```
|
||||
|
||||
**Silent update (changes detected):**
|
||||
```
|
||||
✓ WDS skills updated.
|
||||
```
|
||||
|
||||
**No changes (direct call only):**
|
||||
```
|
||||
WDS skills are up to date.
|
||||
```
|
||||
|
||||
**Silent mode with no changes:** no output.
|
||||
Reference in New Issue
Block a user