mdan-cli 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cli/mdan.sh ADDED
@@ -0,0 +1,724 @@
1
+ #!/bin/bash
2
+
3
+ # ============================================================
4
+ # MDAN CLI — Command Line Interface
5
+ # Multi-Agent Development Agentic Network
6
+ # ============================================================
7
+
8
+ VERSION="2.2.0"
9
+ MDAN_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
10
+
11
+ # Colors
12
+ RED='\033[0;31m'
13
+ GREEN='\033[0;32m'
14
+ YELLOW='\033[1;33m'
15
+ BLUE='\033[0;34m'
16
+ CYAN='\033[0;36m'
17
+ MAGENTA='\033[0;35m'
18
+ BOLD='\033[1m'
19
+ NC='\033[0m' # No Color
20
+
21
+ # ============================================================
22
+ # BANNER
23
+ # ============================================================
24
+
25
+ banner() {
26
+ echo -e "${CYAN}"
27
+ echo " ███╗ ███╗██████╗ █████╗ ███╗ ██╗"
28
+ echo " ████╗ ████║██╔══██╗██╔══██╗████╗ ██║"
29
+ echo " ██╔████╔██║██║ ██║███████║██╔██╗ ██║"
30
+ echo " ██║╚██╔╝██║██║ ██║██╔══██║██║╚██╗██║"
31
+ echo " ██║ ╚═╝ ██║██████╔╝██║ ██║██║ ╚████║"
32
+ echo " ╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝"
33
+ echo -e "${NC}"
34
+ echo -e " ${BOLD}Multi-Agent Development Agentic Network${NC} v${VERSION}"
35
+ echo ""
36
+ }
37
+
38
+ # ============================================================
39
+ # HELP
40
+ # ============================================================
41
+
42
+ show_help() {
43
+ banner
44
+ echo -e "${BOLD}USAGE${NC}"
45
+ echo " mdan <command> [options]"
46
+ echo ""
47
+ echo -e "${BOLD}COMMANDS${NC}"
48
+ echo " init [project-name] Create a new MDAN project"
49
+ echo " attach [--rebuild] Add MDAN to existing project"
50
+ echo " --rebuild: prepare for full rewrite"
51
+ echo " learn [--skill|--mcp|...] Learn & distribute knowledge"
52
+ echo " skills List available skills"
53
+ echo " skill add <source> Install a new skill"
54
+ echo " phase [1-5] Show phase guide"
55
+ echo " agent [name] Show agent prompt"
56
+ echo " template [name] Show or copy a template"
57
+ echo " prompt [llm] Show setup instructions for an LLM"
58
+ echo " oc Copy orchestrator prompt to clipboard"
59
+
60
+ echo " status Show current project status"
61
+ echo " list List all agents and templates"
62
+ echo " version Show version"
63
+ echo ""
64
+ echo -e "${BOLD}EXAMPLES${NC}"
65
+ echo " mdan init my-saas # Create new project"
66
+ echo " cd existing && mdan attach # Add MDAN to existing project"
67
+ echo " cd existing && mdan attach --rebuild # Prepare for full rewrite"
68
+ echo " mdan phase 1 # Show DISCOVER guide"
69
+ echo " mdan skill add vercel-labs/skills --skill find-skills"
70
+ echo ""
71
+ echo -e "${BOLD}AGENTS${NC}"
72
+ echo " product, architect, ux, dev, test, security, devops, doc"
73
+ echo ""
74
+ echo -e "${BOLD}LLMS / TOOLS${NC}"
75
+ echo " claude, chatgpt, gemini, qwen, kimi, glm, minimax, opencode, cursor, windsurf, copilot"
76
+ }
77
+
78
+ # ============================================================
79
+ # LEARN
80
+ # ============================================================
81
+
82
+ cmd_learn() {
83
+ SUBCOMMAND="${1}"
84
+ shift
85
+
86
+ case "${SUBCOMMAND}" in
87
+ --skill|--rules|--url)
88
+ SOURCE="${1}"
89
+ echo -e "${CYAN}🧠 Learn Agent — Ingesting: ${BOLD}${SOURCE}${NC}"
90
+ echo ""
91
+ echo -e "Copy this activation prompt into your LLM:\n"
92
+ echo "---"
93
+ echo "[ACTIVATING: Learn Agent v2.0.0]"
94
+ echo "Task: Learn and distribute the following source."
95
+ echo "Source type: ${SUBCOMMAND/--/}"
96
+ echo "Source: ${SOURCE}"
97
+ echo "Distribute to: auto-detect"
98
+ echo "---"
99
+ ;;
100
+ --mcp)
101
+ MCP_NAME="${1}"
102
+ echo -e "${CYAN}🔌 Learn Agent — MCP: ${BOLD}${MCP_NAME}${NC}"
103
+ echo ""
104
+ echo "Copy this activation prompt into your LLM:"
105
+ echo "---"
106
+ echo "[ACTIVATING: Learn Agent v2.0.0]"
107
+ echo "Task: Learn the ${MCP_NAME} MCP server and distribute tools to relevant agents."
108
+ echo "Source type: mcp"
109
+ echo "Source: ${MCP_NAME}"
110
+ echo "---"
111
+ ;;
112
+ --list)
113
+ KNOWLEDGE_FILE=".mdan/MDAN-KNOWLEDGE.md"
114
+ if [[ -f "${KNOWLEDGE_FILE}" ]]; then
115
+ cat "${KNOWLEDGE_FILE}"
116
+ else
117
+ echo -e "${YELLOW}No knowledge file found. Run: mdan learn --skill <file>${NC}"
118
+ fi
119
+ ;;
120
+ --capsule)
121
+ AGENT="${1}"
122
+ echo -e "${CYAN}Capsule for agent: ${BOLD}${AGENT}${NC}"
123
+ KNOWLEDGE_FILE=".mdan/MDAN-KNOWLEDGE.md"
124
+ if [[ -f "${KNOWLEDGE_FILE}" ]]; then
125
+ grep -A 20 "### ${AGENT^} Agent" "${KNOWLEDGE_FILE}" | head -25
126
+ else
127
+ echo -e "${YELLOW}No knowledge file. Run mdan learn first.${NC}"
128
+ fi
129
+ ;;
130
+ *)
131
+ echo "Usage: mdan learn [--skill|--rules|--mcp|--url|--list|--capsule] [value]"
132
+ echo ""
133
+ echo " mdan learn --skill ./docs/conventions.md"
134
+ echo " mdan learn --mcp github"
135
+ echo " mdan learn --rules .cursorrules"
136
+ echo " mdan learn --list"
137
+ echo " mdan learn --capsule dev"
138
+ ;;
139
+ esac
140
+ }
141
+
142
+ # ============================================================
143
+ # SKILLS
144
+ # ============================================================
145
+
146
+ cmd_skills() {
147
+ SKILLS_DIR="${MDAN_DIR}/skills"
148
+
149
+ if [[ -d "${SKILLS_DIR}" ]]; then
150
+ echo -e "${CYAN}${BOLD}Available Skills{NC}"
151
+ echo ""
152
+ for skill_dir in "${SKILLS_DIR}"/*/; do
153
+ if [[ -d "${skill_dir}" ]]; then
154
+ skill_name=$(basename "${skill_dir}")
155
+ skill_file="${skill_dir}skill.md"
156
+ if [[ -f "${skill_file}" ]]; then
157
+ description=$(grep -A1 "^description:" "${skill_file}" 2>/dev/null | tail -1 | sed 's/^description: //')
158
+ echo -e " ${GREEN}●${NC} ${BOLD}${skill_name}${NC}"
159
+ echo " ${description}"
160
+ echo ""
161
+ else
162
+ echo -e " ${GREEN}●${NC} ${BOLD}${skill_name}${NC}"
163
+ echo ""
164
+ fi
165
+ fi
166
+ done
167
+ else
168
+ echo -e "${YELLOW}No skills installed.${NC}"
169
+ fi
170
+ }
171
+
172
+ cmd_skill_add() {
173
+ SOURCE="${1}"
174
+ shift
175
+
176
+ echo -e "${CYAN}📦 Installing skill from: ${BOLD}${SOURCE}${NC}"
177
+ echo ""
178
+
179
+ npx skills add "${SOURCE}" "$@" --yes
180
+ }
181
+
182
+ # ============================================================
183
+ # ATTACH (Add MDAN to existing project)
184
+ # ============================================================
185
+
186
+ cmd_attach() {
187
+ REBUILD_MODE=false
188
+
189
+ # Check for --rebuild flag
190
+ if [[ "${1}" == "--rebuild" ]]; then
191
+ REBUILD_MODE=true
192
+ fi
193
+
194
+ # Check if we're in a project directory
195
+ if [[ ! -f "package.json" && ! -f "requirements.txt" && ! -f "go.mod" && ! -f "Cargo.toml" && ! -f "pom.xml" && ! -f "build.gradle" && ! -f "composer.json" && ! -d ".git" ]]; then
196
+ echo -e "${YELLOW}⚠️ Warning: This doesn't look like a project directory.${NC}"
197
+ echo " No package.json, requirements.txt, or other project files found."
198
+ echo ""
199
+ read -p " Continue anyway? (y/n) " -n 1 -r
200
+ echo
201
+ if [[ ! $REPLY =~ ^[Yy]$ ]]; then
202
+ exit 1
203
+ fi
204
+ fi
205
+
206
+ PROJECT_NAME=$(basename "$PWD")
207
+
208
+ if [[ "$REBUILD_MODE" == true ]]; then
209
+ echo -e "${MAGENTA}🔄 Attaching MDAN with REBUILD mode: ${BOLD}${PROJECT_NAME}${NC}"
210
+ echo ""
211
+ echo -e "${YELLOW}This will prepare MDAN to rewrite the entire project from scratch.${NC}"
212
+ echo ""
213
+ else
214
+ echo -e "${CYAN}🔗 Attaching MDAN to: ${BOLD}${PROJECT_NAME}${NC}"
215
+ echo ""
216
+ fi
217
+
218
+ # Check if .mdan already exists
219
+ if [[ -d ".mdan" ]]; then
220
+ echo -e "${YELLOW}⚠️ .mdan folder already exists.${NC}"
221
+ read -p " Overwrite? (y/n) " -n 1 -r
222
+ echo
223
+ if [[ ! $REPLY =~ ^[Yy]$ ]]; then
224
+ echo " Keeping existing .mdan folder."
225
+ else
226
+ rm -rf .mdan
227
+ fi
228
+ fi
229
+
230
+ # Create .mdan directory structure
231
+ mkdir -p .mdan/agents
232
+ mkdir -p .mdan/artifacts
233
+ mkdir -p .mdan/skills
234
+
235
+ # Copy core files
236
+ cp "${MDAN_DIR}/core/orchestrator.md" .mdan/orchestrator.md
237
+ cp "${MDAN_DIR}/core/universal-envelope.md" .mdan/universal-envelope.md
238
+
239
+ # Copy all agents
240
+ cp "${MDAN_DIR}/agents/"*.md .mdan/agents/
241
+
242
+ # Copy skills if available
243
+ if [[ -d "${MDAN_DIR}/skills" ]]; then
244
+ cp -r "${MDAN_DIR}/skills/"* .mdan/skills/ 2>/dev/null
245
+ fi
246
+
247
+ # Create .cursorrules
248
+ cat "${MDAN_DIR}/core/orchestrator.md" > .cursorrules
249
+ echo "" >> .cursorrules
250
+ echo "## CURSOR INSTRUCTIONS" >> .cursorrules
251
+ echo "Agent files are in .mdan/agents/. Reference them with @file when activating agents." >> .cursorrules
252
+ echo "Skills are in .mdan/skills/. Reference them for extended capabilities." >> .cursorrules
253
+ echo "" >> .cursorrules
254
+
255
+ if [[ "$REBUILD_MODE" == true ]]; then
256
+ echo "## PROJECT CONTEXT" >> .cursorrules
257
+ echo "This is an existing project that will be REWRITTEN FROM SCRATCH." >> .cursorrules
258
+ echo "MDAN must first analyze all features, then rebuild everything." >> .cursorrules
259
+ echo "" >> .cursorrules
260
+ echo "## REBUILD MODE ACTIVE" >> .cursorrules
261
+ echo "1. DISCOVER: Analyze ALL features of existing codebase" >> .cursorrules
262
+ echo "2. DESIGN: Propose NEW modern architecture" >> .cursorrules
263
+ echo "3. BUILD: Rewrite everything from scratch" >> .cursorrules
264
+ echo "4. VERIFY: Full test coverage" >> .cursorrules
265
+ echo "5. SHIP: Complete documentation" >> .cursorrules
266
+ else
267
+ echo "## PROJECT CONTEXT" >> .cursorrules
268
+ echo "This is an existing project. MDAN should analyze the codebase before making changes." >> .cursorrules
269
+ fi
270
+
271
+ # Create .windsurfrules
272
+ cp .cursorrules .windsurfrules
273
+
274
+ # Create .claude/skills for Claude Code
275
+ mkdir -p .claude/skills
276
+ if [[ -d "${MDAN_DIR}/skills" ]]; then
277
+ cp -r "${MDAN_DIR}/skills/"* .claude/skills/ 2>/dev/null
278
+ fi
279
+
280
+ # Create GitHub Copilot instructions
281
+ mkdir -p .github
282
+ cp "${MDAN_DIR}/core/orchestrator.md" .github/copilot-instructions.md
283
+
284
+ # Create MDAN-STATE.json
285
+ if [[ "$REBUILD_MODE" == true ]]; then
286
+ cat > .mdan/MDAN-STATE.json << EOF
287
+ {
288
+ "user": {
289
+ "name": null
290
+ },
291
+ "project": {
292
+ "name": "${PROJECT_NAME}",
293
+ "type": "existing",
294
+ "mode": "REBUILD",
295
+ "profile": "STANDARD",
296
+ "started": "$(date +%Y-%m-%d)",
297
+ "last_updated": "$(date +%Y-%m-%dT%H:%M:%S)"
298
+ },
299
+ "phase": {
300
+ "current": "DISCOVER",
301
+ "status": "analyzing_for_rebuild"
302
+ },
303
+ "features": [],
304
+ "artifacts": {
305
+ "prd": null,
306
+ "architecture": null,
307
+ "ux_spec": null,
308
+ "test_plan": null,
309
+ "security_review": null
310
+ },
311
+ "agents_used": {},
312
+ "notes": "REBUILD MODE: MDAN will analyze existing codebase and rewrite from scratch."
313
+ }
314
+ EOF
315
+ else
316
+ cat > .mdan/MDAN-STATE.json << EOF
317
+ {
318
+ "user": {
319
+ "name": null
320
+ },
321
+ "project": {
322
+ "name": "${PROJECT_NAME}",
323
+ "type": "existing",
324
+ "profile": "STANDARD",
325
+ "started": "$(date +%Y-%m-%d)",
326
+ "last_updated": "$(date +%Y-%m-%dT%H:%M:%S)"
327
+ },
328
+ "phase": {
329
+ "current": "DISCOVER",
330
+ "status": "analyzing_existing_codebase"
331
+ },
332
+ "features": [],
333
+ "artifacts": {
334
+ "prd": null,
335
+ "architecture": null,
336
+ "ux_spec": null,
337
+ "test_plan": null,
338
+ "security_review": null
339
+ },
340
+ "agents_used": {},
341
+ "notes": "MDAN attached to existing project. Start with DISCOVER phase to analyze the codebase."
342
+ }
343
+ EOF
344
+ fi
345
+
346
+ # Create STATUS.md
347
+ if [[ "$REBUILD_MODE" == true ]]; then
348
+ cat > .mdan/STATUS.md << EOF
349
+ # MDAN Project Status — REBUILD MODE
350
+
351
+ **Project:** ${PROJECT_NAME}
352
+ **Started:** $(date +%Y-%m-%d)
353
+ **Mode:** 🔄 REBUILD FROM SCRATCH
354
+ **Current Phase:** 1 — DISCOVER (Analyzing existing codebase)
355
+
356
+ ## 🎯 Objective
357
+ Rewrite the entire project from scratch with a modern architecture.
358
+
359
+ ## Phase Progress
360
+ - [ ] Phase 1: DISCOVER — Analyze ALL features of existing codebase
361
+ - [ ] Phase 2: DESIGN — New modern architecture validated
362
+ - [ ] Phase 3: BUILD — Rewrite everything from scratch
363
+ - [ ] Phase 4: VERIFY — 100% test coverage
364
+ - [ ] Phase 5: SHIP — Complete documentation
365
+
366
+ ## What MDAN Will Do
367
+ 1. **DISCOVER**: Deep analysis of existing code to understand ALL features
368
+ 2. **DESIGN**: Propose a completely new, modern architecture
369
+ 3. **BUILD**: Implement everything fresh (no code reuse)
370
+ 4. **VERIFY**: Write comprehensive tests
371
+ 5. **SHIP**: Generate full documentation
372
+
373
+ ## Commands to Start
374
+ 1. Open this folder in Cursor/Windsurf
375
+ 2. Start with: "MDAN REBUILD: Begin DISCOVER phase. Analyze this entire codebase."
376
+ EOF
377
+ else
378
+ cat > .mdan/STATUS.md << EOF
379
+ # MDAN Project Status
380
+
381
+ **Project:** ${PROJECT_NAME} (existing)
382
+ **Started:** $(date +%Y-%m-%d)
383
+ **Current Phase:** 1 — DISCOVER (Analyzing existing codebase)
384
+
385
+ ## Phase Progress
386
+ - [ ] Phase 1: DISCOVER — Analyze existing codebase & define improvements
387
+ - [ ] Phase 2: DESIGN — Architecture changes validated
388
+ - [ ] Phase 3: BUILD — Features implemented
389
+ - [ ] Phase 4: VERIFY — Tests passing, security reviewed
390
+ - [ ] Phase 5: SHIP — Deployed and documented
391
+
392
+ ## Existing Project Notes
393
+ - MDAN attached on $(date +%Y-%m-%d)
394
+ - Start by analyzing the current codebase structure
395
+ - Identify what needs to be built/improved
396
+
397
+ ## Commands to Start
398
+ 1. Open Claude/Cursor with this project
399
+ 2. Paste .mdan/orchestrator.md as system prompt
400
+ 3. Start with: "MDAN: Analyze this existing project and help me [goal]"
401
+ EOF
402
+ fi
403
+
404
+ echo -e "${GREEN}✅ MDAN attached to ${PROJECT_NAME}!${NC}"
405
+ echo ""
406
+ echo -e " ${BOLD}MDAN files:${NC} .mdan/"
407
+ echo -e " ${BOLD}Agents:${NC} .mdan/agents/"
408
+ echo -e " ${BOLD}Skills:${NC} .mdan/skills/"
409
+ echo -e " ${BOLD}State:${NC} .mdan/MDAN-STATE.json"
410
+ echo ""
411
+
412
+ if [[ "$REBUILD_MODE" == true ]]; then
413
+ echo -e "${MAGENTA}${BOLD}🔄 REBUILD MODE ACTIVATED${NC}"
414
+ echo ""
415
+ echo -e "${YELLOW}MDAN will rewrite the entire project from scratch.${NC}"
416
+ echo ""
417
+ echo " ${BOLD}Next steps:${NC}"
418
+ echo ""
419
+ echo " 1. Open this folder in Cursor/Windsurf"
420
+ echo " 2. Start with this prompt:"
421
+ echo ""
422
+ echo -e " ${CYAN}MDAN REBUILD: Begin DISCOVER phase."
423
+ echo " Analyze this entire codebase and document ALL features."
424
+ echo " Then propose a modern architecture to rebuild from scratch.${NC}"
425
+ else
426
+ echo -e "${YELLOW}Next steps:${NC}"
427
+ echo ""
428
+ echo " ${BOLD}Option 1 — Cursor/Windsurf:${NC}"
429
+ echo " Just open this folder in your IDE and start chatting."
430
+ echo ""
431
+ echo " ${BOLD}Option 2 — Claude (Web) / ChatGPT:${NC}"
432
+ echo " 1. Run ${CYAN}mdan oc${NC} to copy the orchestrator prompt to clipboard"
433
+ echo " 2. Paste as system prompt (or first message)"
434
+ echo " 3. Start with: 'MDAN: Analyze this existing project...'"
435
+ fi
436
+ }
437
+
438
+ # ============================================================
439
+ # INIT
440
+ # ============================================================
441
+
442
+ cmd_init() {
443
+ PROJECT_NAME="${1:-my-project}"
444
+
445
+ echo -e "${CYAN}🚀 Initializing MDAN project: ${BOLD}${PROJECT_NAME}${NC}"
446
+ echo ""
447
+
448
+ # Create .mdan directory structure
449
+ mkdir -p "${PROJECT_NAME}/.mdan/agents"
450
+ mkdir -p "${PROJECT_NAME}/.mdan/artifacts"
451
+ mkdir -p "${PROJECT_NAME}/.mdan/skills"
452
+ mkdir -p "${PROJECT_NAME}/mdan_output"
453
+
454
+ # Copy core files
455
+ cp "${MDAN_DIR}/core/orchestrator.md" "${PROJECT_NAME}/.mdan/orchestrator.md"
456
+ cp "${MDAN_DIR}/core/universal-envelope.md" "${PROJECT_NAME}/.mdan/universal-envelope.md"
457
+
458
+ # Copy all agents
459
+ cp "${MDAN_DIR}/agents/"*.md "${PROJECT_NAME}/.mdan/agents/"
460
+
461
+ # Copy templates
462
+ cp "${MDAN_DIR}/templates/"*.md "${PROJECT_NAME}/mdan_output/"
463
+
464
+ # Copy skills if available
465
+ if [[ -d "${MDAN_DIR}/skills" ]]; then
466
+ cp -r "${MDAN_DIR}/skills/"* "${PROJECT_NAME}/.mdan/skills/" 2>/dev/null
467
+ fi
468
+
469
+ # Create .cursorrules
470
+ cat "${MDAN_DIR}/core/orchestrator.md" > "${PROJECT_NAME}/.cursorrules"
471
+ echo "" >> "${PROJECT_NAME}/.cursorrules"
472
+ echo "## CURSOR INSTRUCTIONS" >> "${PROJECT_NAME}/.cursorrules"
473
+ echo "Agent files are in .mdan/agents/. Reference them with @file when activating agents." >> "${PROJECT_NAME}/.cursorrules"
474
+ echo "Skills are in .mdan/skills/. Reference them for extended capabilities." >> "${PROJECT_NAME}/.cursorrules"
475
+
476
+ # Create .windsurfrules
477
+ cp "${PROJECT_NAME}/.cursorrules" "${PROJECT_NAME}/.windsurfrules"
478
+
479
+ # Create .claude/skills for Claude Code
480
+ mkdir -p "${PROJECT_NAME}/.claude/skills"
481
+ if [[ -d "${MDAN_DIR}/skills" ]]; then
482
+ cp -r "${MDAN_DIR}/skills/"* "${PROJECT_NAME}/.claude/skills/" 2>/dev/null
483
+ fi
484
+
485
+ # Create GitHub Copilot instructions
486
+ mkdir -p "${PROJECT_NAME}/.github"
487
+ cp "${MDAN_DIR}/core/orchestrator.md" "${PROJECT_NAME}/.github/copilot-instructions.md"
488
+
489
+ # Create STATUS.md
490
+ cat > "${PROJECT_NAME}/.mdan/STATUS.md" << EOF
491
+ # MDAN Project Status
492
+
493
+ **Project:** ${PROJECT_NAME}
494
+ **Started:** $(date +%Y-%m-%d)
495
+ **Current Phase:** 1 — DISCOVER
496
+
497
+ ## Phase Progress
498
+ - [ ] Phase 1: DISCOVER — PRD validated
499
+ - [ ] Phase 2: DESIGN — Architecture + UX validated
500
+ - [ ] Phase 3: BUILD — All MVP features implemented
501
+ - [ ] Phase 4: VERIFY — All tests passing, security reviewed
502
+ - [ ] Phase 5: SHIP — Deployed and documented
503
+
504
+ ## Notes
505
+ EOF
506
+
507
+ # Create README
508
+ cat > "${PROJECT_NAME}/README.md" << EOF
509
+ # ${PROJECT_NAME}
510
+
511
+ > *Project initialized with [MDAN](https://github.com/khalilbenaz/MDAN)*
512
+
513
+ ## Status
514
+ Phase 1: DISCOVER — In progress
515
+
516
+ ## Getting Started
517
+ See \`mdan_output/\` for project documentation and artifacts as they evolve.
518
+ EOF
519
+
520
+ echo -e "${GREEN}✅ MDAN project initialized successfully!${NC}"
521
+ echo ""
522
+ echo -e " ${BOLD}Project:${NC} ${PROJECT_NAME}/"
523
+ echo -e " ${BOLD}MDAN files:${NC} ${PROJECT_NAME}/.mdan/"
524
+ echo -e " ${BOLD}Templates:${NC} ${PROJECT_NAME}/mdan_output/"
525
+ echo -e " ${BOLD}Skills:${NC} ${PROJECT_NAME}/.mdan/skills/"
526
+ echo ""
527
+ echo -e "${YELLOW}Next steps:${NC}"
528
+ echo " 1. Open your chosen LLM"
529
+ echo " 2. Paste .mdan/orchestrator.md as your system prompt"
530
+ echo " 3. Start with: 'MDAN: I want to build ${PROJECT_NAME}'"
531
+ echo ""
532
+ echo -e " Or for Cursor/Windsurf: open the ${PROJECT_NAME}/ folder — .cursorrules is ready"
533
+ }
534
+
535
+ # ============================================================
536
+ # PHASE
537
+ # ============================================================
538
+
539
+ cmd_phase() {
540
+ PHASE="${1}"
541
+ ACTION="${2}"
542
+
543
+ FILE=""
544
+ NAME=""
545
+ case "${PHASE}" in
546
+ 1|discover)
547
+ FILE="01-discover.md"
548
+ NAME="DISCOVER"
549
+ ;;
550
+ 2|design)
551
+ FILE="02-design.md"
552
+ NAME="DESIGN"
553
+ ;;
554
+ 3|build)
555
+ FILE="03-build.md"
556
+ NAME="BUILD"
557
+ ;;
558
+ 4|verify)
559
+ FILE="04-verify.md"
560
+ NAME="VERIFY"
561
+ ;;
562
+ 5|ship)
563
+ FILE="05-ship.md"
564
+ NAME="SHIP"
565
+ ;;
566
+ *)
567
+ echo -e "${RED}Unknown phase: ${PHASE}${NC}"
568
+ echo "Available phases: 1 (discover), 2 (design), 3 (build), 4 (verify), 5 (ship)"
569
+ return 1
570
+ ;;
571
+ esac
572
+
573
+ if [[ -f "${MDAN_DIR}/phases/${FILE}" ]]; then
574
+ if [[ "${ACTION}" == "copy" || "${ACTION}" == "-c" ]]; then
575
+ CONTENT=$(cat "${MDAN_DIR}/phases/${FILE}")
576
+ if command -v pbcopy &> /dev/null; then
577
+ echo "$CONTENT" | pbcopy
578
+ echo -e "${GREEN}✅ Phase ${NAME} prompt copied to clipboard!${NC}"
579
+ echo " Paste it into your LLM to start the phase."
580
+ elif command -v xclip &> /dev/null; then
581
+ echo "$CONTENT" | xclip -selection clipboard
582
+ echo -e "${GREEN}✅ Phase ${NAME} prompt copied to clipboard!${NC}"
583
+ echo " Paste it into your LLM to start the phase."
584
+ elif command -v wl-copy &> /dev/null; then
585
+ echo "$CONTENT" | wl-copy
586
+ echo -e "${GREEN}✅ Phase ${NAME} prompt copied to clipboard!${NC}"
587
+ echo " Paste it into your LLM to start the phase."
588
+ else
589
+ cat "${MDAN_DIR}/phases/${FILE}"
590
+ echo -e "\n${YELLOW}⚠️ Could not copy automatically. Please copy the text above.${NC}"
591
+ fi
592
+ else
593
+ echo -e "${CYAN}${BOLD}Phase ${NAME}${NC}"
594
+ cat "${MDAN_DIR}/phases/${FILE}"
595
+ echo ""
596
+ echo -e "${YELLOW}Tip: Run '${CYAN}mdan phase ${PHASE} copy${YELLOW}' to copy this content to clipboard.${NC}"
597
+ fi
598
+ else
599
+ echo -e "${RED}Phase file not found: ${FILE}${NC}"
600
+ fi
601
+ }
602
+
603
+ # ============================================================
604
+ # AGENT
605
+ # ============================================================
606
+
607
+ cmd_agent() {
608
+ AGENT="${1}"
609
+ AGENT_FILE="${MDAN_DIR}/agents/${AGENT}.md"
610
+
611
+ if [[ -f "${AGENT_FILE}" ]]; then
612
+ cat "${AGENT_FILE}"
613
+ else
614
+ echo -e "${RED}Unknown agent: ${AGENT}${NC}"
615
+ echo "Available agents: product, architect, ux, dev, test, security, devops, doc"
616
+ fi
617
+ }
618
+
619
+ # ============================================================
620
+ # TEMPLATE
621
+ # ============================================================
622
+
623
+ cmd_template() {
624
+ TEMPLATE="${1}"
625
+ TEMPLATE_FILE="${MDAN_DIR}/templates/${TEMPLATE}.md"
626
+
627
+ if [[ -f "${TEMPLATE_FILE}" ]]; then
628
+ cat "${TEMPLATE_FILE}"
629
+ else
630
+ echo -e "${RED}Template not found: ${TEMPLATE}${NC}"
631
+ echo "Available templates:"
632
+ ls "${MDAN_DIR}/templates/" | sed 's/.md//'
633
+ fi
634
+ }
635
+
636
+ # ============================================================
637
+ # PROMPT (LLM setup)
638
+ # ============================================================
639
+
640
+ cmd_prompt() {
641
+ LLM="${1}"
642
+ INTEGRATION_FILE="${MDAN_DIR}/integrations/${LLM}.md"
643
+
644
+ if [[ -f "${INTEGRATION_FILE}" ]]; then
645
+ cat "${INTEGRATION_FILE}"
646
+ else
647
+ echo -e "${RED}Integration not found: ${LLM}${NC}"
648
+ echo "Available integrations:"
649
+ ls "${MDAN_DIR}/integrations/" | sed 's/.md//'
650
+ fi
651
+ }
652
+
653
+ # ============================================================
654
+ # STATUS
655
+ # ============================================================
656
+
657
+ # ============================================================n# OC (Orchestrator)n# ============================================================nncmd_oc() {n ORCH_FILE=".mdan/orchestrator.md"n if [[ ! -f "$ORCH_FILE" ]]; thenn ORCH_FILE="${MDAN_DIR}/core/orchestrator.md"n fin n if [[ -f "$ORCH_FILE" ]]; thenn if command -v pbcopy &> /dev/null; thenn cat "$ORCH_FILE" | pbcopyn echo -e "${GREEN}✅ Orchestrator prompt copied to clipboard!${NC}"n echo " Paste it into Claude, ChatGPT, or your favorite LLM."n elif command -v xclip &> /dev/null; thenn cat "$ORCH_FILE" | xclip -selection clipboardn echo -e "${GREEN}✅ Orchestrator prompt copied to clipboard!${NC}"n echo " Paste it into Claude, ChatGPT, or your favorite LLM."n elif command -v wl-copy &> /dev/null; thenn cat "$ORCH_FILE" | wl-copyn echo -e "${GREEN}✅ Orchestrator prompt copied to clipboard!${NC}"n echo " Paste it into Claude, ChatGPT, or your favorite LLM."n elsen cat "$ORCH_FILE"n echo -e "\n${YELLOW}⚠️ Could not copy to clipboard automatically. Please copy the text above.${NC}"n fin elsen echo -e "${RED}Orchestrator file not found.${NC}"n fin}nn
658
+ cmd_status() {
659
+ STATUS_FILE=".mdan/STATUS.md"
660
+ if [[ -f "${STATUS_FILE}" ]]; then
661
+ cat "${STATUS_FILE}"
662
+ else
663
+ echo -e "${YELLOW}No MDAN project found in current directory.${NC}"
664
+ echo ""
665
+ echo " To create a new project: mdan init [project-name]"
666
+ echo " To add MDAN to existing project: mdan attach"
667
+ echo " To rebuild existing project: mdan attach --rebuild"
668
+ fi
669
+ }
670
+
671
+ # ============================================================
672
+ # LIST
673
+ # ============================================================
674
+
675
+ cmd_list() {
676
+ echo -e "${BOLD}MDAN v${VERSION}${NC}"
677
+ echo ""
678
+ echo -e "${CYAN}Phases:${NC}"
679
+ ls "${MDAN_DIR}/phases/" | sed 's/.md//' | sed 's/^/ /'
680
+ echo ""
681
+ echo -e "${CYAN}Agents:${NC}"
682
+ ls "${MDAN_DIR}/agents/" | grep -v "REGISTRY" | sed 's/.md//' | sed 's/^/ /'
683
+ echo ""
684
+ echo -e "${CYAN}Templates:${NC}"
685
+ ls "${MDAN_DIR}/templates/" | sed 's/.md//' | sed 's/^/ /'
686
+ echo ""
687
+ echo -e "${CYAN}Integrations:${NC}"
688
+ ls "${MDAN_DIR}/integrations/" | sed 's/.md//' | sed 's/^/ /'
689
+ echo ""
690
+ if [[ -d "${MDAN_DIR}/skills" ]]; then
691
+ echo -e "${CYAN}Skills:${NC}"
692
+ ls "${MDAN_DIR}/skills/" | sed 's/^/ /'
693
+ fi
694
+ }
695
+
696
+ # ============================================================
697
+ # MAIN
698
+ # ============================================================
699
+
700
+ COMMAND="${1}"
701
+ shift
702
+
703
+ case "${COMMAND}" in
704
+ learn) cmd_learn "$@" ;;
705
+ skills) cmd_skills ;;
706
+ skill) cmd_skill_add "$@" ;;
707
+ attach) cmd_attach "$@" ;;
708
+ init) cmd_init "$@" ;;
709
+ phase) cmd_phase "$@" ;;
710
+ agent) cmd_agent "$@" ;;
711
+ template) cmd_template "$@" ;;
712
+ prompt) cmd_prompt "$@" ;;
713
+ oc) cmd_oc ;;
714
+
715
+ status) cmd_status ;;
716
+ list) cmd_list ;;
717
+ version) echo "MDAN v${VERSION}" ;;
718
+ help|--help|-h|"") show_help ;;
719
+ *)
720
+ echo -e "${RED}Unknown command: ${COMMAND}${NC}"
721
+ echo "Run 'mdan help' for usage"
722
+ exit 1
723
+ ;;
724
+ esac