@iservu-inc/adf-cli 0.4.15 → 0.4.25

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.
@@ -442,6 +442,407 @@ export function registerTools(context: vscode.ExtensionContext) {
442
442
 
443
443
  ---
444
444
 
445
+ ## 4. Custom Agent/Persona Configuration
446
+
447
+ ### Overview
448
+
449
+ All major AI coding assistants support custom agents/personas that can be triggered with specific commands or mentions. This allows you to create specialized AI behaviors for different development tasks (e.g., PM, Architect, Developer, QA).
450
+
451
+ **Key Pattern:** All agents share the same YAML configuration block but are activated differently per IDE:
452
+ - **Windsurf:** `/.workflows/{agent}.md` - Auto-execution modes
453
+ - **Cursor:** `@{agent}` via `.cursor/rules/{folder}/{agent}.mdc`
454
+ - **GitHub Copilot:** Chat modes via `.github/chatmodes/{agent}.chatmode.md`
455
+ - **Claude Code:** `/{agent}` via `.claude/commands/{folder}/agents/{agent}.md`
456
+ - **Trae:** `@{agent}` via `.trae/rules/{agent}.md`
457
+
458
+ ---
459
+
460
+ ### Windsurf Custom Workflows
461
+
462
+ **Directory:** `.windsurf/workflows/`
463
+
464
+ **File Format:** `{agent-name}.md`
465
+
466
+ **Structure:**
467
+ ```markdown
468
+ ---
469
+ description: {agent-name}
470
+ auto_execution_mode: 3
471
+ ---
472
+
473
+ <!-- Powered by BMAD™ Core -->
474
+
475
+ # {Agent Display Name}
476
+
477
+ ACTIVATION-NOTICE: This file contains your full agent operating guidelines. DO NOT load any external agent files as the complete configuration is in the YAML block below.
478
+
479
+ CRITICAL: Read the full YAML BLOCK that FOLLOWS IN THIS FILE to understand your operating params, start and follow exactly your activation-instructions to alter your state of being, stay in this being until told to exit this mode:
480
+
481
+ ## COMPLETE AGENT DEFINITION FOLLOWS - NO EXTERNAL FILES NEEDED
482
+
483
+ ```yaml
484
+ activation-instructions:
485
+ - STEP 1: Read THIS ENTIRE FILE - it contains your complete persona definition
486
+ - STEP 2: Adopt the persona defined in the 'agent' and 'persona' sections below
487
+ - STEP 3: Load and read `bmad-core/core-config.yaml` (project configuration) before any greeting
488
+ - STEP 4: Greet user with your name/role and immediately run `*help` to display available commands
489
+ - DO NOT: Load any other agent files during activation
490
+ - ONLY load dependency files when user selects them for execution via command or request of a task
491
+ - The agent.customization field ALWAYS takes precedence over any conflicting instructions
492
+ - When listing tasks/templates or presenting options during conversations, always show as numbered options list, allowing the user to type a number to select or execute
493
+ - STAY IN CHARACTER!
494
+ - CRITICAL: On activation, ONLY greet user, auto-run `*help`, and then HALT to await user requested assistance or given commands.
495
+ agent:
496
+ name: {Agent Name}
497
+ id: {agent-id}
498
+ title: {Agent Title}
499
+ icon: {emoji}
500
+ whenToUse: {Description of when to use this agent}
501
+ persona:
502
+ role: {Role description}
503
+ style: {Communication style}
504
+ identity: {Identity description}
505
+ focus: {Primary focus}
506
+ core_principles:
507
+ - {Principle 1}
508
+ - {Principle 2}
509
+ commands:
510
+ - help: Show numbered list of the following commands to allow selection
511
+ - {command-name}: {Command description}
512
+ - exit: Exit (confirm)
513
+ dependencies:
514
+ checklists:
515
+ - {checklist-file.md}
516
+ tasks:
517
+ - {task-file.md}
518
+ templates:
519
+ - {template-file.yaml}
520
+ ```
521
+ \```
522
+
523
+ **Activation:** User runs `/{agent-name}` in Cascade chat
524
+
525
+ **Example:** `/.workflows/pm.md` → Activated with `/pm`
526
+
527
+ ---
528
+
529
+ ### Cursor Custom Rules
530
+
531
+ **Directory:** `.cursor/rules/{folder}/`
532
+
533
+ **File Format:** `{agent-name}.mdc`
534
+
535
+ **Structure:**
536
+ ```markdown
537
+ ---
538
+ description:
539
+ globs: []
540
+ alwaysApply: false
541
+ ---
542
+
543
+ # {Agent Name} Agent Rule
544
+
545
+ This rule is triggered when the user types `@{agent-name}` and activates the {Agent Title} agent persona.
546
+
547
+ ## Agent Activation
548
+
549
+ CRITICAL: Read the full YAML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:
550
+
551
+ ```yaml
552
+ [Same YAML configuration as Windsurf]
553
+ ```
554
+ \```
555
+
556
+ ## File Reference
557
+
558
+ The complete agent definition is available in [.bmad-core/agents/{agent}.md](mdc:.bmad-core/agents/{agent}.md).
559
+
560
+ ## Usage
561
+
562
+ When the user types `@{agent-name}`, activate this {Agent Title} persona and follow all instructions defined in the YAML configuration above.
563
+ ```
564
+
565
+ **Activation:** User types `@{agent-name}` in Composer/Chat
566
+
567
+ **Example:** `.cursor/rules/bmad/pm.mdc` → Activated with `@pm`
568
+
569
+ ---
570
+
571
+ ### GitHub Copilot Chat Modes
572
+
573
+ **Directory:** `.github/chatmodes/`
574
+
575
+ **File Format:** `{agent-name}.chatmode.md`
576
+
577
+ **Structure:**
578
+ ```markdown
579
+ ---
580
+ description: "Activates the {Agent Title} agent persona."
581
+ tools: ['changes', 'codebase', 'fetch', 'findTestFiles', 'githubRepo', 'problems', 'usages', 'editFiles', 'runCommands', 'runTasks', 'runTests', 'search', 'searchResults', 'terminalLastCommand', 'terminalSelection', 'testFailure']
582
+ ---
583
+
584
+ <!-- Powered by BMAD™ Core -->
585
+
586
+ # {agent-name}
587
+
588
+ ACTIVATION-NOTICE: This file contains your full agent operating guidelines. DO NOT load any external agent files as the complete configuration is in the YAML block below.
589
+
590
+ CRITICAL: Read the full YAML BLOCK that FOLLOWS IN THIS FILE to understand your operating params, start and follow exactly your activation-instructions to alter your state of being, stay in this being until told to exit this mode:
591
+
592
+ ## COMPLETE AGENT DEFINITION FOLLOWS - NO EXTERNAL FILES NEEDED
593
+
594
+ ```yaml
595
+ [Same YAML configuration as Windsurf]
596
+ ```
597
+ \```
598
+ ```
599
+
600
+ **Activation:** Copilot detects `.chatmode.md` files and presents them as selectable chat modes
601
+
602
+ **Example:** `.github/chatmodes/pm.chatmode.md` → Selectable chat mode in Copilot
603
+
604
+ ---
605
+
606
+ ### Claude Code Slash Commands
607
+
608
+ **Directory:** `.claude/commands/{folder}/agents/`
609
+
610
+ **File Format:** `{agent-name}.md`
611
+
612
+ **Structure:**
613
+ ```markdown
614
+ # /{agent-name} Command
615
+
616
+ When this command is used, adopt the following agent persona:
617
+
618
+ <!-- Powered by BMAD™ Core -->
619
+
620
+ # {agent-name}
621
+
622
+ ACTIVATION-NOTICE: This file contains your full agent operating guidelines. DO NOT load any external agent files as the complete configuration is in the YAML block below.
623
+
624
+ CRITICAL: Read the full YAML BLOCK that FOLLOWS IN THIS FILE to understand your operating params, start and follow exactly your activation-instructions to alter your state of being, stay in this being until told to exit this mode:
625
+
626
+ ## COMPLETE AGENT DEFINITION FOLLOWS - NO EXTERNAL FILES NEEDED
627
+
628
+ ```yaml
629
+ [Same YAML configuration as Windsurf]
630
+ ```
631
+ \```
632
+ ```
633
+
634
+ **Activation:** User runs `/{agent-name}` in Claude Code chat
635
+
636
+ **Example:** `.claude/commands/BMad/agents/pm.md` → Activated with `/pm`
637
+
638
+ **Settings File:** `.claude/settings.local.json` can reference command directories
639
+
640
+ ---
641
+
642
+ ### Trae Custom Rules
643
+
644
+ **Directory:** `.trae/rules/`
645
+
646
+ **File Format:** `{agent-name}.md`
647
+
648
+ **Structure:**
649
+ ```markdown
650
+ # {Agent Name} Agent Rule
651
+
652
+ This rule is triggered when the user types `@{agent-name}` and activates the {Agent Title} agent persona.
653
+
654
+ ## Agent Activation
655
+
656
+ CRITICAL: Read the full YAML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:
657
+
658
+ ```yaml
659
+ [Same YAML configuration as Windsurf]
660
+ ```
661
+ \```
662
+
663
+ ## File Reference
664
+
665
+ The complete agent definition is available in [.bmad-core/agents/{agent}.md](.bmad-core/agents/{agent}.md).
666
+
667
+ ## Usage
668
+
669
+ When the user types `@{agent-name}`, activate this {Agent Title} persona and follow all instructions defined in the YAML configuration above.
670
+ ```
671
+
672
+ **Activation:** User types `@{agent-name}` in Trae chat
673
+
674
+ **Example:** `.trae/rules/pm.md` → Activated with `@pm`
675
+
676
+ ---
677
+
678
+ ### VSCode Configuration
679
+
680
+ **Directory:** `.vscode/`
681
+
682
+ **File Format:** `settings.json`
683
+
684
+ **Structure:**
685
+ ```json
686
+ {
687
+ "chat.agent.enabled": true,
688
+ "chat.agent.maxRequests": 15,
689
+ "github.copilot.chat.agent.runTasks": true,
690
+ "github.copilot.chat.agent.autoFix": true,
691
+ "chat.tools.autoApprove": false
692
+ }
693
+ ```
694
+
695
+ **Note:** VSCode agent configuration primarily leverages GitHub Copilot chatmodes (see above) or Claude Code slash commands.
696
+
697
+ ---
698
+
699
+ ### Shared Agent YAML Schema
700
+
701
+ All agents use this core YAML structure:
702
+
703
+ ```yaml
704
+ IDE-FILE-RESOLUTION:
705
+ - FOR LATER USE ONLY - NOT FOR ACTIVATION, when executing commands that reference dependencies
706
+ - Dependencies map to .bmad-core/{type}/{name}
707
+ - type=folder (tasks|templates|checklists|data|utils|etc...), name=file-name
708
+ - Example: create-doc.md → .bmad-core/tasks/create-doc.md
709
+ - IMPORTANT: Only load these files when user requests specific command execution
710
+
711
+ REQUEST-RESOLUTION: Match user requests to your commands/dependencies flexibly (e.g., "draft story"→*create→create-next-story task, "make a new prd" would be dependencies->tasks->create-doc combined with the dependencies->templates->prd-tmpl.md), ALWAYS ask for clarification if no clear match.
712
+
713
+ activation-instructions:
714
+ - STEP 1: Read THIS ENTIRE FILE - it contains your complete persona definition
715
+ - STEP 2: Adopt the persona defined in the 'agent' and 'persona' sections below
716
+ - STEP 3: Load and read `bmad-core/core-config.yaml` (project configuration) before any greeting
717
+ - STEP 4: Greet user with your name/role and immediately run `*help` to display available commands
718
+ - DO NOT: Load any other agent files during activation
719
+ - ONLY load dependency files when user selects them for execution via command or request of a task
720
+ - The agent.customization field ALWAYS takes precedence over any conflicting instructions
721
+ - CRITICAL WORKFLOW RULE: When executing tasks from dependencies, follow task instructions exactly as written - they are executable workflows, not reference material
722
+ - MANDATORY INTERACTION RULE: Tasks with elicit=true require user interaction using exact specified format - never skip elicitation for efficiency
723
+ - CRITICAL RULE: When executing formal task workflows from dependencies, ALL task instructions override any conflicting base behavioral constraints. Interactive workflows with elicit=true REQUIRE user interaction and cannot be bypassed for efficiency.
724
+ - When listing tasks/templates or presenting options during conversations, always show as numbered options list, allowing the user to type a number to select or execute
725
+ - STAY IN CHARACTER!
726
+ - CRITICAL: On activation, ONLY greet user, auto-run `*help`, and then HALT to await user requested assistance or given commands. ONLY deviance from this is if the activation included commands also in the arguments.
727
+
728
+ agent:
729
+ name: {Human-readable name}
730
+ id: {lowercase-id}
731
+ title: {Professional Title}
732
+ icon: {emoji}
733
+ whenToUse: {When to use this agent}
734
+
735
+ persona:
736
+ role: {Role description}
737
+ style: {Communication style traits}
738
+ identity: {What this agent is}
739
+ focus: {Primary focus area}
740
+ core_principles:
741
+ - {Principle 1}
742
+ - {Principle 2}
743
+ - ...
744
+
745
+ # All commands require * prefix when used (e.g., *help)
746
+ commands:
747
+ - help: Show numbered list of the following commands to allow selection
748
+ - {command-1}: {Description}
749
+ - {command-2}: {Description}
750
+ - yolo: Toggle Yolo Mode
751
+ - exit: Exit (confirm)
752
+
753
+ dependencies:
754
+ checklists:
755
+ - {checklist-file.md}
756
+ data:
757
+ - {data-file.md}
758
+ tasks:
759
+ - {task-file.md}
760
+ templates:
761
+ - {template-file.yaml}
762
+ utils:
763
+ - {util-file.md}
764
+ ```
765
+
766
+ **Key Principles:**
767
+ 1. **Self-contained:** All agent config in YAML block, no external loads on activation
768
+ 2. **Lazy loading:** Dependencies loaded only when commands execute
769
+ 3. **Consistent interface:** All agents use `*help` and numbered menus
770
+ 4. **Task execution:** Tasks from dependencies are executable workflows, not reference
771
+ 5. **Interactive modes:** Tasks with `elicit=true` require user interaction
772
+
773
+ ---
774
+
775
+ ### Agent Activation Comparison
776
+
777
+ | IDE | Directory | File Extension | Activation | Frontmatter |
778
+ |-----|-----------|----------------|------------|-------------|
779
+ | **Windsurf** | `.windsurf/workflows/` | `.md` | `/{agent}` | YAML: `description`, `auto_execution_mode` |
780
+ | **Cursor** | `.cursor/rules/{folder}/` | `.mdc` | `@{agent}` | YAML: `description`, `globs`, `alwaysApply` |
781
+ | **GitHub Copilot** | `.github/chatmodes/` | `.chatmode.md` | Chat mode selector | YAML: `description`, `tools` array |
782
+ | **Claude Code** | `.claude/commands/{folder}/agents/` | `.md` | `/{agent}` | None (markdown header) |
783
+ | **Trae** | `.trae/rules/` | `.md` | `@{agent}` | None (markdown header) |
784
+ | **VSCode** | Uses Copilot or Claude | - | - | - |
785
+
786
+ ---
787
+
788
+ ### Creating New Custom Agents
789
+
790
+ **Step 1: Define Agent Properties**
791
+ ```yaml
792
+ agent:
793
+ name: "Sarah" # Human name
794
+ id: "qa" # Lowercase ID for activation
795
+ title: "QA Engineer" # Professional title
796
+ icon: "🔍" # Emoji icon
797
+ whenToUse: "Use for testing, quality assurance, and bug validation"
798
+ ```
799
+
800
+ **Step 2: Define Persona**
801
+ ```yaml
802
+ persona:
803
+ role: "Quality Assurance Specialist & Test Engineer"
804
+ style: "Meticulous, detail-oriented, systematic, thorough"
805
+ identity: "QA engineer focused on comprehensive testing and quality validation"
806
+ focus: "Creating test plans, writing test cases, and validating requirements"
807
+ core_principles:
808
+ - Test early and often
809
+ - Validate against requirements
810
+ - Document all defects clearly
811
+ - Focus on user experience
812
+ - Automate repetitive tests
813
+ ```
814
+
815
+ **Step 3: Define Commands**
816
+ ```yaml
817
+ commands:
818
+ - help: Show numbered list of available commands
819
+ - create-test-plan: Generate test plan from requirements
820
+ - write-test-cases: Create test cases for feature
821
+ - validate-feature: Validate implementation against acceptance criteria
822
+ - report-bug: Create detailed bug report
823
+ - exit: Exit QA agent mode
824
+ ```
825
+
826
+ **Step 4: Define Dependencies**
827
+ ```yaml
828
+ dependencies:
829
+ checklists:
830
+ - qa-checklist.md
831
+ - regression-checklist.md
832
+ tasks:
833
+ - create-test-plan.md
834
+ - validate-requirements.md
835
+ templates:
836
+ - test-plan-tmpl.yaml
837
+ - bug-report-tmpl.yaml
838
+ ```
839
+
840
+ **Step 5: Generate for All IDEs**
841
+
842
+ Use adf-cli generators (once implemented) or manually create files for each IDE using the patterns above.
843
+
844
+ ---
845
+
445
846
  ## Output Generation Strategy
446
847
 
447
848
  ### Per Framework
package/CHANGELOG.md CHANGED
@@ -5,6 +5,52 @@ All notable changes to `@iservu-inc/adf-cli` will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.4.25] - 2025-10-04
9
+
10
+ ### 🔧 UX Improvements
11
+
12
+ **Fixed: AI Configuration Timing**
13
+ - **Problem:** AI configuration was happening after workflow selection questions (team size, etc.)
14
+ - **Solution:** Moved AI configuration to init.js to execute immediately after project type detection
15
+ - **New Flow:**
16
+ 1. Project type detection
17
+ 2. **AI Provider configuration** (happens here now)
18
+ 3. Workflow selection (team size questions)
19
+ 4. Interview questions
20
+ - **Impact:** AI configuration now clearly appears FIRST before any workflow questions
21
+ - **Note:** This supersedes the v0.4.15 approach of configuring AI in interviewer.js
22
+
23
+ **Technical Details:**
24
+ - `init.js:88-90`: Added AI configuration call before workflow selection
25
+ - `init.js:114`: Pass aiConfig to Interviewer constructor
26
+ - `interviewer.js`: AI config block skipped when aiConfig already provided
27
+ - When AI already configured via `adf config`, shows simple confirmation message
28
+ - All 120 tests passing
29
+
30
+ ### 📚 Documentation
31
+
32
+ **Added: Comprehensive Custom Agent/Persona Documentation**
33
+ - **New Section:** "Custom Agent/Persona Configuration" in IDE-CUSTOMIZATIONS.md
34
+ - **Coverage:** Complete documentation for all major AI coding assistants
35
+ - Windsurf workflows (`.windsurf/workflows/`)
36
+ - Cursor rules (`.cursor/rules/`)
37
+ - GitHub Copilot chatmodes (`.github/chatmodes/`)
38
+ - Claude Code commands (`.claude/commands/`)
39
+ - Trae rules (`.trae/rules/`)
40
+ - VSCode settings (`.vscode/`)
41
+ - **Key Insights:**
42
+ - All IDEs share same YAML configuration block
43
+ - Only wrapper format and activation method differ per IDE
44
+ - Write-once, deploy-everywhere pattern documented
45
+ - **Includes:**
46
+ - Activation comparison table
47
+ - Shared agent YAML schema
48
+ - Step-by-step guide for creating new agents
49
+ - Real-world examples from BMAD project
50
+
51
+ **File Updated:**
52
+ - `.project/docs/tool-integrations/IDE-CUSTOMIZATIONS.md` - Added comprehensive Section 4
53
+
8
54
  ## [0.4.15] - 2025-10-04
