chore: upgrade BMAD framework to skill-based architecture

Migrates from slash-command files (.claude/commands, .cursor/commands)
to the new skill-based architecture with workflow step files.
This commit is contained in:
2026-03-20 11:59:39 +00:00
parent d572f65684
commit e53b013359
977 changed files with 31594 additions and 29546 deletions

View File

@@ -4,7 +4,7 @@
Inject the Pact mock server URL into consumer code via an optional `baseUrl` field on the API context type instead of using raw `fetch()` inside `executeTest()`. This ensures contract tests exercise the real consumer HTTP client — including retry logic, header assembly, timeout configuration, error handling, and metrics — rather than testing Pact itself.
The base URL is typically a module-level constant evaluated at import time (`export const API_BASE_URL = env.SEON_API_URL`), but `mockServer.url` is only available at runtime inside `executeTest()`. Dependency injection solves this timing mismatch cleanly: add one optional field to the context type, use nullish coalescing in the HTTP client factory, and inject the mock server URL in tests.
The base URL is typically a module-level constant evaluated at import time (`export const API_BASE_URL = env.API_BASE_URL`), but `mockServer.url` is only available at runtime inside `executeTest()`. Dependency injection solves this timing mismatch cleanly: add one optional field to the context type, use nullish coalescing in the HTTP client factory, and inject the mock server URL in tests.
## Rationale
@@ -124,7 +124,7 @@ export function createTestContext(mockServerUrl: string): ApiContext {
```typescript
.executeTest(async (mockServer: V3MockServer) => {
const api = createSeonApi(createTestContext(mockServer.url));
const api = createApiClient(createTestContext(mockServer.url));
const result = await api.getFilterFields();
expect(result).toEqual(
expect.arrayContaining([
@@ -277,7 +277,7 @@ expect(response.status).toBe(200);
```typescript
// GOOD: Exercises real client, validates parsed return value
const api = createSeonApi(createTestContext(mockServer.url));
const api = createApiClient(createTestContext(mockServer.url));
const result = await api.searchTransactions(request);
expect(result.transactions).toBeDefined();
```
@@ -307,4 +307,4 @@ Used in workflows:
## Source
Pattern derived from seon-mcp-server Pact consumer test refactor (March 2026). Implements dependency injection for testability as described in Pact.js best practices.
Pattern derived from my-consumer-app Pact consumer test refactor (March 2026). Implements dependency injection for testability as described in Pact.js best practices.