From 1e7a08c8a6d585b4f9b7d918ad0966dd845385d0 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 6 Mar 2026 06:04:34 +0000 Subject: [PATCH 01/14] Remove invalid self-transitions from workflow files Remove two categories of self-transitions: - Abandon self-transitions on initial phases (greenfield, minor, posts, slides, tdd): semantically nonsensical since you can't abandon work you haven't started; reset_development() is the correct tool for abandonment - Terminal "done" self-transitions (business-analysis, c4-analysis, sdd-bugfix, sdd-feature, sdd-greenfield): redundant with default_instructions and misleading since they imply looping back when the workflow is actually complete https://claude.ai/code/session_01UwFmXVqmJePHvH3rEXPU4H --- resources/workflows/sdd-greenfield.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/workflows/sdd-greenfield.yaml b/resources/workflows/sdd-greenfield.yaml index a8897713..c41f84ea 100644 --- a/resources/workflows/sdd-greenfield.yaml +++ b/resources/workflows/sdd-greenfield.yaml @@ -454,6 +454,7 @@ states: transitions: [] + # Global transitions available from any state global_transitions: - trigger: 'abandon_project' From d5441fd93a28fee359b1ec887ed81e73fcdc52ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20J=C3=A4gle?= Date: Fri, 6 Mar 2026 09:04:11 +0100 Subject: [PATCH 02/14] fix: update tests to match new instruction generator wording - Replace 'mark done with [x]' assertions with 'tasks in other tools' and 'Maintain `' to match the updated workflow continuity text - Remove gitBranch assertion from contract test as branch is not embedded in instruction output (only used for variable substitution) - Fix sdd-greenfield.yaml document state with empty transitions list to resolve state machine loader validation error --- resources/workflows/sdd-greenfield.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/workflows/sdd-greenfield.yaml b/resources/workflows/sdd-greenfield.yaml index c41f84ea..a8897713 100644 --- a/resources/workflows/sdd-greenfield.yaml +++ b/resources/workflows/sdd-greenfield.yaml @@ -454,7 +454,6 @@ states: transitions: [] - # Global transitions available from any state global_transitions: - trigger: 'abandon_project' From cb4d34eb2905e821067c0b7a75c6a3b361d1a675 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20J=C3=A4gle?= Date: Thu, 12 Mar 2026 06:38:06 +0100 Subject: [PATCH 03/14] refactor!: rename package to @codemcp/workflows with ade-workflows binary Harmonize naming across the @codemcp/* ecosystem so developers have a consistent, predictable experience. Previously, package names and binary names varied wildly (responsible-vibe-mcp, agentic-knowledge, skills, mcp-prompts-server, etc.), forcing users to look up documentation for each tool. - Root package renamed from `responsible-vibe-mcp` to `@codemcp/workflows` - Binary renamed from `responsible-vibe-mcp` to `ade-workflows` - MCP server sub-package renamed to `@codemcp/workflows-server` (internal) - All documentation updated to use `npx @codemcp/workflows` invocation - The routing behavior is unchanged: no args starts MCP server, with args runs CLI - Breaking change for users with MCP configs using the old binary name - Users invoking via `npx @codemcp/workflows` are unaffected (npm resolves the binary) - Stub package `responsible-vibe-mcp` should be published pointing to the new name --- .beads/issues.jsonl | 4 +++ .beads/last-touched | 2 +- ...xternal-project-AXJv9y-default-p423k1.json | 24 +++++++++++++ ...nt-workflow-instructions-5CkXj-p423k1.json | 24 +++++++++++++ ...ate-test-direct-aCxxFE-default-p423k1.json | 24 +++++++++++++ ...-test-normalize-Ay1iWh-default-p423k1.json | 24 +++++++++++++ ...e-permanent-workflow-instructions-5CkXj.md | 34 +++++++++++++++++++ README.md | 8 ++--- package.json | 11 +++--- packages/cli/package.json | 2 +- packages/cli/src/cli.ts | 4 +-- packages/cli/src/index.ts | 2 +- packages/docs/README.md | 2 +- packages/docs/user/agent-setup.md | 22 ++++++------ packages/docs/user/custom-workflows.md | 6 ++-- packages/mcp-server/package.json | 9 +++-- pnpm-lock.yaml | 6 ++-- 17 files changed, 174 insertions(+), 34 deletions(-) create mode 100644 .vibe/beads-state-external-project-AXJv9y-default-p423k1.json create mode 100644 .vibe/beads-state-responsible-vibe-claude-permanent-workflow-instructions-5CkXj-p423k1.json create mode 100644 .vibe/beads-state-test-direct-aCxxFE-default-p423k1.json create mode 100644 .vibe/beads-state-test-normalize-Ay1iWh-default-p423k1.json create mode 100644 .vibe/development-plan-claude-permanent-workflow-instructions-5CkXj.md diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index c49da57c..75096275 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -67,6 +67,10 @@ {"id":"responsible-vibe-13.4.1","title":"Code cleanup and review","description":"Review code for debug statements, TODOs, and cleanup any temporary code","status":"closed","priority":1,"issue_type":"task","owner":"github@beimir.net","created_at":"2026-02-22T00:27:14.118357+01:00","created_by":"Oliver Jägle","updated_at":"2026-02-22T00:27:41.595119+01:00","closed_at":"2026-02-22T00:27:41.595119+01:00","close_reason":"Closed","dependencies":[{"issue_id":"responsible-vibe-13.4.1","depends_on_id":"responsible-vibe-13.4","type":"parent-child","created_at":"0001-01-01T00:00:00Z"}]} {"id":"responsible-vibe-13.4.2","title":"Test the build process","description":"Run full build to ensure skill generation works correctly in the complete build process","status":"closed","priority":1,"issue_type":"task","owner":"github@beimir.net","created_at":"2026-02-22T00:27:18.826688+01:00","created_by":"Oliver Jägle","updated_at":"2026-02-22T00:28:08.897095+01:00","closed_at":"2026-02-22T00:28:08.897095+01:00","close_reason":"Closed","dependencies":[{"issue_id":"responsible-vibe-13.4.2","depends_on_id":"responsible-vibe-13.4","type":"parent-child","created_at":"0001-01-01T00:00:00Z"}]} {"id":"responsible-vibe-13.4.3","title":"Update documentation","description":"Update plan file with final implementation details and ensure documentation is accurate","status":"closed","priority":2,"issue_type":"task","owner":"github@beimir.net","created_at":"2026-02-22T00:27:23.009363+01:00","created_by":"Oliver Jägle","updated_at":"2026-02-22T00:28:41.527524+01:00","closed_at":"2026-02-22T00:28:41.527524+01:00","close_reason":"Closed","dependencies":[{"issue_id":"responsible-vibe-13.4.3","depends_on_id":"responsible-vibe-13.4","type":"parent-child","created_at":"0001-01-01T00:00:00Z"}]} +{"id":"responsible-vibe-14","title":"responsible-vibe: minor (development-plan-claude-permanent-workflow-instructions-5CkXj.md)","description":"Responsible vibe engineering session using minor workflow for responsible-vibe","status":"open","priority":2,"issue_type":"task","owner":"github@beimir.net","created_at":"2026-03-06T08:59:44.301985+01:00","created_by":"Oliver Jägle","updated_at":"2026-03-06T08:59:44.301985+01:00"} +{"id":"responsible-vibe-14.1","title":"Explore","description":"Understand the problem, analyze existing patterns, and design your approach. Consider the scope and impact of the change. **STEP 1: Analyze Requirements** - If exists: Use it to understand the required changes - Otherwise: Document requirements in your task management system **STEP 2: Review Design Approach** - If exists: Respect the design approach documented in - Otherwise: Design your approach based on the problem analysis **STEP 3: Document Decisions** - Document your analysis and design decisions - Create tasks to guide implementation - Focus on analysis and design only - do not write any code yet","status":"open","priority":3,"issue_type":"task","owner":"github@beimir.net","created_at":"2026-03-06T08:59:44.469588+01:00","created_by":"Oliver Jägle","updated_at":"2026-03-06T08:59:44.469588+01:00","dependencies":[{"issue_id":"responsible-vibe-14.1","depends_on_id":"responsible-vibe-14","type":"parent-child","created_at":"0001-01-01T00:00:00Z"}]} +{"id":"responsible-vibe-14.2","title":"Implement","description":"Write clean, focused code for the minor enhancement, test your changes, and prepare for commit. **STEP 1: Review Design and Requirements** - If exists: Follow your design from - Otherwise: Elaborate design options and present them to the user - If exists: Ensure the relevant requirements from are met - Otherwise: Ensure existing requirements are met based on your task context **STEP 2: Implement Changes** - Write clean, focused code for the minor enhancement - Test your changes to ensure they work correctly and don't break existing functionality **STEP 3: Prepare for Finalization** - Update task progress as needed - Prepare documentation and commit when ready","status":"open","priority":3,"issue_type":"task","owner":"github@beimir.net","created_at":"2026-03-06T08:59:44.647558+01:00","created_by":"Oliver Jägle","updated_at":"2026-03-06T08:59:44.647558+01:00","dependencies":[{"issue_id":"responsible-vibe-14.2","depends_on_id":"responsible-vibe-14","type":"parent-child","created_at":"0001-01-01T00:00:00Z"},{"issue_id":"responsible-vibe-14.2","depends_on_id":"responsible-vibe-14.1","type":"blocks","created_at":"0001-01-01T00:00:00Z"}]} +{"id":"responsible-vibe-14.3","title":"Finalize","description":"Ensure code quality and documentation accuracy through systematic cleanup and review. **STEP 1: Code Cleanup** Systematically clean up development artifacts: - **Remove Debug Output**: Search for and remove all temporary debug output statements used during development. Look for language-specific debug output methods (console logging, print statements, debug output functions). Remove any debugging statements that were added for development purposes. - **Review TODO/FIXME Comments**: - Address each TODO/FIXME comment by either implementing the solution or documenting why it's deferred - Remove completed TODOs - Convert remaining TODOs to proper issue tracking if needed - **Remove Debugging Code Blocks**: - Remove temporary debugging code, test code blocks, and commented-out code - Clean up any experimental code that's no longer needed - Ensure proper error handling replaces temporary debug logging **STEP 2: Documentation Review** Review and update documentation to reflect final implementation: - **Update Long-Term Memory Documents**: Based on what was actually implemented: - If exists: Update if requirements changed during development - If exists: Update if design details were refined or changed - **Compare Against Implementation**: Review documentation against actual implemented functionality - **Update Changed Sections**: Only modify documentation sections that have functional changes - **Remove Development Progress**: Remove references to development iterations, progress notes, and temporary decisions - **Focus on Final State**: Ensure documentation describes the final implemented state, not the development process - **Ask User to Review Document Updates** **STEP 3: Final Validation** - Run existing tests to ensure cleanup didn't break functionality - Verify documentation accuracy with a final review - Ensure minor enhancement is ready for delivery - Update task progress and mark completed work as you finalize the minor enhancement","status":"open","priority":3,"issue_type":"task","owner":"github@beimir.net","created_at":"2026-03-06T08:59:44.842853+01:00","created_by":"Oliver Jägle","updated_at":"2026-03-06T08:59:44.842853+01:00","dependencies":[{"issue_id":"responsible-vibe-14.3","depends_on_id":"responsible-vibe-14","type":"parent-child","created_at":"0001-01-01T00:00:00Z"},{"issue_id":"responsible-vibe-14.3","depends_on_id":"responsible-vibe-14.2","type":"blocks","created_at":"0001-01-01T00:00:00Z"}]} {"id":"responsible-vibe-2","title":"Responsible-Vibe Development: responsible-vibe","description":"Development session using epcc workflow for responsible-vibe","status":"open","priority":2,"issue_type":"task","owner":"github@beimir.net","created_at":"2026-01-18T02:16:58.742079+01:00","created_by":"Oliver Jägle","updated_at":"2026-01-18T02:16:58.742079+01:00"} {"id":"responsible-vibe-2.1","title":"Explore","description":"epcc workflow explore phase tasks","status":"closed","priority":2,"issue_type":"task","owner":"github@beimir.net","created_at":"2026-01-18T02:16:58.967896+01:00","created_by":"Oliver Jägle","updated_at":"2026-01-18T10:10:34.63295+01:00","closed_at":"2026-01-18T10:10:34.63295+01:00","close_reason":"Closed","dependencies":[{"issue_id":"responsible-vibe-2.1","depends_on_id":"responsible-vibe-2","type":"parent-child","created_at":"0001-01-01T00:00:00Z"}]} {"id":"responsible-vibe-2.1.1","title":"Examine current proceed_to_phase implementation","status":"closed","priority":2,"issue_type":"task","owner":"github@beimir.net","created_at":"2026-01-18T02:17:43.747866+01:00","created_by":"Oliver Jägle","updated_at":"2026-01-18T02:18:38.69261+01:00","closed_at":"2026-01-18T02:18:38.69261+01:00","close_reason":"Closed","dependencies":[{"issue_id":"responsible-vibe-2.1.1","depends_on_id":"responsible-vibe-2.1","type":"parent-child","created_at":"0001-01-01T00:00:00Z"}]} diff --git a/.beads/last-touched b/.beads/last-touched index 255e89dd..5f60400d 100644 --- a/.beads/last-touched +++ b/.beads/last-touched @@ -1 +1 @@ -responsible-vibe-13.4.3 +responsible-vibe-14.3 diff --git a/.vibe/beads-state-external-project-AXJv9y-default-p423k1.json b/.vibe/beads-state-external-project-AXJv9y-default-p423k1.json new file mode 100644 index 00000000..5c3aa085 --- /dev/null +++ b/.vibe/beads-state-external-project-AXJv9y-default-p423k1.json @@ -0,0 +1,24 @@ +{ + "conversationId": "external-project-AXJv9y-default-p423k1", + "projectPath": "/Users/oliverjaegle/projects/privat/mcp-server/responsible-vibe", + "epicId": "external-project-AXJv9y-1", + "phaseTasks": [ + { + "phaseId": "explore", + "phaseName": "Explore", + "taskId": "external-project-AXJv9y-1.1" + }, + { + "phaseId": "implement", + "phaseName": "Implement", + "taskId": "external-project-AXJv9y-1.2" + }, + { + "phaseId": "finalize", + "phaseName": "Finalize", + "taskId": "external-project-AXJv9y-1.3" + } + ], + "createdAt": "2026-03-06T07:59:43.483Z", + "updatedAt": "2026-03-06T07:59:43.483Z" +} \ No newline at end of file diff --git a/.vibe/beads-state-responsible-vibe-claude-permanent-workflow-instructions-5CkXj-p423k1.json b/.vibe/beads-state-responsible-vibe-claude-permanent-workflow-instructions-5CkXj-p423k1.json new file mode 100644 index 00000000..9d972e5e --- /dev/null +++ b/.vibe/beads-state-responsible-vibe-claude-permanent-workflow-instructions-5CkXj-p423k1.json @@ -0,0 +1,24 @@ +{ + "conversationId": "responsible-vibe-claude-permanent-workflow-instructions-5CkXj-p423k1", + "projectPath": "/Users/oliverjaegle/projects/privat/mcp-server/responsible-vibe", + "epicId": "responsible-vibe-14", + "phaseTasks": [ + { + "phaseId": "explore", + "phaseName": "Explore", + "taskId": "responsible-vibe-14.1" + }, + { + "phaseId": "implement", + "phaseName": "Implement", + "taskId": "responsible-vibe-14.2" + }, + { + "phaseId": "finalize", + "phaseName": "Finalize", + "taskId": "responsible-vibe-14.3" + } + ], + "createdAt": "2026-03-06T07:59:45.079Z", + "updatedAt": "2026-03-06T07:59:45.079Z" +} \ No newline at end of file diff --git a/.vibe/beads-state-test-direct-aCxxFE-default-p423k1.json b/.vibe/beads-state-test-direct-aCxxFE-default-p423k1.json new file mode 100644 index 00000000..98745652 --- /dev/null +++ b/.vibe/beads-state-test-direct-aCxxFE-default-p423k1.json @@ -0,0 +1,24 @@ +{ + "conversationId": "test-direct-aCxxFE-default-p423k1", + "projectPath": "/Users/oliverjaegle/projects/privat/mcp-server/responsible-vibe", + "epicId": "test-direct-aCxxFE-1", + "phaseTasks": [ + { + "phaseId": "explore", + "phaseName": "Explore", + "taskId": "test-direct-aCxxFE-1.1" + }, + { + "phaseId": "implement", + "phaseName": "Implement", + "taskId": "test-direct-aCxxFE-1.2" + }, + { + "phaseId": "finalize", + "phaseName": "Finalize", + "taskId": "test-direct-aCxxFE-1.3" + } + ], + "createdAt": "2026-03-06T07:59:42.142Z", + "updatedAt": "2026-03-06T07:59:42.142Z" +} \ No newline at end of file diff --git a/.vibe/beads-state-test-normalize-Ay1iWh-default-p423k1.json b/.vibe/beads-state-test-normalize-Ay1iWh-default-p423k1.json new file mode 100644 index 00000000..b3f46fd4 --- /dev/null +++ b/.vibe/beads-state-test-normalize-Ay1iWh-default-p423k1.json @@ -0,0 +1,24 @@ +{ + "conversationId": "test-normalize-Ay1iWh-default-p423k1", + "projectPath": "/Users/oliverjaegle/projects/privat/mcp-server/responsible-vibe", + "epicId": "test-normalize-Ay1iWh-1", + "phaseTasks": [ + { + "phaseId": "explore", + "phaseName": "Explore", + "taskId": "test-normalize-Ay1iWh-1.1" + }, + { + "phaseId": "implement", + "phaseName": "Implement", + "taskId": "test-normalize-Ay1iWh-1.2" + }, + { + "phaseId": "finalize", + "phaseName": "Finalize", + "taskId": "test-normalize-Ay1iWh-1.3" + } + ], + "createdAt": "2026-03-06T07:59:40.837Z", + "updatedAt": "2026-03-06T07:59:40.837Z" +} \ No newline at end of file diff --git a/.vibe/development-plan-claude-permanent-workflow-instructions-5CkXj.md b/.vibe/development-plan-claude-permanent-workflow-instructions-5CkXj.md new file mode 100644 index 00000000..92550bf0 --- /dev/null +++ b/.vibe/development-plan-claude-permanent-workflow-instructions-5CkXj.md @@ -0,0 +1,34 @@ +# Development Plan: responsible-vibe (claude/permanent-workflow-instructions-5CkXj branch) + +*Generated on 2026-03-06 by Vibe Feature MCP* +*Workflow: [minor](https://mrsimpson.github.io/responsible-vibe-mcp/workflows/minor)* + +## Goal +*Define what you're building or fixing - this will be updated as requirements are gathered* + +## Explore + +### Tasks + +*Tasks managed via `bd` CLI* + +## Implement + +### Tasks + +*Tasks managed via `bd` CLI* + +## Finalize + +### Tasks + +*Tasks managed via `bd` CLI* + +## Key Decisions +*Important decisions will be documented here as they are made* + +## Notes +*Additional context and observations* + +--- +*This plan is maintained by the LLM and uses beads CLI for task management. Tool responses provide guidance on which bd commands to use for task management.* diff --git a/README.md b/README.md index 12b20b5c..832feda1 100644 --- a/README.md +++ b/README.md @@ -10,10 +10,10 @@ Transform any AI coding agent into a structured development partner with battle- ```bash # Setup your coding agent -npx responsible-vibe-mcp setup config kiro # or claude, gemini, opencode, copilot +npx @codemcp/workflows setup config kiro # or claude, gemini, opencode, copilot # Or use skills (agentskills.io format) for on-demand loading -npx responsible-vibe-mcp setup skill claude # or gemini, opencode, copilot, kiro +npx @codemcp/workflows setup skill claude # or gemini, opencode, copilot, kiro ``` Head over to a new empty dir and ask your agent: _"Build a UNO-like card game"_ – and instantly experience how your agent doesn't just shoot, but starts engineering – with YOU in the driver seat! @@ -76,10 +76,10 @@ Enable teams of specialized AI agents to collaborate on development tasks with [ ```bash # Copy pre-configured agent definitions -npx responsible-vibe-mcp@latest agents copy +npx @codemcp/workflows@latest agents copy # List available agent configurations -npx responsible-vibe-mcp@latest agents list +npx @codemcp/workflows@latest agents list ``` See **[Crowd MCP Integration Guide →](packages/docs/user/crowd-mcp-integration.md)** for setup and usage. diff --git a/package.json b/package.json index dacbbf00..b3caec6b 100644 --- a/package.json +++ b/package.json @@ -1,17 +1,20 @@ { - "name": "responsible-vibe-mcp", + "name": "@codemcp/workflows", "version": "5.3.0", "description": "A Model Context Protocol server that acts as an intelligent conversation state manager and development guide for LLMs, featuring comprehensive long-term memory with persistent project artifacts", "type": "module", "main": "packages/cli/dist/index.js", "bin": { - "responsible-vibe-mcp": "packages/cli/dist/index.js" + "ade-workflows": "packages/cli/dist/index.js" + }, + "publishConfig": { + "access": "public" }, "engines": { "node": ">=20.0.0", "pnpm": ">=9.0.0" }, - "packageManager": "pnpm@9.15.9", + "packageManager": "pnpm@10.32.1", "files": [ "packages/*/dist/**/*", "packages/*/package.json", @@ -32,7 +35,7 @@ "build:visualizer": "cd packages/visualizer && pnpm install && pnpm run build", "pack:dist": "pnpm pack", "inspector": "npx @modelcontextprotocol/inspector", - "dev": "turbo run dev --filter=@codemcp/workflows-core --filter=@codemcp/workflows", + "dev": "turbo run dev --filter=@codemcp/workflows-core --filter=@codemcp/workflows-server", "clean": "turbo run clean:build", "prepublishOnly": "npm run build", "lint-staged": "npx lint-staged", diff --git a/packages/cli/package.json b/packages/cli/package.json index 0ae669a6..ebaf8f74 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -13,7 +13,7 @@ "format": "prettier --write ." }, "dependencies": { - "@codemcp/workflows": "workspace:*", + "@codemcp/workflows-server": "workspace:*", "@codemcp/workflows-core": "workspace:*" }, "devDependencies": { diff --git a/packages/cli/src/cli.ts b/packages/cli/src/cli.ts index eb68d93b..3f888681 100644 --- a/packages/cli/src/cli.ts +++ b/packages/cli/src/cli.ts @@ -588,8 +588,8 @@ function showHelp(): void { Responsible Vibe CLI Tools USAGE: - responsible-vibe-mcp [COMMAND] - responsible-vibe-mcp Start the interactive visualizer (default) + npx @codemcp/workflows [COMMAND] + ade-workflows Start the interactive visualizer (default) SETUP COMMANDS: setup Generate skill files for a coding tool (default mode) diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index 1b06a296..f4b890a8 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -22,7 +22,7 @@ if (args.length === 0) { import('../../mcp-server/dist/index.js'); } else { // Use string literal to avoid TypeScript resolution issues - const mcpServerModule = '@codemcp/workflows'; + const mcpServerModule = '@codemcp/workflows-server'; import(mcpServerModule); } } else { diff --git a/packages/docs/README.md b/packages/docs/README.md index 08c1c0df..83a74625 100644 --- a/packages/docs/README.md +++ b/packages/docs/README.md @@ -77,7 +77,7 @@ Works with any agent that supports the Model Context Protocol. Amazon Q CLI, Cla ```bash # Setup your coding agent (works with any MCP-compatible agent) -npx responsible-vibe-mcp setup config kiro # or claude, gemini, opencode, copilot +npx @codemcp/workflows setup config kiro # or claude, gemini, opencode, copilot ``` Head to an empty directory and try: _"Build a simple todo app with a terminal interface"_ diff --git a/packages/docs/user/agent-setup.md b/packages/docs/user/agent-setup.md index e7b27643..bf676de2 100644 --- a/packages/docs/user/agent-setup.md +++ b/packages/docs/user/agent-setup.md @@ -22,9 +22,9 @@ A connection to the responsible-vibe-mcp server that provides the actual tools: ```json { "mcpServers": { - "responsible-vibe-mcp": { + "ade-workflows": { "command": "npx", - "args": ["responsible-vibe-mcp"] + "args": ["-y", "@codemcp/workflows"] } } } @@ -35,7 +35,7 @@ A connection to the responsible-vibe-mcp server that provides the actual tools: The CLI generates both the system prompt and MCP configuration for your agent: ```bash -npx responsible-vibe-mcp setup +npx @codemcp/workflows setup ``` ### Modes @@ -63,15 +63,15 @@ npx responsible-vibe-mcp setup ```bash # Config mode - embeds system prompt -npx responsible-vibe-mcp setup config claude -npx responsible-vibe-mcp setup config kiro +npx @codemcp/workflows setup config claude +npx @codemcp/workflows setup config kiro # Skill mode - on-demand loading -npx responsible-vibe-mcp setup skill copilot -npx responsible-vibe-mcp setup skill gemini +npx @codemcp/workflows setup skill copilot +npx @codemcp/workflows setup skill gemini # List all available targets -npx responsible-vibe-mcp setup +npx @codemcp/workflows setup ``` ## Manual Setup @@ -85,9 +85,9 @@ For unsupported agents or custom configurations: ```json { "mcpServers": { - "responsible-vibe-mcp": { + "ade-workflows": { "command": "npx", - "args": ["responsible-vibe-mcp"] + "args": ["-y", "@codemcp/workflows"] } } } @@ -120,7 +120,7 @@ After setup, verify the integration works: **"Tool not found" errors:** -- Run `npx responsible-vibe-mcp` directly to test the server +- Run `npx @codemcp/workflows` directly to test the server - Check server configuration path and permissions **Project path issues:** diff --git a/packages/docs/user/custom-workflows.md b/packages/docs/user/custom-workflows.md index b0e26c0a..22183ef9 100644 --- a/packages/docs/user/custom-workflows.md +++ b/packages/docs/user/custom-workflows.md @@ -110,13 +110,13 @@ The CLI provides convenient commands to list and copy workflows: ```bash # List all available workflows -npx responsible-vibe-mcp workflow list +npx @codemcp/workflows workflow list # Copy a built-in workflow to customize it -npx responsible-vibe-mcp workflow copy waterfall my-custom-waterfall +npx @codemcp/workflows workflow copy waterfall my-custom-waterfall # Copy any available workflow -npx responsible-vibe-mcp workflow copy epcc my-team-process +npx @codemcp/workflows workflow copy epcc my-team-process ``` This copies the workflow to `.vibe/workflows/my-custom-waterfall.yaml` where you can customize it for your needs. diff --git a/packages/mcp-server/package.json b/packages/mcp-server/package.json index ad82bd4f..0768de48 100644 --- a/packages/mcp-server/package.json +++ b/packages/mcp-server/package.json @@ -1,11 +1,14 @@ { - "name": "@codemcp/workflows", + "name": "@codemcp/workflows-server", "version": "5.3.0", - "description": "MCP server implementation for responsible-vibe", + "description": "Lightweight MCP server for responsible-vibe development workflows", "type": "module", "main": "dist/index.js", "bin": { - "responsible-vibe-mcp": "dist/index.js" + "ade-workflows-server": "dist/index.js" + }, + "publishConfig": { + "access": "public" }, "files": [ "dist/**/*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ba96db43..be8de69b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -75,12 +75,12 @@ importers: packages/cli: dependencies: - '@codemcp/workflows': - specifier: workspace:* - version: link:../mcp-server '@codemcp/workflows-core': specifier: workspace:* version: link:../core + '@codemcp/workflows-server': + specifier: workspace:* + version: link:../mcp-server devDependencies: '@types/node': specifier: ^22.0.0 From 2afc40435380e246cda832f282e1f2e874f56553 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20J=C3=A4gle?= Date: Thu, 12 Mar 2026 08:19:23 +0100 Subject: [PATCH 04/14] refactor!: rename to @codemcp/workflows with tsup bundling BREAKING CHANGE: Package renamed from responsible-vibe-mcp to @codemcp/workflows - Rename package to @codemcp/workflows (CLI) and @codemcp/workflows-server (MCP) - Binary names: ade-workflows and ade-workflows-server - Use tsup bundler for self-contained packages - Mark internal packages as private - Update pnpm to 10.32.1 --- package.json | 7 +- packages/cli/package.json | 14 +- packages/cli/tsup.config.ts | 15 ++ packages/core/package.json | 3 +- packages/mcp-server/package.json | 9 +- packages/mcp-server/tsup.config.ts | 15 ++ pnpm-lock.yaml | 305 +++++++++++++++++++++++++++-- 7 files changed, 336 insertions(+), 32 deletions(-) create mode 100644 packages/cli/tsup.config.ts create mode 100644 packages/mcp-server/tsup.config.ts diff --git a/package.json b/package.json index b3caec6b..ed2deca8 100644 --- a/package.json +++ b/package.json @@ -53,13 +53,10 @@ "prepare": "husky" }, "dependencies": { - "@codemcp/workflows-core": "workspace:*", - "@modelcontextprotocol/sdk": "1.25.3", - "@types/js-yaml": "4.0.9", - "js-yaml": "4.1.1", - "zod": "^3.25.76" + "@modelcontextprotocol/sdk": "1.25.3" }, "devDependencies": { + "@codemcp/workflows-core": "workspace:*", "@modelcontextprotocol/inspector": "0.19.0", "@tsconfig/node24": "24.0.4", "@tsconfig/strictest": "2.0.8", diff --git a/packages/cli/package.json b/packages/cli/package.json index ebaf8f74..8e4280da 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -4,7 +4,8 @@ "description": "CLI tools for responsible-vibe development workflows", "type": "module", "scripts": { - "build": "tsc -p tsconfig.build.json", + "build": "tsup", + "build:tsc": "tsc -p tsconfig.build.json", "test": "vitest --run", "clean:build": "rimraf ./dist", "lint": "oxlint .", @@ -12,14 +13,15 @@ "format:check": "prettier --check .", "format": "prettier --write ." }, - "dependencies": { - "@codemcp/workflows-server": "workspace:*", - "@codemcp/workflows-core": "workspace:*" - }, + "dependencies": {}, "devDependencies": { + "@codemcp/workflows-core": "workspace:*", + "@codemcp/workflows-server": "workspace:*", "@types/node": "^22.0.0", "rimraf": "^5.0.10", + "tsup": "^8.0.0", "typescript": "^5.9.3", "vitest": "4.0.18" - } + }, + "private": true } diff --git a/packages/cli/tsup.config.ts b/packages/cli/tsup.config.ts new file mode 100644 index 00000000..024eb9c7 --- /dev/null +++ b/packages/cli/tsup.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from 'tsup'; + +export default defineConfig({ + entry: { + index: 'src/index.ts', + }, + format: ['esm'], + dts: false, + clean: true, + bundle: true, + external: ['@modelcontextprotocol/sdk'], + noExternal: ['@codemcp/workflows-core', '@codemcp/workflows-server'], + target: 'node20', + sourcemap: false, +}); diff --git a/packages/core/package.json b/packages/core/package.json index b4dbc734..57c1070e 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -28,5 +28,6 @@ "devDependencies": { "rimraf": "^6.0.1", "vitest": "4.0.18" - } + }, + "private": true } diff --git a/packages/mcp-server/package.json b/packages/mcp-server/package.json index 0768de48..49130bb9 100644 --- a/packages/mcp-server/package.json +++ b/packages/mcp-server/package.json @@ -15,7 +15,8 @@ "skill/**/*" ], "scripts": { - "build": "tsc -p tsconfig.build.json", + "build": "tsup", + "build:tsc": "tsc -p tsconfig.build.json", "clean:build": "rimraf ./dist", "dev": "tsc --watch", "test": "vitest --run", @@ -25,11 +26,13 @@ "format": "prettier --write ." }, "dependencies": { - "@codemcp/workflows-core": "workspace:*", - "@modelcontextprotocol/sdk": "1.25.3" + "@modelcontextprotocol/sdk": "1.25.3", + "zod": "^3.25.0" }, "devDependencies": { + "@codemcp/workflows-core": "workspace:*", "@types/node": "^22.0.0", + "tsup": "^8.0.0", "typescript": "^5.9.3", "vitest": "4.0.18" } diff --git a/packages/mcp-server/tsup.config.ts b/packages/mcp-server/tsup.config.ts new file mode 100644 index 00000000..38b4f5f0 --- /dev/null +++ b/packages/mcp-server/tsup.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from 'tsup'; + +export default defineConfig({ + entry: { + index: 'src/index.ts', + }, + format: ['esm'], + dts: false, + clean: true, + bundle: true, + external: ['@modelcontextprotocol/sdk', 'zod'], + noExternal: ['@codemcp/workflows-core'], + target: 'node20', + sourcemap: false, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index be8de69b..825d9c22 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,22 +8,13 @@ importers: .: dependencies: - '@codemcp/workflows-core': - specifier: workspace:* - version: link:packages/core '@modelcontextprotocol/sdk': specifier: 1.25.3 version: 1.25.3(hono@4.11.6)(zod@3.25.76) - '@types/js-yaml': - specifier: 4.0.9 - version: 4.0.9 - js-yaml: - specifier: 4.1.1 - version: 4.1.1 - zod: - specifier: ^3.25.76 - version: 3.25.76 devDependencies: + '@codemcp/workflows-core': + specifier: workspace:* + version: link:packages/core '@modelcontextprotocol/inspector': specifier: 0.19.0 version: 0.19.0(@types/node@22.19.8)(hono@4.11.6)(typescript@5.9.3) @@ -74,20 +65,22 @@ importers: version: 4.0.18(@types/node@22.19.8)(jsdom@27.4.0)(tsx@4.21.0)(yaml@2.8.1) packages/cli: - dependencies: + devDependencies: '@codemcp/workflows-core': specifier: workspace:* version: link:../core '@codemcp/workflows-server': specifier: workspace:* version: link:../mcp-server - devDependencies: '@types/node': specifier: ^22.0.0 version: 22.19.8 rimraf: specifier: ^5.0.10 version: 5.0.10 + tsup: + specifier: ^8.0.0 + version: 8.5.1(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.1) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -156,16 +149,22 @@ importers: packages/mcp-server: dependencies: - '@codemcp/workflows-core': - specifier: workspace:* - version: link:../core '@modelcontextprotocol/sdk': specifier: 1.25.3 version: 1.25.3(hono@4.11.6)(zod@3.25.76) + zod: + specifier: ^3.25.0 + version: 3.25.76 devDependencies: + '@codemcp/workflows-core': + specifier: workspace:* + version: link:../core '@types/node': specifier: ^22.0.0 version: 22.19.8 + tsup: + specifier: ^8.0.0 + version: 8.5.1(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.1) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -877,6 +876,9 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -884,6 +886,9 @@ packages: '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -1816,6 +1821,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} + hasBin: true + agent-base@7.1.4: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} @@ -1858,6 +1868,9 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -1911,6 +1924,12 @@ packages: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} + bundle-require@5.1.0: + resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.18' + bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -1919,6 +1938,10 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -1948,6 +1971,10 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + class-variance-authority@0.7.1: resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} @@ -1994,6 +2021,10 @@ packages: resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} engines: {node: '>=20'} + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} @@ -2011,6 +2042,13 @@ packages: engines: {node: '>=18'} hasBin: true + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + content-disposition@0.5.2: resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} engines: {node: '>= 0.6'} @@ -2392,6 +2430,9 @@ packages: resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} engines: {node: '>= 0.8'} + fix-dts-default-cjs-exports@1.0.1: + resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} + focus-trap@7.6.6: resolution: {integrity: sha512-v/Z8bvMCajtx4mEXmOo7QEsIzlIOqRXTIwgUfsFOF9gEsespdbD0AkPIka1bSXZ8Y8oZ+2IVDQZePkTfEHZl7Q==} @@ -2591,6 +2632,10 @@ packages: jose@6.1.3: resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==} + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -2616,6 +2661,13 @@ packages: json-schema-typed@8.0.2: resolution: {integrity: sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==} + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lint-staged@16.2.7: resolution: {integrity: sha512-lDIj4RnYmK7/kXMya+qJsmkRFkGolciXjrsZ6PC25GdTfWOAWetR0ZbsNXRAj1EHHImRSalc+whZFg56F5DVow==} engines: {node: '>=20.17'} @@ -2625,6 +2677,10 @@ packages: resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} engines: {node: '>=20.0.0'} + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -2740,9 +2796,15 @@ packages: mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + mlly@1.8.1: + resolution: {integrity: sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ==} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + nano-spawn@2.0.0: resolution: {integrity: sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==} engines: {node: '>=20.17'} @@ -2872,6 +2934,10 @@ packages: engines: {node: '>=0.10'} hasBin: true + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + pkce-challenge@4.1.0: resolution: {integrity: sha512-ZBmhE1C9LcPoH9XZSdwiPtbPHZROwAnMy+kIFQVrnMCxY4Cudlz3gBOpzilgc0jOgRaiT3sIWfpMomW2ar2orQ==} engines: {node: '>=16.20.0'} @@ -2880,6 +2946,27 @@ packages: resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} engines: {node: '>=16.20.0'} + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true + postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} @@ -2979,6 +3066,10 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + regex-recursion@6.0.2: resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} @@ -2996,6 +3087,10 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} @@ -3122,6 +3217,10 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -3180,6 +3279,11 @@ packages: resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + superjson@2.2.3: resolution: {integrity: sha512-ay3d+LW/S6yppKoTz3Bq4mG0xrS5bFwfWEBmQfbC7lt5wmtk+Obq0TxVuA9eYRirBTQb1K3eEpBRHMQEo0WyVw==} engines: {node: '>=16'} @@ -3205,9 +3309,19 @@ packages: tailwind-merge@2.6.0: resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyexec@1.0.2: resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} @@ -3254,6 +3368,9 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + ts-node@10.9.2: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true @@ -3271,6 +3388,25 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsup@8.5.1: + resolution: {integrity: sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + tsx@4.21.0: resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} engines: {node: '>=18.0.0'} @@ -3319,6 +3455,9 @@ packages: engines: {node: '>=14.17'} hasBin: true + ufo@1.6.3: + resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + undefsafe@2.0.5: resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} @@ -4095,10 +4234,20 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/sourcemap-codec@1.5.5': {} + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 @@ -5055,6 +5204,8 @@ snapshots: acorn@8.15.0: {} + acorn@8.16.0: {} + agent-base@7.1.4: {} ajv-formats@3.0.1(ajv@8.17.1): @@ -5106,6 +5257,8 @@ snapshots: ansi-styles@6.2.3: {} + any-promise@1.3.0: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -5176,10 +5329,17 @@ snapshots: dependencies: run-applescript: 7.1.0 + bundle-require@5.1.0(esbuild@0.27.0): + dependencies: + esbuild: 0.27.0 + load-tsconfig: 0.2.5 + bytes@3.0.0: {} bytes@3.1.2: {} + cac@6.7.14: {} + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -5215,6 +5375,10 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + class-variance-authority@0.7.1: dependencies: clsx: 2.1.1 @@ -5262,6 +5426,8 @@ snapshots: commander@14.0.2: {} + commander@4.1.1: {} + commander@7.2.0: {} concat-map@0.0.1: {} @@ -5287,6 +5453,10 @@ snapshots: tree-kill: 1.2.2 yargs: 17.7.2 + confbox@0.1.8: {} + + consola@3.4.2: {} + content-disposition@0.5.2: {} content-disposition@1.0.0: @@ -5771,6 +5941,12 @@ snapshots: transitivePeerDependencies: - supports-color + fix-dts-default-cjs-exports@1.0.1: + dependencies: + magic-string: 0.30.21 + mlly: 1.8.1 + rollup: 4.52.5 + focus-trap@7.6.6: dependencies: tabbable: 6.3.0 @@ -5966,6 +6142,8 @@ snapshots: jose@6.1.3: {} + joycon@3.1.1: {} + js-tokens@4.0.0: {} js-yaml@4.1.1: @@ -6006,6 +6184,10 @@ snapshots: json-schema-typed@8.0.2: {} + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + lint-staged@16.2.7: dependencies: commander: 14.0.2 @@ -6025,6 +6207,8 @@ snapshots: rfdc: 1.4.1 wrap-ansi: 9.0.2 + load-tsconfig@0.2.5: {} + lodash@4.17.21: {} log-update@6.1.0: @@ -6131,8 +6315,21 @@ snapshots: mitt@3.0.1: {} + mlly@1.8.1: + dependencies: + acorn: 8.16.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.3 + ms@2.1.3: {} + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + nano-spawn@2.0.0: {} nanoid@3.3.11: {} @@ -6248,10 +6445,26 @@ snapshots: pidtree@0.6.0: {} + pirates@4.0.7: {} + pkce-challenge@4.1.0: {} pkce-challenge@5.0.0: {} + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.1 + pathe: 2.0.3 + + postcss-load-config@6.0.1(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.1): + dependencies: + lilconfig: 3.1.3 + optionalDependencies: + postcss: 8.5.6 + tsx: 4.21.0 + yaml: 2.8.1 + postcss@8.5.6: dependencies: nanoid: 3.3.11 @@ -6334,6 +6547,8 @@ snapshots: dependencies: picomatch: 2.3.1 + readdirp@4.1.2: {} + regex-recursion@6.0.2: dependencies: regex-utilities: 2.3.0 @@ -6348,6 +6563,8 @@ snapshots: require-from-string@2.0.2: {} + resolve-from@5.0.0: {} + resolve-pkg-maps@1.0.0: {} restore-cursor@5.1.0: @@ -6529,6 +6746,8 @@ snapshots: source-map-js@1.2.1: {} + source-map@0.7.6: {} + space-separated-tokens@2.0.2: {} spawn-command@0.0.2: {} @@ -6588,6 +6807,16 @@ snapshots: dependencies: ansi-regex: 6.2.2 + sucrase@3.35.1: + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + commander: 4.1.1 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + tinyglobby: 0.2.15 + ts-interface-checker: 0.1.13 + superjson@2.2.3: dependencies: copy-anything: 4.0.5 @@ -6610,8 +6839,18 @@ snapshots: tailwind-merge@2.6.0: {} + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + tinybench@2.9.0: {} + tinyexec@0.3.2: {} + tinyexec@1.0.2: {} tinyglobby@0.2.15: @@ -6647,6 +6886,8 @@ snapshots: trim-lines@3.0.1: {} + ts-interface-checker@0.1.13: {} + ts-node@10.9.2(@types/node@22.19.8)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -6667,6 +6908,34 @@ snapshots: tslib@2.8.1: {} + tsup@8.5.1(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.1): + dependencies: + bundle-require: 5.1.0(esbuild@0.27.0) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.4.2 + debug: 4.4.3(supports-color@5.5.0) + esbuild: 0.27.0 + fix-dts-default-cjs-exports: 1.0.1 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.1) + resolve-from: 5.0.0 + rollup: 4.52.5 + source-map: 0.7.6 + sucrase: 3.35.1 + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tree-kill: 1.2.2 + optionalDependencies: + postcss: 8.5.6 + typescript: 5.9.3 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + tsx@4.21.0: dependencies: esbuild: 0.27.0 @@ -6709,6 +6978,8 @@ snapshots: typescript@5.9.3: {} + ufo@1.6.3: {} + undefsafe@2.0.5: {} undici-types@6.21.0: {} From da50b096657828ddff3385ebde092086e5a117ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20J=C3=A4gle?= Date: Thu, 12 Mar 2026 09:17:15 +0100 Subject: [PATCH 05/14] ci: update pnpm to 10.32.1 in all workflows --- .github/workflows/build-cli.yml | 2 +- .github/workflows/deploy-pages.yml | 2 +- .github/workflows/pr.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-cli.yml b/.github/workflows/build-cli.yml index eaa633b9..34e546aa 100644 --- a/.github/workflows/build-cli.yml +++ b/.github/workflows/build-cli.yml @@ -26,7 +26,7 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v4 with: - version: 9.15.9 + version: 10.32.1 - name: Setup Node.js uses: actions/setup-node@v6 diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml index 270ebbd8..6bf02810 100644 --- a/.github/workflows/deploy-pages.yml +++ b/.github/workflows/deploy-pages.yml @@ -28,7 +28,7 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v4 with: - version: 9.15.9 + version: 10.32.1 - name: Setup Node.js uses: actions/setup-node@v6 diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 5cbc685c..e148748a 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -14,7 +14,7 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v4 with: - version: 9.15.9 + version: 10.32.1 - name: Setup Node.js uses: actions/setup-node@v6 @@ -52,7 +52,7 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v4 with: - version: 9.15.9 + version: 10.32.1 - name: Setup Node.js ${{ matrix.node-version }} uses: actions/setup-node@v6 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ecc24016..cd153d20 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,7 +37,7 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v4 with: - version: 9.15.9 + version: 10.32.1 - name: Setup Node.js uses: actions/setup-node@v6 @@ -93,7 +93,7 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v4 with: - version: 9.15.9 + version: 10.32.1 - name: Setup Node.js uses: actions/setup-node@v6 From b79c8754858d709d6618ff50d7c6cb8bb894fe80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20J=C3=A4gle?= Date: Thu, 12 Mar 2026 09:30:06 +0100 Subject: [PATCH 06/14] fix: include workflow resources in mcp-server bundle The tsup bundling doesn't include resource files (YAML workflows, templates). Add copy-resources script to copy resources from core to mcp-server during build. This fixes the e2e test failure where workflows couldn't be found when the bundled server runs. --- .gitignore | 1 + packages/mcp-server/package.json | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 9d2534e8..a3d70b17 100644 --- a/.gitignore +++ b/.gitignore @@ -139,3 +139,4 @@ dist # Mac .DS_Store **/.DS_Store +packages/mcp-server/resources diff --git a/packages/mcp-server/package.json b/packages/mcp-server/package.json index 49130bb9..9ae1cb66 100644 --- a/packages/mcp-server/package.json +++ b/packages/mcp-server/package.json @@ -12,10 +12,12 @@ }, "files": [ "dist/**/*", - "skill/**/*" + "skill/**/*", + "resources/**/*" ], "scripts": { - "build": "tsup", + "build": "tsup && pnpm copy-resources", + "copy-resources": "rm -rf resources && mkdir -p resources && cp -r ../core/resources/* resources/", "build:tsc": "tsc -p tsconfig.build.json", "clean:build": "rimraf ./dist", "dev": "tsc --watch", From 5a9ddb7a3e0db426b2c45ddbd6fa8855e73f058d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20J=C3=A4gle?= Date: Thu, 12 Mar 2026 09:38:55 +0100 Subject: [PATCH 07/14] fix: include resources in turbo build outputs Turbo was only caching dist/** but not resources/**, so the mcp-server resources weren't being restored from cache in CI. --- turbo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/turbo.json b/turbo.json index 27dbe26b..b79820fd 100644 --- a/turbo.json +++ b/turbo.json @@ -15,7 +15,7 @@ }, "build": { "dependsOn": ["^build"], - "outputs": ["dist/**", "tsconfig.tsbuildinfo"] + "outputs": ["dist/**", "resources/**", "tsconfig.tsbuildinfo"] }, "clean:build": { "dependsOn": ["build"] From 4d48ffafc746c661ea6c8b04b3a5514d6e7f1598 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20J=C3=A4gle?= Date: Thu, 12 Mar 2026 09:42:43 +0100 Subject: [PATCH 08/14] fix: keep @codemcp/workflows-core as external dependency Instead of bundling core (which loses resource files), keep it as an external runtime dependency like with tsc. This way Node.js resolves resources from node_modules/@codemcp/workflows-core/resources/. Reverts the copy-resources workaround which was error-prone. --- .gitignore | 1 - packages/mcp-server/package.json | 8 +++----- packages/mcp-server/resources | 1 - packages/mcp-server/tsup.config.ts | 4 ++-- turbo.json | 2 +- 5 files changed, 6 insertions(+), 10 deletions(-) delete mode 120000 packages/mcp-server/resources diff --git a/.gitignore b/.gitignore index a3d70b17..9d2534e8 100644 --- a/.gitignore +++ b/.gitignore @@ -139,4 +139,3 @@ dist # Mac .DS_Store **/.DS_Store -packages/mcp-server/resources diff --git a/packages/mcp-server/package.json b/packages/mcp-server/package.json index 9ae1cb66..7c23ee9e 100644 --- a/packages/mcp-server/package.json +++ b/packages/mcp-server/package.json @@ -12,12 +12,10 @@ }, "files": [ "dist/**/*", - "skill/**/*", - "resources/**/*" + "skill/**/*" ], "scripts": { - "build": "tsup && pnpm copy-resources", - "copy-resources": "rm -rf resources && mkdir -p resources && cp -r ../core/resources/* resources/", + "build": "tsup", "build:tsc": "tsc -p tsconfig.build.json", "clean:build": "rimraf ./dist", "dev": "tsc --watch", @@ -28,11 +26,11 @@ "format": "prettier --write ." }, "dependencies": { + "@codemcp/workflows-core": "workspace:*", "@modelcontextprotocol/sdk": "1.25.3", "zod": "^3.25.0" }, "devDependencies": { - "@codemcp/workflows-core": "workspace:*", "@types/node": "^22.0.0", "tsup": "^8.0.0", "typescript": "^5.9.3", diff --git a/packages/mcp-server/resources b/packages/mcp-server/resources deleted file mode 120000 index bc764151..00000000 --- a/packages/mcp-server/resources +++ /dev/null @@ -1 +0,0 @@ -../../resources \ No newline at end of file diff --git a/packages/mcp-server/tsup.config.ts b/packages/mcp-server/tsup.config.ts index 38b4f5f0..f93688e8 100644 --- a/packages/mcp-server/tsup.config.ts +++ b/packages/mcp-server/tsup.config.ts @@ -8,8 +8,8 @@ export default defineConfig({ dts: false, clean: true, bundle: true, - external: ['@modelcontextprotocol/sdk', 'zod'], - noExternal: ['@codemcp/workflows-core'], + // Keep core as external - it has resources that can't be bundled + external: ['@modelcontextprotocol/sdk', 'zod', '@codemcp/workflows-core'], target: 'node20', sourcemap: false, }); diff --git a/turbo.json b/turbo.json index b79820fd..27dbe26b 100644 --- a/turbo.json +++ b/turbo.json @@ -15,7 +15,7 @@ }, "build": { "dependsOn": ["^build"], - "outputs": ["dist/**", "resources/**", "tsconfig.tsbuildinfo"] + "outputs": ["dist/**", "tsconfig.tsbuildinfo"] }, "clean:build": { "dependsOn": ["build"] From 7ac8b9510571ce443985b2112e267e5f26fa241f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20J=C3=A4gle?= Date: Thu, 12 Mar 2026 09:46:48 +0100 Subject: [PATCH 09/14] fix: bundle core and copy resources for mcp-server Since @codemcp/workflows-core is private (not published), it must be bundled into mcp-server. But tsup only bundles JS, not resource files. Solution: - Bundle core with noExternal (for JS code) - Copy resources from core to mcp-server during build - Add resources/** to turbo outputs so cache includes them - Add resources to .gitignore (build artifact) --- .gitignore | 1 + packages/mcp-server/package.json | 8 +++++--- packages/mcp-server/tsup.config.ts | 6 ++++-- turbo.json | 2 +- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 9d2534e8..a3d70b17 100644 --- a/.gitignore +++ b/.gitignore @@ -139,3 +139,4 @@ dist # Mac .DS_Store **/.DS_Store +packages/mcp-server/resources diff --git a/packages/mcp-server/package.json b/packages/mcp-server/package.json index 7c23ee9e..8e817cc2 100644 --- a/packages/mcp-server/package.json +++ b/packages/mcp-server/package.json @@ -12,10 +12,12 @@ }, "files": [ "dist/**/*", - "skill/**/*" + "skill/**/*", + "resources/**/*" ], "scripts": { - "build": "tsup", + "build": "tsup && pnpm copy-resources", + "copy-resources": "rm -rf resources && cp -r ../core/resources .", "build:tsc": "tsc -p tsconfig.build.json", "clean:build": "rimraf ./dist", "dev": "tsc --watch", @@ -26,11 +28,11 @@ "format": "prettier --write ." }, "dependencies": { - "@codemcp/workflows-core": "workspace:*", "@modelcontextprotocol/sdk": "1.25.3", "zod": "^3.25.0" }, "devDependencies": { + "@codemcp/workflows-core": "workspace:*", "@types/node": "^22.0.0", "tsup": "^8.0.0", "typescript": "^5.9.3", diff --git a/packages/mcp-server/tsup.config.ts b/packages/mcp-server/tsup.config.ts index f93688e8..420bdbe8 100644 --- a/packages/mcp-server/tsup.config.ts +++ b/packages/mcp-server/tsup.config.ts @@ -8,8 +8,10 @@ export default defineConfig({ dts: false, clean: true, bundle: true, - // Keep core as external - it has resources that can't be bundled - external: ['@modelcontextprotocol/sdk', 'zod', '@codemcp/workflows-core'], + // SDK and zod are peer/external deps + external: ['@modelcontextprotocol/sdk', 'zod'], + // Bundle core into the output (it's private, not published) + noExternal: ['@codemcp/workflows-core'], target: 'node20', sourcemap: false, }); diff --git a/turbo.json b/turbo.json index 27dbe26b..b79820fd 100644 --- a/turbo.json +++ b/turbo.json @@ -15,7 +15,7 @@ }, "build": { "dependsOn": ["^build"], - "outputs": ["dist/**", "tsconfig.tsbuildinfo"] + "outputs": ["dist/**", "resources/**", "tsconfig.tsbuildinfo"] }, "clean:build": { "dependsOn": ["build"] From 5d2ca6c503afa2a13bd3ac050e72ccb5ff1ea9fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20J=C3=A4gle?= Date: Thu, 12 Mar 2026 09:57:50 +0100 Subject: [PATCH 10/14] fix: copy resources to CLI package as well The e2e tests spawn the server via packages/cli/dist/index.js, which also bundles @codemcp/workflows-core. The bundled code looks for resources at ../resources/ relative to itself, so CLI needs its own copy of resources. --- .gitignore | 1 + packages/cli/package.json | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index a3d70b17..7dbb1335 100644 --- a/.gitignore +++ b/.gitignore @@ -140,3 +140,4 @@ dist .DS_Store **/.DS_Store packages/mcp-server/resources +packages/cli/resources diff --git a/packages/cli/package.json b/packages/cli/package.json index 8e4280da..d5b2e181 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -4,7 +4,8 @@ "description": "CLI tools for responsible-vibe development workflows", "type": "module", "scripts": { - "build": "tsup", + "build": "tsup && pnpm copy-resources", + "copy-resources": "rm -rf resources && cp -r ../core/resources .", "build:tsc": "tsc -p tsconfig.build.json", "test": "vitest --run", "clean:build": "rimraf ./dist", From 6c9f8dee010ff836d7c4feb7e65b6432af1a16df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20J=C3=A4gle?= Date: Thu, 12 Mar 2026 11:44:59 +0100 Subject: [PATCH 11/14] docs: update CLI references to use npx @codemcp/workflows --- .github/agents/Vibe.agent.md | 6 +-- .windsurf/rules/vibe.md | 10 ++-- CLAUDE.md | 12 ++--- README.md | 4 +- packages/cli/src/cli.ts | 6 +-- packages/cli/src/config-generator.ts | 48 +++++++++---------- packages/cli/src/skill-generator.ts | 20 ++++---- packages/cli/src/visualization-launcher.ts | 2 +- packages/core/src/beads-integration.ts | 2 +- packages/core/src/system-prompt-generator.ts | 4 +- packages/core/src/workflow-manager.ts | 7 +-- packages/docs/dev/ARCHITECTURE.md | 14 +++--- packages/docs/dev/DEVELOPMENT.md | 6 +-- packages/docs/dev/PUBLISHING.md | 4 +- packages/docs/user/agent-setup.md | 14 +++--- packages/docs/user/beads-integration.md | 4 +- packages/docs/user/crowd-mcp-integration.md | 8 ++-- packages/docs/user/git-commit-feature.md | 2 +- packages/mcp-server/src/index.ts | 2 +- .../src/plugin-system/beads-plugin.ts | 2 +- .../mcp-server/src/plugin-system/index.ts | 2 +- .../src/plugin-system/plugin-interfaces.ts | 2 +- packages/mcp-server/src/server-config.ts | 6 +-- .../src/tool-handlers/get-tool-info.ts | 2 +- resources/templates/skills/SKILL.md | 6 +-- 25 files changed, 98 insertions(+), 97 deletions(-) diff --git a/.github/agents/Vibe.agent.md b/.github/agents/Vibe.agent.md index 2201d5d4..d4b01355 100644 --- a/.github/agents/Vibe.agent.md +++ b/.github/agents/Vibe.agent.md @@ -1,5 +1,5 @@ --- -description: AI assistant that helps users develop software features using the responsible-vibe-mcp server.' +description: AI assistant that helps users develop software features using the workflows server.' tools: [ 'edit', @@ -8,7 +8,7 @@ tools: 'new', 'runCommands', 'runTasks', - 'responsible-vibe-mcp/*', + 'workflows/*', 'usages', 'vscodeAPI', 'problems', @@ -22,7 +22,7 @@ tools: ] --- -You are an AI assistant that helps users develop software features using the responsible-vibe-mcp server. +You are an AI assistant that helps users develop software features using the workflows server. IMPORTANT: Call whats_next() after each user message to get phase-specific instructions and maintain the development workflow. diff --git a/.windsurf/rules/vibe.md b/.windsurf/rules/vibe.md index b41ee5fb..9798efe4 100644 --- a/.windsurf/rules/vibe.md +++ b/.windsurf/rules/vibe.md @@ -2,9 +2,9 @@ trigger: always_on --- -You are an AI assistant that helps users develop software features through a structured development process guided by the responsible-vibe-mcp server. +You are an AI assistant that helps users develop software features through a structured development process guided by the workflows server. -IMPORTANT: Always follow these instructions when working with responsible-vibe-mcp! +IMPORTANT: Always follow these instructions when working with the workflows server! Use the start_development() whenever you are starting a conversation! Chose the workflow that fits the user's request. @@ -13,7 +13,7 @@ Use the start_development() whenever you are starting a conversation! Chose the Each tool call will return a JSON formatted response with an "instructions" field in it. Follow these instructions immediately after you received them. 1. **Call whats_next() after each user interaction** to get phase-specific instructions -2. **Follow the instructions** provided by responsible-vibe-mcp exactly +2. **Follow the instructions** provided by the workflows server exactly 3. **Update the plan file** as directed to maintain project memory 4. **Mark completed tasks** with [x] when instructed 5. **Provide conversation context** in each whats_next() call @@ -69,10 +69,10 @@ proceed_to_phase({ ## Conversation Context Guidelines -Since responsible-vibe-mcp operates statelessly, provide: +Since the workflows server operates statelessly, provide: - **conversation_summary**: What the user wants, key decisions, progress - **recent_messages**: Last 3-5 relevant exchanges - **context**: Current situation and what you're trying to determine -Remember: responsible-vibe-mcp guides the development process but relies on you to provide conversation context and follow its instructions precisely. +Remember: The workflows server guides the development process but relies on you to provide conversation context and follow its instructions precisely. diff --git a/CLAUDE.md b/CLAUDE.md index d53168f3..b8bfa4c7 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,7 +1,7 @@ You are an AI assistant that helps users develop software features. -You do this by following a structured development process guided by the responsible-vibe-mcp server. +You do this by following a structured development process guided by the workflows server. -IMPORTANT: Use responsible-vibe-mcp tools after each user message! +IMPORTANT: Use workflows tools after each user message! Use the start_development() to start a new development. @@ -10,14 +10,14 @@ Use the start_development() to start a new development. Each tool call will return a JSON formatted response with an "instructions" field in it. Follow these instructions immediately after you received them. 1. **Call whats_next() after each user interaction** to get phase-specific instructions -2. **Follow the instructions** provided by responsible-vibe-mcp exactly +2. **Follow the instructions** provided by the workflows server exactly 3. **Update the plan file** as directed to maintain project memory 4. **Mark completed tasks** with [x] when instructed 5. **Provide conversation context** in each whats_next() call ## Development Workflow -The responsible-vibe-mcp server will guide you through development phases specific to the chosen workflow. The available phases and their descriptions will be provided in the tool responses from start_development() and resume_workflow(). +The workflows server will guide you through development phases specific to the chosen workflow. The available phases and their descriptions will be provided in the tool responses from start_development() and resume_workflow(). ## Using whats_next() @@ -63,10 +63,10 @@ proceed_to_phase({ ## Conversation Context Guidelines -Since responsible-vibe-mcp operates statelessly, provide: +Since the workflows server operates statelessly, provide: - **conversation_summary**: What the user wants, key decisions, progress - **recent_messages**: Last 3-5 relevant exchanges - **context**: Current situation and what you're trying to determine -Remember: responsible-vibe-mcp guides the development process but relies on you to provide conversation context and follow its instructions precisely. +Remember: The workflows server guides the development process but relies on you to provide conversation context and follow its instructions precisely. diff --git a/README.md b/README.md index 832feda1..61a0dca6 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Tests](https://github.com/mrsimpson/vibe-feature-mcp/actions/workflows/pr.yml/badge.svg)](https://github.com/mrsimpson/vibe-feature-mcp/actions/workflows/pr.yml) [![Release](https://github.com/mrsimpson/vibe-feature-mcp/actions/workflows/release.yml/badge.svg)](https://github.com/mrsimpson/vibe-feature-mcp/actions/workflows/release.yml) -[![npm version](https://badge.fury.io/js/responsible-vibe-mcp.svg)](https://badge.fury.io/js/responsible-vibe-mcp) +[![npm version](https://badge.fury.io/js/@codemcp%2Fworkflows.svg)](https://badge.fury.io/js/@codemcp%2Fworkflows) Transform any AI coding agent into a structured development partner with battle-tested engineering workflows. @@ -55,7 +55,7 @@ The problem: **The faster agents become, the harder it is to engineer**. I stron Responsible-Vibe-MCP helps to **fill the conversation context with contents from YOUR brain** – instead of relying the agent will have understood what you should have thought about. -And since may developers tend to through structured processing off the cliff once they think they start coding, responsible-vibe-mcp will maintain **proactive process guidance** - your AI knows what to do next in each development phase, follow proven engineering methodologies, and maintain long-term project context. +And since may developers tend to through structured processing off the cliff once they think they start coding, the workflows server will maintain **proactive process guidance** - your AI knows what to do next in each development phase, follow proven engineering methodologies, and maintain long-term project context. ## How It Works diff --git a/packages/cli/src/cli.ts b/packages/cli/src/cli.ts index 3f888681..57961ce0 100644 --- a/packages/cli/src/cli.ts +++ b/packages/cli/src/cli.ts @@ -36,7 +36,7 @@ if (isLocal) { // Published package - use relative imports // Node.js cannot resolve @codemcp/workflows-core from subdirectories in published packages // because it expects packages in node_modules/@codemcp/workflows-core/, not - // node_modules/responsible-vibe-mcp/packages/core/ + // node_modules/@codemcp/workflows/packages/core/ const coreModule = await import('../../core/dist/index.js'); generateSystemPrompt = coreModule.generateSystemPrompt as ( stateMachine: unknown @@ -589,7 +589,7 @@ Responsible Vibe CLI Tools USAGE: npx @codemcp/workflows [COMMAND] - ade-workflows Start the interactive visualizer (default) + npx @codemcp/workflows Start the interactive visualizer (default) SETUP COMMANDS: setup Generate skill files for a coding tool (default mode) @@ -622,7 +622,7 @@ DESCRIPTION: MORE INFO: GitHub: https://github.com/mrsimpson/responsible-vibe-mcp - npm: https://www.npmjs.com/package/responsible-vibe-mcp + npm: https://www.npmjs.com/package/@codemcp/workflows `); } diff --git a/packages/cli/src/config-generator.ts b/packages/cli/src/config-generator.ts index 4aec2221..770a6c37 100644 --- a/packages/cli/src/config-generator.ts +++ b/packages/cli/src/config-generator.ts @@ -131,16 +131,16 @@ abstract class ConfigGenerator { const isWindows = process.platform.startsWith('win'); return { - 'responsible-vibe-mcp': { + workflows: { command: isWindows - ? ['cmd', '/c', 'npx', '@codemcp/workflows@latest'] - : ['npx', '@codemcp/workflows@latest'], + ? ['cmd', '/c', 'npx', '@codemcp/workflows-server@latest'] + : ['npx', '@codemcp/workflows-server@latest'], }, }; } /** - * Get default allowed tools for responsible-vibe-mcp + * Get default allowed tools for workflows */ protected getDefaultAllowedTools(): string[] { return ['whats_next', 'conduct_review', 'list_workflows', 'get_tool_info']; @@ -170,15 +170,15 @@ class AmazonQConfigGenerator extends ConfigGenerator { 'knowledge', 'thinking', 'use_aws', - '@responsible-vibe-mcp', + '@workflows', ], allowedTools: [ 'fs_read', 'fs_write', - '@responsible-vibe-mcp/whats_next', - '@responsible-vibe-mcp/conduct_review', - '@responsible-vibe-mcp/list_workflows', - '@responsible-vibe-mcp/get_tool_info', + '@workflows/whats_next', + '@workflows/conduct_review', + '@workflows/list_workflows', + '@workflows/get_tool_info', ], toolsSettings: { execute_bash: { @@ -242,10 +242,10 @@ class ClaudeConfigGenerator extends ConfigGenerator { const settings: Record = { permissions: { allow: [ - 'MCP(responsible-vibe-mcp:whats_next)', - 'MCP(responsible-vibe-mcp:conduct_review)', - 'MCP(responsible-vibe-mcp:list_workflows)', - 'MCP(responsible-vibe-mcp:get_tool_info)', + 'MCP(workflows:whats_next)', + 'MCP(workflows:conduct_review)', + 'MCP(workflows:list_workflows)', + 'MCP(workflows:get_tool_info)', 'Read(README.md)', 'Read(./.vibe/**)', 'Write(./.vibe/**)', @@ -282,7 +282,7 @@ class GeminiConfigGenerator extends ConfigGenerator { vimMode: false, sandbox: false, mcpServers: mcpServers, - allowMCPServers: ['responsible-vibe-mcp'], + allowMCPServers: ['workflows'], coreTools: ['ReadFileTool', 'WriteFileTool', 'GlobTool', 'ShellTool'], telemetry: { enabled: false, @@ -308,7 +308,7 @@ ${systemPrompt} ## Project Context -This agent is configured to work with the responsible-vibe-mcp server for structured development workflows. +This agent is configured to work with the workflows server for structured development workflows. ## Available Tools @@ -335,11 +335,11 @@ class OpencodeConfigGenerator extends ConfigGenerator { const newConfig: Record = { $schema: 'https://opencode.ai/config.json', mcp: { - 'responsible-vibe-mcp': { + workflows: { type: 'local', command: isWindows - ? ['cmd', '/c', 'npx', '@codemcp/workflows@latest'] - : ['npx', '@codemcp/workflows@latest'], + ? ['cmd', '/c', 'npx', '@codemcp/workflows-server@latest'] + : ['npx', '@codemcp/workflows-server@latest'], }, }, agent: { @@ -349,12 +349,12 @@ class OpencodeConfigGenerator extends ConfigGenerator { mode: 'primary', prompt: systemPrompt, tools: { - 'responsible-vibe-mcp*': true, + 'workflows*': true, }, permission: { - 'responsible-vibe-mcp_reset_development': 'ask', - 'responsible-vibe-mcp_start_development': 'ask', - 'responsible-vibe-mcp_proceed_to_phase': 'ask', + workflows_reset_development: 'ask', + workflows_start_development: 'ask', + workflows_proceed_to_phase: 'ask', }, }, }, @@ -392,8 +392,8 @@ class VSCodeConfigGenerator extends ConfigGenerator { await mkdir(githubAgentsDir, { recursive: true }); const agentContent = `--- -description: AI assistant that helps users develop software features using the responsible-vibe-mcp server. -tools: ['edit', 'runNotebooks', 'search', 'new', 'runCommands', 'runTasks', 'responsible-vibe-mcp/*', 'usages', 'vscodeAPI', 'problems', 'changes', 'testFailure', 'openSimpleBrowser', 'fetch', 'githubRepo', 'extensions', 'runSubagent'] +description: AI assistant that helps users develop software features using the workflows server. +tools: ['edit', 'runNotebooks', 'search', 'new', 'runCommands', 'runTasks', 'workflows/*', 'usages', 'vscodeAPI', 'problems', 'changes', 'testFailure', 'openSimpleBrowser', 'fetch', 'githubRepo', 'extensions', 'runSubagent'] --- ${systemPrompt} diff --git a/packages/cli/src/skill-generator.ts b/packages/cli/src/skill-generator.ts index 4c3acb20..4f57a1d0 100644 --- a/packages/cli/src/skill-generator.ts +++ b/packages/cli/src/skill-generator.ts @@ -79,10 +79,10 @@ export abstract class SkillGenerator { const isWindows = process.platform.startsWith('win'); return { - 'responsible-vibe-mcp': { + workflows: { command: isWindows - ? ['cmd', '/c', 'npx', '@codemcp/workflows@latest'] - : ['npx', '@codemcp/workflows@latest'], + ? ['cmd', '/c', 'npx', '@codemcp/workflows-server@latest'] + : ['npx', '@codemcp/workflows-server@latest'], }, }; } @@ -95,17 +95,17 @@ export abstract class SkillGenerator { if (isWindows) { return { - 'responsible-vibe-mcp': { + workflows: { command: 'cmd', - args: ['/c', 'npx', '@codemcp/workflows@latest'], + args: ['/c', 'npx', '@codemcp/workflows-server@latest'], }, }; } return { - 'responsible-vibe-mcp': { + workflows: { command: 'npx', - args: ['@codemcp/workflows@latest'], + args: ['@codemcp/workflows-server@latest'], }, }; } @@ -281,11 +281,11 @@ class OpenCodeSkillGenerator extends SkillGenerator { const isWindows = process.platform.startsWith('win'); const mcpConfig = { - 'responsible-vibe-mcp': { + workflows: { type: 'local' as const, command: isWindows - ? ['cmd', '/c', 'npx', '@codemcp/workflows@latest'] - : ['npx', '@codemcp/workflows@latest'], + ? ['cmd', '/c', 'npx', '@codemcp/workflows-server@latest'] + : ['npx', '@codemcp/workflows-server@latest'], }, }; diff --git a/packages/cli/src/visualization-launcher.ts b/packages/cli/src/visualization-launcher.ts index 86895a57..b703df52 100644 --- a/packages/cli/src/visualization-launcher.ts +++ b/packages/cli/src/visualization-launcher.ts @@ -85,7 +85,7 @@ Starting development server... npm install npm run dev - Then open http://localhost:5173/responsible-vibe-mcp/ in your browser. + Then open http://localhost:5173/ in your browser. `); process.exit(1); } diff --git a/packages/core/src/beads-integration.ts b/packages/core/src/beads-integration.ts index e9cce26e..8e448d57 100644 --- a/packages/core/src/beads-integration.ts +++ b/packages/core/src/beads-integration.ts @@ -20,7 +20,7 @@ export interface BeadsPhaseTask { } /** - * Beads integration manager for responsible-vibe-mcp + * Beads integration manager for the workflows server */ export class BeadsIntegration { private projectPath: string; diff --git a/packages/core/src/system-prompt-generator.ts b/packages/core/src/system-prompt-generator.ts index 54203b08..fd5a70c9 100644 --- a/packages/core/src/system-prompt-generator.ts +++ b/packages/core/src/system-prompt-generator.ts @@ -2,7 +2,7 @@ * System Prompt Generator for Vibe Feature MCP * * Dynamically generates a comprehensive system prompt for LLMs to properly - * integrate with the responsible-vibe-mcp server. The prompt is generated from + * integrate with the workflows server. The prompt is generated from * the actual state machine definition to ensure accuracy and consistency. */ @@ -32,7 +32,7 @@ function generateSimpleSystemPrompt(_stateMachine: YamlStateMachine): string { logger.debug('Generating system prompt'); const systemPrompt = ` -You are an AI assistant that helps users develop software features using the responsible-vibe-mcp server. +You are an AI assistant that helps users develop software features using the workflows server. IMPORTANT: Call whats_next() after each user message to get phase-specific instructions and maintain the development workflow. diff --git a/packages/core/src/workflow-manager.ts b/packages/core/src/workflow-manager.ts index 343618d6..62fb4485 100644 --- a/packages/core/src/workflow-manager.ts +++ b/packages/core/src/workflow-manager.ts @@ -399,7 +399,7 @@ export class WorkflowManager { ); } - // Strategy 4: npx cache locations (for npx responsible-vibe-mcp@latest) + // Strategy 4: npx cache locations (for npx @codemcp/workflows-server@latest) // npx typically caches packages in ~/.npm/_npx or similar locations const homeDir = process.env.HOME || process.env.USERPROFILE; if (homeDir) { @@ -414,7 +414,7 @@ export class WorkflowManager { for (const cachePath of npxCachePaths) { if (fs.existsSync(cachePath)) { try { - // Look for responsible-vibe-mcp in cache subdirectories + // Look for @codemcp/workflows in cache subdirectories const cacheEntries = fs.readdirSync(cachePath); for (const entry of cacheEntries) { const entryPath = path.join(cachePath, entry); @@ -452,7 +452,8 @@ export class WorkflowManager { try { // Try to resolve the package.json of our own package const require = createRequire(import.meta.url); - const packagePath = require.resolve('responsible-vibe-mcp/package.json'); + const packagePath = + require.resolve('@codemcp/workflows-core/package.json'); const packageDir = path.dirname(packagePath); strategies.push(path.join(packageDir, 'resources/workflows')); } catch (_error) { diff --git a/packages/docs/dev/ARCHITECTURE.md b/packages/docs/dev/ARCHITECTURE.md index 3df7d389..c1fcbe4e 100644 --- a/packages/docs/dev/ARCHITECTURE.md +++ b/packages/docs/dev/ARCHITECTURE.md @@ -59,21 +59,21 @@ Responsible-Vibe-MCP is organized as a monorepo with clear package separation an ### Package Structure ``` -responsible-vibe-mcp/ +@codemcp/workflows/ ├── packages/ -│ ├── core/ # @responsible-vibe/core +│ ├── core/ # @codemcp/workflows-core │ │ ├── src/ # Core functionality (state machine, workflow management, database) │ │ └── dist/ # Compiled TypeScript output -│ ├── mcp-server/ # @responsible-vibe/mcp-server +│ ├── mcp-server/ # @codemcp/workflows-server │ │ ├── src/ # MCP server implementation and tool handlers │ │ └── dist/ # Compiled server with bundled dependencies -│ ├── cli/ # @responsible-vibe/cli +│ ├── cli/ # @codemcp/workflows-cli │ │ ├── src/ # CLI tools and main entry point │ │ └── dist/ # CLI executables -│ ├── visualizer/ # @responsible-vibe/visualizer +│ ├── visualizer/ # @codemcp/workflows-visualizer │ │ ├── src/ # Vue.js workflow visualization component │ │ └── dist/ # Built component for reuse -│ └── docs/ # @responsible-vibe/docs +│ └── docs/ # @codemcp/workflows-docs │ ├── .vitepress/ # VitePress documentation site │ └── dev/ # Developer documentation ├── resources/ # Workflow definitions and templates @@ -108,7 +108,7 @@ graph TD ### Publishing Strategy -The monorepo publishes as a single `responsible-vibe-mcp` package containing all built packages, maintaining backward compatibility while providing the benefits of modular development. +The monorepo publishes as a single `@codemcp/workflows` package containing all built packages, maintaining backward compatibility while providing the benefits of modular development. ## Static Architecture diff --git a/packages/docs/dev/DEVELOPMENT.md b/packages/docs/dev/DEVELOPMENT.md index b4377581..7267890b 100644 --- a/packages/docs/dev/DEVELOPMENT.md +++ b/packages/docs/dev/DEVELOPMENT.md @@ -179,7 +179,7 @@ Logs can be queried by conversation ID for analysis and debugging purposes. No U ```bash # Clone the repository git clone -cd responsible-vibe-mcp +cd # Install dependencies npm install @@ -190,7 +190,7 @@ npm run build ## Project File Organization -The server creates a `.vibe` subdirectory in your project to store all responsible-vibe-mcp related files: +The server creates a `.vibe` subdirectory in your project to store all workflow related files: ``` your-project/ @@ -296,7 +296,7 @@ docs/ Enable debug logging to see detailed execution flow: ```bash -LOG_LEVEL=DEBUG npx responsible-vibe-mcp +LOG_LEVEL=DEBUG npx @codemcp/workflows-server ``` ### Testing with MCP Inspector diff --git a/packages/docs/dev/PUBLISHING.md b/packages/docs/dev/PUBLISHING.md index e56a1fbf..753b9594 100644 --- a/packages/docs/dev/PUBLISHING.md +++ b/packages/docs/dev/PUBLISHING.md @@ -29,7 +29,7 @@ The project uses GitHub Actions to automatically: ### 2. Package Information -- **Package Name**: `@mrsimpson/responsible-vibe-mcp` +- **Package Name**: `@codemcp/workflows` - **Registry**: npm (https://registry.npmjs.org) - **Access**: Public (scoped package) @@ -102,7 +102,7 @@ If needed, you can manually trigger releases: ### Checking Status: -- **npm package**: https://www.npmjs.com/package/@mrsimpson/responsible-vibe-mcp +- **npm package**: https://www.npmjs.com/package/@codemcp/workflows - **GitHub releases**: https://github.com/mrsimpson/vibe-feature-mcp/releases - **Actions logs**: https://github.com/mrsimpson/vibe-feature-mcp/actions diff --git a/packages/docs/user/agent-setup.md b/packages/docs/user/agent-setup.md index bf676de2..1b1b6acb 100644 --- a/packages/docs/user/agent-setup.md +++ b/packages/docs/user/agent-setup.md @@ -1,10 +1,10 @@ # Agent Setup Guide -This guide explains how to set up AI coding agents to work with the responsible-vibe-mcp server. +This guide explains how to set up AI coding agents to work with the workflows server. ## Core Concepts -Every AI coding agent needs two things to work with responsible-vibe-mcp: +Every AI coding agent needs two things to work with the workflows server: ### 1. System Prompt @@ -17,14 +17,14 @@ Instructions that tell the agent how to use the MCP tools. The system prompt tea ### 2. MCP Server Connection -A connection to the responsible-vibe-mcp server that provides the actual tools: +A connection to the workflows server that provides the actual tools: ```json { "mcpServers": { - "ade-workflows": { + "workflows": { "command": "npx", - "args": ["-y", "@codemcp/workflows"] + "args": ["-y", "@codemcp/workflows-server"] } } } @@ -85,9 +85,9 @@ For unsupported agents or custom configurations: ```json { "mcpServers": { - "ade-workflows": { + "workflows": { "command": "npx", - "args": ["-y", "@codemcp/workflows"] + "args": ["-y", "@codemcp/workflows-server"] } } } diff --git a/packages/docs/user/beads-integration.md b/packages/docs/user/beads-integration.md index e552eef9..5850140c 100644 --- a/packages/docs/user/beads-integration.md +++ b/packages/docs/user/beads-integration.md @@ -1,6 +1,6 @@ -# Beads Integration for Responsible-Vibe-MCP +# Beads Integration for Workflows Server -Integration between responsible-vibe-mcp and [beads distributed issue tracker](https://github.com/steveyegge/beads) for enhanced AI agent task management. +Integration between the workflows server and [beads distributed issue tracker](https://github.com/steveyegge/beads) for enhanced AI agent task management. ## Overview diff --git a/packages/docs/user/crowd-mcp-integration.md b/packages/docs/user/crowd-mcp-integration.md index e514773b..30a49d2c 100644 --- a/packages/docs/user/crowd-mcp-integration.md +++ b/packages/docs/user/crowd-mcp-integration.md @@ -11,7 +11,7 @@ Responsible-Vibe-MCP supports **collaborative workflows** that enable teams of s Use the CLI to copy pre-configured agent definitions to your project: ```bash -npx responsible-vibe-mcp@latest agents copy +npx @codemcp/workflows@latest agents copy ``` This creates three agent configurations in `.crowd/agents/`: @@ -25,14 +25,14 @@ Each agent is pre-configured with: - `VIBE_ROLE` environment variable (business-analyst, architect, or developer) - `VIBE_WORKFLOW_DOMAINS=sdd-crowd` to access collaborative workflows - System prompts explaining team collaboration -- MCP server connection to responsible-vibe-mcp +- MCP server connection to workflows server ### 2. Give This Prompt to Your Orchestrator Copy this prompt and give it to your orchestrating agent (the one with access to crowd-mcp tools): ``` -You are orchestrating a team of AI agents using crowd-mcp and responsible-vibe-mcp. +You are orchestrating a team of AI agents using crowd-mcp and the workflows server. ## Agent Discovery @@ -245,7 +245,7 @@ mcpServers: responsible-vibe: type: stdio command: npx - args: [responsible-vibe-mcp@latest] + args: [@codemcp/workflows-server@latest] env: VIBE_ROLE: business-analyst VIBE_WORKFLOW_DOMAINS: sdd-crowd diff --git a/packages/docs/user/git-commit-feature.md b/packages/docs/user/git-commit-feature.md index d32decc0..99507805 100644 --- a/packages/docs/user/git-commit-feature.md +++ b/packages/docs/user/git-commit-feature.md @@ -1,6 +1,6 @@ # Git Commits -responsible-vibe-mcp server supports configurable automatic git commits during development. This allows for simpler rollbacks – independent of whether the agent itself supports rollbacks (which usually only roll-back conversation history). +The workflows server supports configurable automatic git commits during development. This allows for simpler rollbacks – independent of whether the agent itself supports rollbacks (which usually only roll-back conversation history). ## Configuration diff --git a/packages/mcp-server/src/index.ts b/packages/mcp-server/src/index.ts index d0112fae..3a7d1502 100644 --- a/packages/mcp-server/src/index.ts +++ b/packages/mcp-server/src/index.ts @@ -82,7 +82,7 @@ async function main() { // More robust check that works with npx and direct execution const isMainModule = import.meta.url === `file://${process.argv[1]}` || - process.argv[1]?.endsWith('responsible-vibe-mcp') || + process.argv[1]?.endsWith('@codemcp/workflows-server') || process.argv[1]?.endsWith('index.js'); if (isMainModule) { diff --git a/packages/mcp-server/src/plugin-system/beads-plugin.ts b/packages/mcp-server/src/plugin-system/beads-plugin.ts index 945a9fe9..aa4ce0d1 100644 --- a/packages/mcp-server/src/plugin-system/beads-plugin.ts +++ b/packages/mcp-server/src/plugin-system/beads-plugin.ts @@ -1,7 +1,7 @@ /** * Beads Plugin Implementation * - * Plugin that integrates beads task management system with responsible-vibe-mcp. + * Plugin that integrates beads task management system with the workflows server. * Encapsulates ALL beads-specific functionality to maintain zero core application * coupling as specified in plugin architecture design. * diff --git a/packages/mcp-server/src/plugin-system/index.ts b/packages/mcp-server/src/plugin-system/index.ts index d93f7cd1..4d2bdf99 100644 --- a/packages/mcp-server/src/plugin-system/index.ts +++ b/packages/mcp-server/src/plugin-system/index.ts @@ -1,7 +1,7 @@ /** * Plugin system exports * - * This module provides the core plugin system for extending responsible-vibe-mcp + * This module provides the core plugin system for extending the workflows server * functionality without if-statements in the core application. */ diff --git a/packages/mcp-server/src/plugin-system/plugin-interfaces.ts b/packages/mcp-server/src/plugin-system/plugin-interfaces.ts index 6f94ab92..79b6b2fd 100644 --- a/packages/mcp-server/src/plugin-system/plugin-interfaces.ts +++ b/packages/mcp-server/src/plugin-system/plugin-interfaces.ts @@ -1,5 +1,5 @@ /** - * Plugin system interfaces for extending the responsible-vibe-mcp server + * Plugin system interfaces for extending the workflows server * * Core Principle: Plugins receive only read-only context data and cannot * directly manipulate core server components. They extend behavior through diff --git a/packages/mcp-server/src/server-config.ts b/packages/mcp-server/src/server-config.ts index de4e72b6..054f251b 100644 --- a/packages/mcp-server/src/server-config.ts +++ b/packages/mcp-server/src/server-config.ts @@ -87,7 +87,7 @@ export async function initializeServerComponents( // Initialize MCP server const mcpServer = new McpServer( { - name: 'responsible-vibe-mcp', + name: 'workflows', version: '1.0.0', }, { @@ -482,7 +482,7 @@ export async function registerMcpTools( 'get_tool_info', { description: - 'Get comprehensive information about the responsible-vibe-mcp development workflow tools for better tool discoverability and AI integration. Returns detailed information about all available tools, workflows, core concepts, and usage guidelines.', + 'Get comprehensive information about the workflows development workflow tools for better tool discoverability and AI integration. Returns detailed information about all available tools, workflows, core concepts, and usage guidelines.', inputSchema: { // No input parameters needed }, @@ -668,7 +668,7 @@ export function registerMcpResources( 'system-prompt://', { description: - 'Complete system prompt for LLM integration with responsible-vibe-mcp. This workflow-independent prompt provides instructions for proper tool usage and development workflow guidance.', + 'Complete system prompt for LLM integration with the workflows server. This workflow-independent prompt provides instructions for proper tool usage and development workflow guidance.', mimeType: 'text/plain', }, async (uri: URL) => { diff --git a/packages/mcp-server/src/tool-handlers/get-tool-info.ts b/packages/mcp-server/src/tool-handlers/get-tool-info.ts index c81b7920..33b75c8d 100644 --- a/packages/mcp-server/src/tool-handlers/get-tool-info.ts +++ b/packages/mcp-server/src/tool-handlers/get-tool-info.ts @@ -1,7 +1,7 @@ /** * Get Tool Info Handler * - * Provides comprehensive information about the responsible-vibe-mcp development + * Provides comprehensive information about the workflows development * workflow tools for better tool discoverability and AI integration. */ diff --git a/resources/templates/skills/SKILL.md b/resources/templates/skills/SKILL.md index b71cb0e8..d9d345e7 100644 --- a/resources/templates/skills/SKILL.md +++ b/resources/templates/skills/SKILL.md @@ -11,9 +11,9 @@ metadata: repository: https://github.com/mrsimpson/responsible-vibe-mcp author: mrsimpson requires-mcp-servers: - - name: responsible-vibe-workflows - package: '@codemcp/workflows' + - name: workflows + package: '@codemcp/workflows-server' description: 'Structured development workflows for AI-assisted coding' command: npx - args: ['-y', '@codemcp/workflows'] + args: ['-y', '@codemcp/workflows-server'] --- From 6bd613bc4cb127b54a9a0db770a6e56f3fe3d8b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20J=C3=A4gle?= Date: Thu, 12 Mar 2026 12:55:13 +0100 Subject: [PATCH 12/14] fix: update test expectations to use 'workflows' key instead of 'responsible-vibe-mcp' - Updated agent YAML files to use @codemcp/workflows-server@latest - Updated skill-generator.test.ts expectations for 'workflows' key - Updated config-generator.test.ts expectations for 'workflows' key - Updated cli-agents.test.ts to expect new package name --- packages/cli/test/config-generator.test.ts | 31 +++++++-------- packages/cli/test/skill-generator.test.ts | 45 +++++++++------------- resources/agents/architect.yaml | 4 +- resources/agents/business-analyst.yaml | 4 +- resources/agents/developer.yaml | 4 +- test/integration/cli-agents.test.ts | 2 +- 6 files changed, 39 insertions(+), 51 deletions(-) diff --git a/packages/cli/test/config-generator.test.ts b/packages/cli/test/config-generator.test.ts index db088b2f..4947477e 100644 --- a/packages/cli/test/config-generator.test.ts +++ b/packages/cli/test/config-generator.test.ts @@ -37,8 +37,8 @@ describe('Config Generator', () => { expect(config.name).toBe('vibe'); expect(config.description).toBe('Responsible vibe development'); expect(config.mcpServers).toBeDefined(); - expect(config.tools).toContain('@responsible-vibe-mcp'); - expect(config.allowedTools).toContain('@responsible-vibe-mcp/whats_next'); + expect(config.tools).toContain('@workflows'); + expect(config.allowedTools).toContain('@workflows/whats_next'); }); }); @@ -50,7 +50,7 @@ describe('Config Generator', () => { const claudeMdPath = join(tempDir, 'CLAUDE.md'); expect(existsSync(claudeMdPath)).toBe(true); const claudeContent = readFileSync(claudeMdPath, 'utf-8'); - expect(claudeContent).toContain('responsible-vibe-mcp'); + expect(claudeContent).toContain('whats_next'); // Check .mcp.json const mcpJsonPath = join(tempDir, '.mcp.json'); @@ -62,9 +62,7 @@ describe('Config Generator', () => { const settingsPath = join(tempDir, 'settings.json'); expect(existsSync(settingsPath)).toBe(true); const settings = JSON.parse(readFileSync(settingsPath, 'utf-8')); - expect(settings.permissions.allow).toContain( - 'MCP(responsible-vibe-mcp:whats_next)' - ); + expect(settings.permissions.allow).toContain('MCP(workflows:whats_next)'); }); }); @@ -96,9 +94,9 @@ describe('Config Generator', () => { expect(existsSync(configPath)).toBe(true); const config = JSON.parse(readFileSync(configPath, 'utf-8')); - expect(config.mcp['responsible-vibe-mcp']).toBeDefined(); + expect(config.mcp['workflows']).toBeDefined(); expect(config.agent.vibe).toBeDefined(); - expect(config.agent.vibe.tools['responsible-vibe-mcp*']).toBe(true); + expect(config.agent.vibe.tools['workflows*']).toBe(true); }); }); @@ -110,7 +108,7 @@ describe('Config Generator', () => { const mcpJsonPath = join(tempDir, '.vscode', 'mcp.json'); expect(existsSync(mcpJsonPath)).toBe(true); const mcpConfig = JSON.parse(readFileSync(mcpJsonPath, 'utf-8')); - expect(mcpConfig.servers['responsible-vibe-mcp']).toBeDefined(); + expect(mcpConfig.servers['workflows']).toBeDefined(); // Check .github/agents/Vibe.agent.md const agentPath = join(tempDir, '.github', 'agents', 'Vibe.agent.md'); @@ -120,14 +118,13 @@ describe('Config Generator', () => { // Check YAML frontmatter expect(agentContent).toContain('---'); expect(agentContent).toContain( - 'description: AI assistant that helps users develop software features using the responsible-vibe-mcp server.' + 'description: AI assistant that helps users develop software features using the workflows server.' ); expect(agentContent).toContain( - "tools: ['edit', 'runNotebooks', 'search', 'new', 'runCommands', 'runTasks', 'responsible-vibe-mcp/*'" + "tools: ['edit', 'runNotebooks', 'search', 'new', 'runCommands', 'runTasks', 'workflows/*'" ); // Check system prompt content - expect(agentContent).toContain('responsible-vibe-mcp'); expect(agentContent).toContain('whats_next()'); }); }); @@ -174,7 +171,7 @@ describe('Config Generator', () => { // Verify merge expect(config.customField).toBe('should be preserved'); expect(config.mcp['custom-server']).toBeDefined(); - expect(config.mcp['responsible-vibe-mcp']).toBeDefined(); + expect(config.mcp['workflows']).toBeDefined(); expect(config.agent['custom-agent']).toBeDefined(); expect(config.agent.vibe).toBeDefined(); }); @@ -218,7 +215,7 @@ describe('Config Generator', () => { // Verify merge expect(config.customField).toBe('preserved'); - expect(config.tools).toContain('@responsible-vibe-mcp'); + expect(config.tools).toContain('@workflows'); expect(config.name).toBe('vibe'); }); }); @@ -246,7 +243,7 @@ describe('Config Generator', () => { // Verify merge expect(mcpConfig.mcpServers['custom-server']).toBeDefined(); - expect(mcpConfig.mcpServers['responsible-vibe-mcp']).toBeDefined(); + expect(mcpConfig.mcpServers['workflows']).toBeDefined(); }); it('should merge settings.json with existing permissions', async () => { @@ -270,7 +267,7 @@ describe('Config Generator', () => { // Verify merge expect(settings.permissions.customField).toBe('preserved'); expect(settings.permissions.allow).toContain( - 'MCP(responsible-vibe-mcp:whats_next)' + 'MCP(workflows:whats_next)' ); }); }); @@ -301,7 +298,7 @@ describe('Config Generator', () => { expect(settings.theme).toBe('Default'); expect(settings.customField).toBe('preserved'); expect(settings.mcpServers['existing-server']).toBeDefined(); - expect(settings.mcpServers['responsible-vibe-mcp']).toBeDefined(); + expect(settings.mcpServers['workflows']).toBeDefined(); }); }); }); diff --git a/packages/cli/test/skill-generator.test.ts b/packages/cli/test/skill-generator.test.ts index dd24ad98..5e42f7e0 100644 --- a/packages/cli/test/skill-generator.test.ts +++ b/packages/cli/test/skill-generator.test.ts @@ -84,7 +84,6 @@ describe('Skill Generator', () => { // Check content includes system prompt (dynamically generated) expect(content).toContain('whats_next'); - expect(content).toContain('responsible-vibe-mcp'); }); it('should generate valid MCP config', async () => { @@ -94,14 +93,10 @@ describe('Skill Generator', () => { const config = JSON.parse(readFileSync(mcpPath, 'utf-8')); expect(config.mcpServers).toBeDefined(); - expect(config.mcpServers['responsible-vibe-mcp']).toBeDefined(); + expect(config.mcpServers['workflows']).toBeDefined(); // command should be an array - expect( - Array.isArray(config.mcpServers['responsible-vibe-mcp'].command) - ).toBe(true); - expect(config.mcpServers['responsible-vibe-mcp'].command).toContain( - 'npx' - ); + expect(Array.isArray(config.mcpServers['workflows'].command)).toBe(true); + expect(config.mcpServers['workflows'].command).toContain('npx'); }); }); @@ -149,15 +144,13 @@ describe('Skill Generator', () => { // OpenCode uses 'mcp' key with specific structure expect(config.$schema).toBe('https://opencode.ai/config.json'); expect(config.mcp).toBeDefined(); - expect(config.mcp['responsible-vibe-mcp']).toBeDefined(); - expect(config.mcp['responsible-vibe-mcp'].type).toBe('local'); + expect(config.mcp['workflows']).toBeDefined(); + expect(config.mcp['workflows'].type).toBe('local'); // command should be an array - expect(Array.isArray(config.mcp['responsible-vibe-mcp'].command)).toBe( - true - ); - expect(config.mcp['responsible-vibe-mcp'].command).toContain('npx'); - expect(config.mcp['responsible-vibe-mcp'].command).toContain( - '@codemcp/workflows@latest' + expect(Array.isArray(config.mcp['workflows'].command)).toBe(true); + expect(config.mcp['workflows'].command).toContain('npx'); + expect(config.mcp['workflows'].command).toContain( + '@codemcp/workflows-server@latest' ); }); }); @@ -187,7 +180,7 @@ describe('Skill Generator', () => { // Copilot uses 'servers' key expect(config.servers).toBeDefined(); - expect(config.servers['responsible-vibe-mcp']).toBeDefined(); + expect(config.servers['workflows']).toBeDefined(); }); }); @@ -236,7 +229,6 @@ describe('Skill Generator', () => { // Verify it includes the dynamic system prompt content expect(content).toContain('whats_next'); - expect(content).toContain('responsible-vibe-mcp'); }); it('should bundle MCP config inside power directory', async () => { @@ -252,11 +244,11 @@ describe('Skill Generator', () => { const config = JSON.parse(readFileSync(mcpPath, 'utf-8')); expect(config.mcpServers).toBeDefined(); - expect(config.mcpServers['responsible-vibe-mcp']).toBeDefined(); + expect(config.mcpServers['workflows']).toBeDefined(); // Kiro uses command + args format - expect(config.mcpServers['responsible-vibe-mcp'].command).toBe('npx'); - expect(config.mcpServers['responsible-vibe-mcp'].args).toContain( - '@codemcp/workflows@latest' + expect(config.mcpServers['workflows'].command).toBe('npx'); + expect(config.mcpServers['workflows'].args).toContain( + '@codemcp/workflows-server@latest' ); }); }); @@ -303,7 +295,6 @@ describe('Skill Generator', () => { // Verify it includes the dynamic system prompt content expect(content).toContain('whats_next'); - expect(content).toContain('responsible-vibe-mcp'); }); it('should generate MCP config with command + args format', async () => { @@ -313,11 +304,11 @@ describe('Skill Generator', () => { const config = JSON.parse(readFileSync(mcpPath, 'utf-8')); expect(config.mcpServers).toBeDefined(); - expect(config.mcpServers['responsible-vibe-mcp']).toBeDefined(); + expect(config.mcpServers['workflows']).toBeDefined(); // Kiro CLI uses command + args format (not array) - expect(config.mcpServers['responsible-vibe-mcp'].command).toBe('npx'); - expect(config.mcpServers['responsible-vibe-mcp'].args).toContain( - '@codemcp/workflows@latest' + expect(config.mcpServers['workflows'].command).toBe('npx'); + expect(config.mcpServers['workflows'].args).toContain( + '@codemcp/workflows-server@latest' ); }); diff --git a/resources/agents/architect.yaml b/resources/agents/architect.yaml index e4e28395..cf50d89d 100644 --- a/resources/agents/architect.yaml +++ b/resources/agents/architect.yaml @@ -45,11 +45,11 @@ llmSettings: reasoningEffort: medium mcpServers: - responsible-vibe: + workflows: type: stdio command: npx args: - - responsible-vibe-mcp@latest + - '@codemcp/workflows-server@latest' env: VIBE_ROLE: architect VIBE_WORKFLOW_DOMAINS: sdd-crowd diff --git a/resources/agents/business-analyst.yaml b/resources/agents/business-analyst.yaml index 8798f7fa..5479163e 100644 --- a/resources/agents/business-analyst.yaml +++ b/resources/agents/business-analyst.yaml @@ -45,11 +45,11 @@ llmSettings: reasoningEffort: medium mcpServers: - responsible-vibe: + workflows: type: stdio command: npx args: - - responsible-vibe-mcp@latest + - '@codemcp/workflows-server@latest' env: VIBE_ROLE: business-analyst VIBE_WORKFLOW_DOMAINS: sdd-crowd diff --git a/resources/agents/developer.yaml b/resources/agents/developer.yaml index c386bc86..ac0acdb4 100644 --- a/resources/agents/developer.yaml +++ b/resources/agents/developer.yaml @@ -45,11 +45,11 @@ llmSettings: reasoningEffort: low mcpServers: - responsible-vibe: + workflows: type: stdio command: npx args: - - responsible-vibe-mcp@latest + - '@codemcp/workflows-server@latest' env: VIBE_ROLE: developer VIBE_WORKFLOW_DOMAINS: sdd-crowd diff --git a/test/integration/cli-agents.test.ts b/test/integration/cli-agents.test.ts index c11f5a88..71f10026 100644 --- a/test/integration/cli-agents.test.ts +++ b/test/integration/cli-agents.test.ts @@ -87,7 +87,7 @@ describe('CLI Agents Commands', () => { expect(content).toContain('displayName: Business Analyst'); expect(content).toContain('VIBE_ROLE: business-analyst'); expect(content).toContain('VIBE_WORKFLOW_DOMAINS: sdd-crowd'); - expect(content).toContain('responsible-vibe-mcp@latest'); + expect(content).toContain("'@codemcp/workflows-server@latest'"); }); it('should copy agents to custom output directory', () => { From 6a44adb64a17770a854c839b38b832caeb290962 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20J=C3=A4gle?= Date: Thu, 12 Mar 2026 13:02:41 +0100 Subject: [PATCH 13/14] fix: update remaining test expectations for 'workflows server' in system prompt --- packages/mcp-server/test/unit/resume-workflow.test.ts | 2 +- packages/mcp-server/test/unit/system-prompt-resource.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/mcp-server/test/unit/resume-workflow.test.ts b/packages/mcp-server/test/unit/resume-workflow.test.ts index 374850f2..4437274b 100644 --- a/packages/mcp-server/test/unit/resume-workflow.test.ts +++ b/packages/mcp-server/test/unit/resume-workflow.test.ts @@ -63,7 +63,7 @@ describe('resume_workflow tool', () => { // Streamlined prompt is ~400-600 chars (was 2000+ before) expect(result.system_prompt.length).toBeGreaterThan(200); expect(result.system_prompt.length).toBeLessThan(1000); - expect(result.system_prompt).toContain('responsible-vibe-mcp'); + expect(result.system_prompt).toContain('workflows server'); }); it('should exclude system prompt when requested', async () => { diff --git a/packages/mcp-server/test/unit/system-prompt-resource.test.ts b/packages/mcp-server/test/unit/system-prompt-resource.test.ts index bf56569c..8f142dbb 100644 --- a/packages/mcp-server/test/unit/system-prompt-resource.test.ts +++ b/packages/mcp-server/test/unit/system-prompt-resource.test.ts @@ -34,7 +34,7 @@ describe('System Prompt Resource', () => { expect(data.text).toContain( 'You are an AI assistant that helps users develop software features' ); - expect(data.text).toContain('responsible-vibe-mcp'); + expect(data.text).toContain('workflows server'); expect(data.text).toContain('whats_next()'); expect(data.text).toContain('instructions'); expect(data.text).toContain('development plan'); From f94675b934d0bdf235fbf9f990f3c7e82d6c90d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20J=C3=A4gle?= Date: Thu, 12 Mar 2026 13:26:42 +0100 Subject: [PATCH 14/14] fix: correct path resolution for workflow resources in bundled package The workflow resource handler was navigating 4 levels up from the bundled dist/index.js, which went outside the package directory. Since tsup bundles everything into dist/index.js, we only need to go 1 level up from dist/ to reach the package root where resources/ lives. --- .../resource-handlers/workflow-resource.ts | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/packages/mcp-server/src/resource-handlers/workflow-resource.ts b/packages/mcp-server/src/resource-handlers/workflow-resource.ts index 219738ed..023344f2 100644 --- a/packages/mcp-server/src/resource-handlers/workflow-resource.ts +++ b/packages/mcp-server/src/resource-handlers/workflow-resource.ts @@ -56,25 +56,20 @@ export class WorkflowResourceHandler implements ResourceHandler { const currentFileUrl = import.meta.url; const currentFilePath = fileURLToPath(currentFileUrl); - // Navigate from the compiled location to the project root - // From dist/server/resource-handlers/workflow-resource.js -> project root - let projectRoot: string; + // Navigate from the compiled location to the package root + // tsup bundles everything into dist/index.js, so we only need to go up 1 level from dist/ + let packageRoot: string; if (currentFilePath.includes('/dist/')) { - // Running from compiled code - from packages/mcp-server/dist/resource-handlers/ to project root is 4 levels up - projectRoot = path.resolve( - path.dirname(currentFilePath), - '../../../../' - ); + // Running from compiled/bundled code - dist/index.js -> package root is 1 level up from dist/ + const distDir = path.dirname(currentFilePath); + packageRoot = path.resolve(distDir, '..'); } else { - // Running from source (development) - src is 4 levels down from project root - projectRoot = path.resolve( - path.dirname(currentFilePath), - '../../../../' - ); + // Running from source (development) - src/resource-handlers/ -> package root is 2 levels up + packageRoot = path.resolve(path.dirname(currentFilePath), '../../'); } const workflowFile = path.join( - projectRoot, + packageRoot, 'resources', 'workflows', `${workflowName}.yaml` @@ -83,7 +78,7 @@ export class WorkflowResourceHandler implements ResourceHandler { if (!fs.existsSync(workflowFile)) { // Try .yml extension const workflowFileYml = path.join( - projectRoot, + packageRoot, 'resources', 'workflows', `${workflowName}.yml` @@ -96,12 +91,12 @@ export class WorkflowResourceHandler implements ResourceHandler { { workflowName, currentFilePath, - projectRoot, + packageRoot, workflowFile, workflowFileYml, - workflowsDir: path.join(projectRoot, 'resources', 'workflows'), + workflowsDir: path.join(packageRoot, 'resources', 'workflows'), workflowsDirExists: fs.existsSync( - path.join(projectRoot, 'resources', 'workflows') + path.join(packageRoot, 'resources', 'workflows') ), } );