agileflow 3.1.0 → 3.2.1

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.
Files changed (106) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +57 -85
  3. package/lib/dashboard-automations.js +130 -0
  4. package/lib/dashboard-git.js +254 -0
  5. package/lib/dashboard-inbox.js +64 -0
  6. package/lib/dashboard-protocol.js +1 -0
  7. package/lib/dashboard-server.js +114 -924
  8. package/lib/dashboard-session.js +136 -0
  9. package/lib/dashboard-status.js +72 -0
  10. package/lib/dashboard-terminal.js +354 -0
  11. package/lib/dashboard-websocket.js +88 -0
  12. package/lib/drivers/codex-driver.ts +4 -4
  13. package/lib/logger.js +106 -0
  14. package/package.json +4 -2
  15. package/scripts/agileflow-configure.js +2 -2
  16. package/scripts/agileflow-welcome.js +409 -434
  17. package/scripts/claude-tmux.sh +80 -2
  18. package/scripts/context-loader.js +4 -9
  19. package/scripts/lib/browser-qa-evidence.js +409 -0
  20. package/scripts/lib/browser-qa-status.js +192 -0
  21. package/scripts/lib/command-prereqs.js +280 -0
  22. package/scripts/lib/configure-detect.js +92 -2
  23. package/scripts/lib/configure-features.js +295 -1
  24. package/scripts/lib/context-formatter.js +468 -233
  25. package/scripts/lib/context-loader.js +27 -15
  26. package/scripts/lib/damage-control-utils.js +8 -1
  27. package/scripts/lib/feature-catalog.js +321 -0
  28. package/scripts/lib/portable-tasks-cli.js +274 -0
  29. package/scripts/lib/portable-tasks.js +479 -0
  30. package/scripts/lib/signal-detectors.js +1 -1
  31. package/scripts/lib/team-events.js +86 -1
  32. package/scripts/obtain-context.js +28 -4
  33. package/scripts/smart-detect.js +17 -0
  34. package/scripts/strip-ai-attribution.js +63 -0
  35. package/scripts/team-manager.js +7 -2
  36. package/scripts/welcome-deferred.js +437 -0
  37. package/src/core/agents/browser-qa.md +328 -0
  38. package/src/core/agents/perf-analyzer-assets.md +174 -0
  39. package/src/core/agents/perf-analyzer-bundle.md +165 -0
  40. package/src/core/agents/perf-analyzer-caching.md +160 -0
  41. package/src/core/agents/perf-analyzer-compute.md +165 -0
  42. package/src/core/agents/perf-analyzer-memory.md +182 -0
  43. package/src/core/agents/perf-analyzer-network.md +157 -0
  44. package/src/core/agents/perf-analyzer-queries.md +155 -0
  45. package/src/core/agents/perf-analyzer-rendering.md +156 -0
  46. package/src/core/agents/perf-consensus.md +280 -0
  47. package/src/core/agents/security-analyzer-api.md +199 -0
  48. package/src/core/agents/security-analyzer-auth.md +160 -0
  49. package/src/core/agents/security-analyzer-authz.md +168 -0
  50. package/src/core/agents/security-analyzer-deps.md +147 -0
  51. package/src/core/agents/security-analyzer-infra.md +176 -0
  52. package/src/core/agents/security-analyzer-injection.md +148 -0
  53. package/src/core/agents/security-analyzer-input.md +191 -0
  54. package/src/core/agents/security-analyzer-secrets.md +175 -0
  55. package/src/core/agents/security-consensus.md +276 -0
  56. package/src/core/agents/test-analyzer-assertions.md +181 -0
  57. package/src/core/agents/test-analyzer-coverage.md +183 -0
  58. package/src/core/agents/test-analyzer-fragility.md +185 -0
  59. package/src/core/agents/test-analyzer-integration.md +155 -0
  60. package/src/core/agents/test-analyzer-maintenance.md +173 -0
  61. package/src/core/agents/test-analyzer-mocking.md +178 -0
  62. package/src/core/agents/test-analyzer-patterns.md +189 -0
  63. package/src/core/agents/test-analyzer-structure.md +177 -0
  64. package/src/core/agents/test-consensus.md +294 -0
  65. package/src/core/commands/{legal/audit.md → audit/legal.md} +13 -13
  66. package/src/core/commands/{logic/audit.md → audit/logic.md} +12 -12
  67. package/src/core/commands/audit/performance.md +443 -0
  68. package/src/core/commands/audit/security.md +443 -0
  69. package/src/core/commands/audit/test.md +442 -0
  70. package/src/core/commands/babysit.md +505 -463
  71. package/src/core/commands/browser-qa.md +240 -0
  72. package/src/core/commands/configure.md +8 -8
  73. package/src/core/commands/research/ask.md +42 -9
  74. package/src/core/commands/research/import.md +14 -8
  75. package/src/core/commands/research/list.md +17 -16
  76. package/src/core/commands/research/synthesize.md +8 -8
  77. package/src/core/commands/research/view.md +28 -4
  78. package/src/core/commands/whats-new.md +2 -2
  79. package/src/core/experts/devops/expertise.yaml +13 -2
  80. package/src/core/experts/documentation/expertise.yaml +26 -4
  81. package/src/core/profiles/COMPARISON.md +170 -0
  82. package/src/core/profiles/README.md +178 -0
  83. package/src/core/profiles/claude-code.yaml +111 -0
  84. package/src/core/profiles/codex.yaml +103 -0
  85. package/src/core/profiles/cursor.yaml +134 -0
  86. package/src/core/profiles/examples.js +250 -0
  87. package/src/core/profiles/loader.js +235 -0
  88. package/src/core/profiles/windsurf.yaml +159 -0
  89. package/src/core/teams/logic-audit.json +6 -0
  90. package/src/core/teams/perf-audit.json +71 -0
  91. package/src/core/teams/security-audit.json +71 -0
  92. package/src/core/teams/test-audit.json +71 -0
  93. package/src/core/templates/browser-qa-spec.yaml +94 -0
  94. package/src/core/templates/command-prerequisites.yaml +169 -0
  95. package/src/core/templates/damage-control-patterns.yaml +9 -0
  96. package/tools/cli/installers/ide/_base-ide.js +33 -3
  97. package/tools/cli/installers/ide/claude-code.js +2 -69
  98. package/tools/cli/installers/ide/codex.js +9 -9
  99. package/tools/cli/installers/ide/cursor.js +165 -4
  100. package/tools/cli/installers/ide/windsurf.js +237 -6
  101. package/tools/cli/lib/content-transformer.js +234 -9
  102. package/tools/cli/lib/docs-setup.js +1 -1
  103. package/tools/cli/lib/ide-generator.js +357 -0
  104. package/tools/cli/lib/ide-registry.js +2 -2
  105. package/scripts/tmux-task-name.sh +0 -105
  106. package/scripts/tmux-task-watcher.sh +0 -344