9
55
 
10
56
  ### 🐛 Bug Fixes & Enhancements
@@ -85,6 +85,10 @@ async function init(options) {
85
85
  const projectType = await detectProjectType(cwd);
86
86
  spinner.succeed(`Project type: ${chalk.green(projectType.type)}`);
87
87
 
88
+ // Configure AI provider BEFORE workflow selection
89
+ console.log('');
90
+ const aiConfig = await configureAIProvider(cwd);
91
+
88
92
  // Determine workflow/framework
89
93
  let workflow;
90
94
 
@@ -105,9 +109,9 @@ async function init(options) {
105
109
  // Create .adf directory
106
110
  await fs.ensureDir(adfDir);
107
111
 
108
- // AI will be configured as first block in the interview
112
+ // AI already configured above - pass to interviewer
109
113
  // Start interview
110
- const interviewer = new Interviewer(workflow, cwd, null, null);
114
+ const interviewer = new Interviewer(workflow, cwd, null, aiConfig);
111
115
  const sessionPath = await interviewer.start();
112
116
 
113
117
  // Show completion message
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iservu-inc/adf-cli",
3
- "version": "0.4.15",
3
+ "version": "0.4.25",
4
4
  "description": "CLI tool for AgentDevFramework - AI-assisted development framework with multi-provider AI support",
5
5
  "main": "index.js",
6
6
  "bin": {