@@ -0,0 +1,159 @@
1
+ # Windsurf IDE Capability Profile
2
+ # Wave 13+ - Most comprehensive hooks but no true sub-agent spawning
3
+ # Reference: Cross-IDE Compatibility Findings (20260220)
4
+
5
+ ide:
6
+ id: windsurf
7
+ name: Windsurf
8
+ displayName: Windsurf
9
+ description: Codeium's AI editor with native worktrees and 11 lifecycle hooks
10
+ configDir: .windsurf
11
+ configDirGlobal: ~/.codeium/windsurf
12
+ instructionsFile: WINDSURF.md
13
+ fileFormat: markdown
14
+ commandPrefix: "/"
15
+ agentPrefix: "agileflow-"
16
+
17
+ paths:
18
+ commands: .windsurf/workflows/
19
+ agents: null # Uses workflows + cascades instead
20
+ skills: .windsurf/skills/*/SKILL.md
21
+ rules: .windsurf/rules/
22
+ workflows: .windsurf/workflows/
23
+ hooks: .windsurf/hooks.json
24
+ hooksGlobal: ~/.codeium/windsurf/hooks.json
25
+ mcp: ~/.codeium/windsurf/mcp_config.json
26
+ mcpGlobal: true # MCP config is global-only
27
+
28
+ capabilities:
29
+ core:
30
+ fileOperations: true # Native file read/write
31
+ shell: true # Native shell (4-level auto-execution)
32
+ fileSearch: true # Native search + analyze tools
33
+ interactiveInput: true # Conversational only (no structured menus)
34
+ subAgents: false # No true sub-agent spawning
35
+ nestedSubAgents: false # Parallel Cascades via worktrees instead
36
+ planning:
37
+ planMode: true # Native via "megaplan" keyword
38
+ planModeEditable: true # Editable plans in ~/.windsurf/plans/
39
+ lifecycle:
40
+ hooks: true # 9 lifecycle events (per official docs Feb 2026)
41
+ hookEvents:
42
+ - pre_read_code
43
+ - post_read_code
44
+ - pre_write_code
45
+ - post_write_code
46
+ - pre_run_command
47
+ - post_run_command
48
+ - pre_mcp_tool_use
49
+ - post_mcp_tool_use
50
+ - pre_user_prompt
51
+ external:
52
+ webSearch: true # Web Search tool
53
+ webFetch: true # URL Read and View Chunk
54
+ mcp: true # Full MCP support
55
+ mcpToolLimit: 100 # 100-tool cap
56
+ browser: true # Browser Preview (in-IDE)
57
+ collaboration:
58
+ taskTracking: false # Conversation-embedded only (not persistent)
59
+ persistentTasks: false
60
+ worktrees: true # Native worktrees (up to 20 per workspace)
61
+ maxWorktrees: 20
62
+
63
+ toolNames:
64
+ # Interactive
65
+ askUser: null # Conversational only
66
+ # Delegation
67
+ spawnAgent: null # Use workflows + cascades instead
68
+ # Planning
69
+ planModeEnter: null # Native, use "megaplan" keyword
70
+ planModeExit: null # Native
71
+ # Execution
72
+ bash: run_command
73
+ # Files
74
+ read: read_file
75
+ write: write_file
76
+ edit: edit_file
77
+ # Search
78
+ glob: search_files
79
+ grep: search_codebase
80
+ # Web
81
+ webSearch: web_search
82
+ webFetch: url_read
83
+ # Cascades
84
+ cascade: null # Use /workflow-name chaining
85
+
86
+ workflowModel:
87
+ format: markdown
88
+ maxCharacters: 12000 # Hard limit per workflow file
89
+ splitStrategy: "Split large workflows into multiple files"
90
+ chaining: "Use /workflow-name in instructions to chain workflows"
91
+ cascades: "Use @cascade to run multiple workflows in parallel"
92
+
93
+ skillModel:
94
+ format: markdown
95
+ frontmatterFormat: yaml
96
+ spec: "agentskills.io"
97
+ fields:
98
+ - name
99
+ - description
100
+ - model
101
+ - requiredCapabilities
102
+
103
+ frontmatter:
104
+ workflows:
105
+ format: null # Workflows are commands, not structured prompts
106
+ rules:
107
+ format: markdown
108
+ fields:
109
+ - description
110
+ - globs
111
+ - alwaysApply
112
+ skills:
113
+ format: yaml
114
+ fields:
115
+ - name
116
+ - description
117
+ - model
118
+ - requiredCapabilities
119
+
120
+ limits:
121
+ maxFileSize: 0 # 0 = unlimited
122
+ maxCommandLength: 0 # 0 = unlimited
123
+ maxWorkflowSize: 12000 # Hard limit per workflow file
124
+ maxToolsPerMCP: 100 # MCP tool limit
125
+ maxWorktreesPerWorkspace: 20
126
+ autoExecutionLevels: 4 # Shell auto-execution levels
127
+
128
+ installation:
129
+ supportsFileOps: true
130
+ supportsHooks: true # Native
131
+ supportsMCP: true # Global-only config
132
+ commandsRequireApproval: false
133
+ skillsCanBeNestedDirs: true
134
+ projectLevelMCP: false # MCP config is global-only
135
+
136
+ worktreeModel:
137
+ supported: true
138
+ maxConcurrent: 20
139
+ useCase: "Parallel feature branches or multi-task execution"
140
+ gitIntegration: "Native git worktree support"
141
+ hostedOn: "Wave 13+"
142
+
143
+ cascadeModel:
144
+ description: "Run multiple workflows in parallel"
145
+ syntax: "@cascade /workflow1 /workflow2"
146
+ useCase: "Execute independent tasks without blocking"
147
+ limitSubstitution: "Use cascades instead of Task tool"
148
+
149
+ notes:
150
+ - "Windsurf has the most comprehensive hooks (11 events)"
151
+ - "NO true sub-agent spawning; use workflow chaining or cascades"
152
+ - "12,000 character limit per workflow - split large commands"
153
+ - "MCP config is global-only (in ~/.codeium/windsurf/mcp_config.json)"
154
+ - "Conversational input, no structured menus"
155
+ - "Native worktrees enable parallel development (up to 20 per workspace)"
156
+ - "Skills follow agentskills.io specification"
157
+ - "Use 'megaplan' keyword for advanced planning"
158
+ - "100-tool MCP limit; good balance between capability and performance"
159
+ - "Plan files stored in ~/.windsurf/plans/ (user's home, not project)"
@@ -20,6 +20,12 @@
20
20
  "domain": "control-flow",
21
21
  "description": "Analyzes dead code, unreachable branches, and missing returns"
22
22
  },
23
+ {
24
+ "agent": "agileflow-logic-analyzer-invariant",
25
+ "role": "analyzer",
26
+ "domain": "invariants",
27
+ "description": "Analyzes pre/post conditions, state consistency, and contract violations"
28
+ },
23
29
  {
24
30
  "agent": "agileflow-logic-analyzer-race",
25
31
  "role": "analyzer",
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "perf-audit",
3
+ "description": "Multi-perspective performance bottleneck analysis team for finding optimization opportunities",
4
+ "version": "1.0.0",
5
+ "lead": {
6
+ "agent": "agileflow-perf-consensus",
7
+ "delegate_mode": true,
8
+ "plan_approval": false
9
+ },
10
+ "teammates": [
11
+ {
12
+ "agent": "agileflow-perf-analyzer-queries",
13
+ "role": "analyzer",
14
+ "domain": "queries",
15
+ "description": "Analyzes N+1 queries, unindexed lookups, missing pagination, ORM anti-patterns"
16
+ },
17
+ {
18
+ "agent": "agileflow-perf-analyzer-rendering",
19
+ "role": "analyzer",
20
+ "domain": "rendering",
21
+ "description": "Analyzes unnecessary re-renders, missing memoization, expensive computations in render"
22
+ },
23
+ {
24
+ "agent": "agileflow-perf-analyzer-memory",
25
+ "role": "analyzer",
26
+ "domain": "memory",
27
+ "description": "Analyzes memory leaks, event listener cleanup, growing collections, closure captures"
28
+ },
29
+ {
30
+ "agent": "agileflow-perf-analyzer-bundle",
31
+ "role": "analyzer",
32
+ "domain": "bundle",
33
+ "description": "Analyzes large imports, missing tree-shaking, absent dynamic imports, duplicate deps"
34
+ },
35
+ {
36
+ "agent": "agileflow-perf-analyzer-compute",
37
+ "role": "analyzer",
38
+ "domain": "compute",
39
+ "description": "Analyzes sync I/O, CPU-intensive loops, blocking operations, algorithmic inefficiency"
40
+ },
41
+ {
42
+ "agent": "agileflow-perf-analyzer-network",
43
+ "role": "analyzer",
44
+ "domain": "network",
45
+ "description": "Analyzes HTTP waterfall, missing batching, no compression, large payloads"
46
+ },
47
+ {
48
+ "agent": "agileflow-perf-analyzer-caching",
49
+ "role": "analyzer",
50
+ "domain": "caching",
51
+ "description": "Analyzes missing memoization, redundant computations, no HTTP cache headers"
52
+ },
53
+ {
54
+ "agent": "agileflow-perf-analyzer-assets",
55
+ "role": "analyzer",
56
+ "domain": "assets",
57
+ "description": "Analyzes unoptimized images, render-blocking resources, missing lazy loading"
58
+ }
59
+ ],
60
+ "quality_gates": {
61
+ "teammate_idle": {
62
+ "tests": false,
63
+ "lint": false,
64
+ "types": false
65
+ },
66
+ "task_completed": {
67
+ "require_validator_approval": false
68
+ }
69
+ },
70
+ "tags": ["analysis", "performance", "optimization", "audit"]
71
+ }
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "security-audit",
3
+ "description": "Multi-perspective security vulnerability analysis team for finding exploitable weaknesses",
4
+ "version": "1.0.0",
5
+ "lead": {
6
+ "agent": "agileflow-security-consensus",
7
+ "delegate_mode": true,
8
+ "plan_approval": false
9
+ },
10
+ "teammates": [
11
+ {
12
+ "agent": "agileflow-security-analyzer-injection",
13
+ "role": "analyzer",
14
+ "domain": "injection",
15
+ "description": "Analyzes SQL injection, command injection, NoSQL injection, template injection"
16
+ },
17
+ {
18
+ "agent": "agileflow-security-analyzer-auth",
19
+ "role": "analyzer",
20
+ "domain": "authentication",
21
+ "description": "Analyzes weak hashing, JWT flaws, session fixation, broken auth flows"
22
+ },
23
+ {
24
+ "agent": "agileflow-security-analyzer-authz",
25
+ "role": "analyzer",
26
+ "domain": "authorization",
27
+ "description": "Analyzes IDOR, privilege escalation, path traversal, CORS, CSRF"
28
+ },
29
+ {
30
+ "agent": "agileflow-security-analyzer-secrets",
31
+ "role": "analyzer",
32
+ "domain": "secrets-crypto",
33
+ "description": "Analyzes hardcoded credentials, weak crypto, insecure randomness"
34
+ },
35
+ {
36
+ "agent": "agileflow-security-analyzer-input",
37
+ "role": "analyzer",
38
+ "domain": "input-validation",
39
+ "description": "Analyzes XSS, prototype pollution, SSRF, file upload, ReDoS"
40
+ },
41
+ {
42
+ "agent": "agileflow-security-analyzer-deps",
43
+ "role": "analyzer",
44
+ "domain": "dependencies",
45
+ "description": "Analyzes known CVEs, typosquatting, overly permissive version ranges"
46
+ },
47
+ {
48
+ "agent": "agileflow-security-analyzer-infra",
49
+ "role": "analyzer",
50
+ "domain": "infrastructure",
51
+ "description": "Analyzes Docker security, security headers, HTTPS, exposed endpoints"
52
+ },
53
+ {
54
+ "agent": "agileflow-security-analyzer-api",
55
+ "role": "analyzer",
56
+ "domain": "api-security",
57
+ "description": "Analyzes mass assignment, data exposure, rate limiting, GraphQL"
58
+ }
59
+ ],
60
+ "quality_gates": {
61
+ "teammate_idle": {
62
+ "tests": false,
63
+ "lint": false,
64
+ "types": false
65
+ },
66
+ "task_completed": {
67
+ "require_validator_approval": false
68
+ }
69
+ },
70
+ "tags": ["analysis", "security", "vulnerabilities", "audit"]
71
+ }
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "test-audit",
3
+ "description": "Multi-perspective test quality analysis team for finding test suite weaknesses",
4
+ "version": "1.0.0",
5
+ "lead": {
6
+ "agent": "agileflow-test-consensus",
7
+ "delegate_mode": true,
8
+ "plan_approval": false
9
+ },
10
+ "teammates": [
11
+ {
12
+ "agent": "agileflow-test-analyzer-coverage",
13
+ "role": "analyzer",
14
+ "domain": "coverage",
15
+ "description": "Analyzes untested critical paths, missing error path tests, low branch coverage"
16
+ },
17
+ {
18
+ "agent": "agileflow-test-analyzer-fragility",
19
+ "role": "analyzer",
20
+ "domain": "fragility",
21
+ "description": "Analyzes timing-dependent tests, order-dependent tests, environment-dependent tests"
22
+ },
23
+ {
24
+ "agent": "agileflow-test-analyzer-mocking",
25
+ "role": "analyzer",
26
+ "domain": "mocking",
27
+ "description": "Analyzes over-mocking, mock leakage, testing mocks instead of code"
28
+ },
29
+ {
30
+ "agent": "agileflow-test-analyzer-assertions",
31
+ "role": "analyzer",
32
+ "domain": "assertions",
33
+ "description": "Analyzes weak assertions, missing negative tests, snapshot overuse"
34
+ },
35
+ {
36
+ "agent": "agileflow-test-analyzer-structure",
37
+ "role": "analyzer",
38
+ "domain": "structure",
39
+ "description": "Analyzes test organization, naming clarity, code duplication, file length"
40
+ },
41
+ {
42
+ "agent": "agileflow-test-analyzer-integration",
43
+ "role": "analyzer",
44
+ "domain": "integration",
45
+ "description": "Analyzes missing API tests, absent E2E coverage, unit-only test suites"
46
+ },
47
+ {
48
+ "agent": "agileflow-test-analyzer-maintenance",
49
+ "role": "analyzer",
50
+ "domain": "maintenance",
51
+ "description": "Analyzes dead tests, outdated assertions, tests passing for wrong reasons"
52
+ },
53
+ {
54
+ "agent": "agileflow-test-analyzer-patterns",
55
+ "role": "analyzer",
56
+ "domain": "patterns",
57
+ "description": "Analyzes anti-patterns: testing privates, deep mock chains, God test objects"
58
+ }
59
+ ],
60
+ "quality_gates": {
61
+ "teammate_idle": {
62
+ "tests": false,
63
+ "lint": false,
64
+ "types": false
65
+ },
66
+ "task_completed": {
67
+ "require_validator_approval": false
68
+ }
69
+ },
70
+ "tags": ["analysis", "testing", "quality", "audit"]
71
+ }
@@ -0,0 +1,94 @@
1
+ # Browser QA Test Spec Template
2
+ # Part of AgileFlow Bowser Four-Layer Browser Automation
3
+ #
4
+ # Usage: Copy this template and fill in your scenario details.
5
+ # Place specs in: .agileflow/ui-review/specs/ or docs/07-testing/agentic/
6
+ # Run with: /agileflow:browser-qa SCENARIO=<path-to-this-file>
7
+ #
8
+ # Schema Version: 1.0.0
9
+
10
+ # --- Required Fields ---
11
+
12
+ # Unique test identifier (format: AGENTIC-NNN)
13
+ test_id: AGENTIC-001
14
+
15
+ # Associated user story (optional, links results to status.json)
16
+ story_id: US-XXXX
17
+
18
+ # Human-readable name for this test scenario
19
+ name: "Example User Login Flow"
20
+
21
+ # What this test validates
22
+ description: "Verify that a user can log in with valid credentials and reach the dashboard"
23
+
24
+ # --- Configuration ---
25
+
26
+ # Base URL of the application under test
27
+ url: http://localhost:3000
28
+
29
+ # Maximum time for entire scenario (default: 60s)
30
+ timeout: 60s
31
+
32
+ # Retry attempts on failure before marking as failed (default: 2)
33
+ max_retries: 2
34
+
35
+ # Minimum pass rate to consider validated (default: 0.80)
36
+ pass_rate_threshold: 0.80
37
+
38
+ # Browsers to test against (default: [chromium])
39
+ browsers:
40
+ - chromium
41
+
42
+ # --- Test Steps ---
43
+ # Each step has: name, action, and action-specific fields
44
+ # Supported actions: navigate, click, fill, assert, wait, screenshot
45
+ #
46
+ # Optional per-step fields:
47
+ # wait_for: CSS selector to wait for before proceeding
48
+ # screenshot: true/false - capture screenshot after this step
49
+ # timeout: per-step timeout override
50
+
51
+ steps:
52
+ - name: Navigate to login page
53
+ action: navigate
54
+ url: /login
55
+ wait_for: "[data-testid='login-form']"
56
+ screenshot: true
57
+
58
+ - name: Fill email field
59
+ action: fill
60
+ fields:
61
+ - selector: "[data-testid='email-input']"
62
+ value: "test@example.com"
63
+
64
+ - name: Fill password field
65
+ action: fill
66
+ fields:
67
+ - selector: "[data-testid='password-input']"
68
+ value: "testpassword123"
69
+
70
+ - name: Click login button
71
+ action: click
72
+ selector: "[data-testid='login-button']"
73
+ screenshot: true
74
+
75
+ - name: Verify dashboard loaded
76
+ action: assert
77
+ assertion: "User sees the dashboard page with a welcome message"
78
+ wait_for: "[data-testid='dashboard']"
79
+ screenshot: true
80
+
81
+ # --- Expected Result ---
82
+ # Natural language description of what success looks like
83
+ expected_result: "User is logged in and sees the dashboard with their name displayed"
84
+
85
+ # --- Metadata ---
86
+ # Optional fields for tracking and reporting
87
+
88
+ metadata:
89
+ author: AG-BROWSER-QA
90
+ created: "2026-02-16"
91
+ tags:
92
+ - authentication
93
+ - critical-path
94
+ priority: high
@@ -0,0 +1,169 @@
1
+ # command-prerequisites.yaml
2
+ #
3
+ # Declarative prerequisites for AgileFlow commands.
4
+ # Checked before command execution to warn about unmet requirements.
5
+ #
6
+ # Schema:
7
+ # commands.<name>.prerequisites[]:
8
+ # signal - Dot-path into extracted signals (e.g. git.branch, statusJson)
9
+ # description - Human-readable explanation of what's needed
10
+ # fix - Actionable instruction to resolve
11
+ # severity - critical (will fail) | high (poor results) | medium (suboptimal)
12
+ #
13
+ # Signals are extracted by smart-detect.js extractSignals() and include:
14
+ # git.branch, git.onFeatureBranch, git.isClean, git.filesChanged
15
+ # statusJson, storyCount, story, story.epic
16
+ # packageJson, tests.hasTestSetup
17
+ # files.playwright, files.tsconfig, files.coverage, files.ciConfig
18
+
19
+ version: "1.0.0"
20
+
21
+ settings:
22
+ fail_open: true
23
+ max_warnings: 5
24
+
25
+ commands:
26
+ verify:
27
+ prerequisites:
28
+ - signal: tests.hasTestSetup
29
+ description: "Test framework must be configured (scripts.test in package.json)"
30
+ fix: "Add a test script to package.json, e.g. \"test\": \"jest\" or \"test\": \"vitest\""
31
+ severity: critical
32
+
33
+ babysit:
34
+ prerequisites:
35
+ - signal: statusJson
36
+ description: "status.json must exist with stories to work on"
37
+ fix: "Run: /agileflow:story to create stories, or /agileflow:epic to plan an epic"
38
+ severity: critical
39
+
40
+ pr:
41
+ prerequisites:
42
+ - signal: git.onFeatureBranch
43
+ description: "Must be on a feature branch (not main/master)"
44
+ fix: "Create a feature branch: git checkout -b feat/your-feature"
45
+ severity: critical
46
+ - signal: story
47
+ description: "An active story should be set for PR description"
48
+ fix: "Run: /agileflow:status to set a current story"
49
+ severity: high
50
+
51
+ deploy:
52
+ prerequisites:
53
+ - signal: git.branch
54
+ description: "Git repository must be initialized"
55
+ fix: "Run: git init"
56
+ severity: critical
57
+ - signal: packageJson
58
+ description: "package.json must exist for deployment configuration"
59
+ fix: "Run: npm init -y"
60
+ severity: critical
61
+
62
+ audit:
63
+ prerequisites:
64
+ - signal: story
65
+ description: "An active story is needed to audit completion"
66
+ fix: "Run: /agileflow:status to set a current story"
67
+ severity: critical
68
+ - signal: statusJson
69
+ description: "status.json must exist with story data"
70
+ fix: "Run: /agileflow:story to create stories"
71
+ severity: critical
72
+
73
+ board:
74
+ prerequisites:
75
+ - signal: statusJson
76
+ description: "status.json must exist to display the board"
77
+ fix: "Run: /agileflow:story to create your first story"
78
+ severity: critical
79
+ - signal: storyCount
80
+ description: "At least one story must exist"
81
+ fix: "Run: /agileflow:story to create a story"
82
+ severity: high
83
+
84
+ sprint:
85
+ prerequisites:
86
+ - signal: statusJson
87
+ description: "status.json must exist for sprint planning"
88
+ fix: "Run: /agileflow:story to create stories first"
89
+ severity: critical
90
+ - signal: storyCount
91
+ description: "Stories are needed for sprint planning"
92
+ fix: "Run: /agileflow:epic to break down features into stories"
93
+ severity: high
94
+
95
+ browser-qa:
96
+ prerequisites:
97
+ - signal: files.playwright
98
+ description: "Playwright must be configured (playwright.config.ts or .js)"
99
+ fix: "Run: npm init playwright@latest"
100
+ severity: critical
101
+
102
+ review:
103
+ prerequisites:
104
+ - signal: git.onFeatureBranch
105
+ description: "Must be on a feature branch for code review"
106
+ fix: "Create a feature branch: git checkout -b feat/your-feature"
107
+ severity: critical
108
+ - signal: git.filesChanged
109
+ description: "There should be changed files to review"
110
+ fix: "Make some code changes before requesting a review"
111
+ severity: high
112
+
113
+ baseline:
114
+ prerequisites:
115
+ - signal: tests.hasTestSetup
116
+ description: "Test framework must be configured to establish a baseline"
117
+ fix: "Add a test script to package.json"
118
+ severity: critical
119
+ - signal: git.branch
120
+ description: "Git repository must be initialized"
121
+ fix: "Run: git init"
122
+ severity: high
123
+
124
+ metrics:
125
+ prerequisites:
126
+ - signal: statusJson
127
+ description: "status.json must exist for metrics calculation"
128
+ fix: "Run: /agileflow:story to start tracking work"
129
+ severity: critical
130
+ - signal: storyCount
131
+ description: "Stories are needed to compute metrics"
132
+ fix: "Run: /agileflow:story to create stories"
133
+ severity: high
134
+
135
+ velocity:
136
+ prerequisites:
137
+ - signal: statusJson
138
+ description: "status.json must exist for velocity tracking"
139
+ fix: "Run: /agileflow:story to start tracking work"
140
+ severity: critical
141
+ - signal: storyCount
142
+ description: "Completed stories are needed for velocity calculation"
143
+ fix: "Complete some stories to build velocity history"
144
+ severity: high
145
+
146
+ compress:
147
+ prerequisites:
148
+ - signal: statusJson
149
+ description: "status.json must exist to compress"
150
+ fix: "No status.json to compress - create stories first with /agileflow:story"
151
+ severity: critical
152
+
153
+ retro:
154
+ prerequisites:
155
+ - signal: statusJson
156
+ description: "status.json must exist for retrospective data"
157
+ fix: "Run: /agileflow:story to start tracking work"
158
+ severity: critical
159
+ - signal: storyCount
160
+ description: "Stories are needed for meaningful retrospective"
161
+ fix: "Complete some stories before running a retrospective"
162
+ severity: high
163
+
164
+ changelog:
165
+ prerequisites:
166
+ - signal: git.branch
167
+ description: "Git repository must be initialized with commit history"
168
+ fix: "Run: git init && git add -A && git commit -m 'initial commit'"
169
+ severity: critical
@@ -228,6 +228,15 @@ agileflowProtections:
228
228
  #
229
229
  # =====================================================
230
230
 
231
+ # ─── Release Process Enforcement ───
232
+ # Forces use of ./scripts/release.sh instead of manual commands
233
+ releaseProtections:
234
+ - pattern: '\bnpm\s+version\s+'
235
+ reason: "Use ./scripts/release.sh instead of npm version"
236
+
237
+ - pattern: '\bgit\s+tag\s+v\d+\.\d+\.\d+'
238
+ reason: "Use ./scripts/release.sh instead of manual git tag"
239
+
231
240
  # ─── Project-Specific Patterns (add yours below) ───
232
241
  # customPatterns:
233
242
  # - pattern: 'your-pattern-here'