@agiflowai/scaffold-mcp 1.0.7 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,82 +1,33 @@
1
1
  # @agiflowai/scaffold-mcp
2
2
 
3
- A Model Context Protocol (MCP) server for scaffolding applications with boilerplate templates and feature generators. Supports multiple transport modes: **stdio**, **HTTP**, **SSE**, and **CLI**.
3
+ > MCP server for scaffolding applications with templates and feature generators
4
4
 
5
- ## Features
5
+ Generate consistent, convention-following code for your AI coding agents. scaffold-mcp provides templates for common patterns (routes, components, services) so agents don't write boilerplate from scratch.
6
6
 
7
- - **Boilerplate scaffolding**: Generate complete application structures from templates
8
- - **Feature scaffolding**: Add features to existing projects with custom generators
9
- - **Custom generators**: Template-specific TypeScript generators for advanced scaffolding logic
10
- - **Liquid templating**: Use powerful templating engine for dynamic file generation
11
- - **Variable replacement**: Customize generated code with context-aware variable substitution
12
- - **Dynamic template discovery**: Automatically finds templates in your workspace
13
- - **Multiple frameworks**: Support for Next.js, Vite React, and custom boilerplates
14
- - **Multiple modes**: MCP server mode (stdio/HTTP/SSE) and standalone CLI mode
15
- - **MCP integration**: Seamlessly works with Claude Code and other MCP-compatible clients
7
+ ## Why Use This?
16
8
 
17
- ## Installation
9
+ When you ask an AI agent to "add a new page," it generates working code—but not necessarily code that follows your team's patterns. scaffold-mcp solves this by:
18
10
 
19
- ```bash
20
- pnpm install @agiflowai/scaffold-mcp
21
- ```
11
+ 1. **Providing templates** for common patterns your team has standardized
12
+ 2. **Enforcing structure** so every route, component, or service looks the same
13
+ 3. **Reducing boilerplate** by generating the repetitive parts automatically
22
14
 
23
- ## Usage
15
+ Think of it as "Rails generators" or "Angular schematics" for any stack.
24
16
 
25
- ### 1. MCP Server
17
+ ---
26
18
 
27
- Run scaffold-mcp as an MCP server to integrate with Claude Code or other MCP clients.
19
+ ## Quick Start
28
20
 
29
- #### Starting the Server
21
+ ### 1. Install Templates
30
22
 
31
23
  ```bash
32
- # stdio transport (default) - for Claude Code
33
- npx @agiflowai/scaffold-mcp mcp-serve
34
-
35
- # HTTP transport - for web applications
36
- npx @agiflowai/scaffold-mcp mcp-serve --type http --port 3000
37
-
38
- # SSE transport - for legacy clients
39
- npx @agiflowai/scaffold-mcp mcp-serve --type sse --port 3000
40
-
41
- # Enable admin mode (template generation tools)
42
- npx @agiflowai/scaffold-mcp mcp-serve --admin-enable
24
+ # Downloads built-in templates to your workspace
25
+ npx @agiflowai/aicode-toolkit init
43
26
  ```
44
27
 
45
- **Server Options:**
46
- - `-t, --type <type>`: Transport type: `stdio`, `http`, or `sse` (default: `stdio`)
47
- - `-p, --port <port>`: Port for HTTP/SSE servers (default: `3000`)
48
- - `--host <host>`: Host to bind to for HTTP/SSE (default: `localhost`)
49
- - `--admin-enable`: Enable admin tools for template generation
50
-
51
- #### Claude Code Configuration
28
+ ### 2. Configure Your AI Agent
52
29
 
53
- Add to your Claude Code config:
54
-
55
- ```json
56
- {
57
- "mcpServers": {
58
- "scaffold-mcp": {
59
- "command": "npx",
60
- "args": ["-y", "@agiflowai/scaffold-mcp", "mcp-serve"]
61
- }
62
- }
63
- }
64
- ```
65
-
66
- Or if installed globally:
67
-
68
- ```json
69
- {
70
- "mcpServers": {
71
- "scaffold-mcp": {
72
- "command": "scaffold-mcp",
73
- "args": ["mcp-serve"]
74
- }
75
- }
76
- }
77
- ```
78
-
79
- **To enable admin tools** (for template creation), add the `--admin-enable` flag:
30
+ Add to your MCP config (`.mcp.json`, `.cursor/mcp.json`, etc.):
80
31
 
81
32
  ```json
82
33
  {
@@ -89,198 +40,245 @@ Or if installed globally:
89
40
  }
90
41
  ```
91
42
 
92
- ### Hooks Integration (Experimental)
43
+ **Flags:**
44
+ - `--admin-enable`: Enables tools for creating new templates (optional, useful during setup)
93
45
 
94
- > **Experimental:** Hooks integration is currently experimental and the API may change in future releases.
46
+ ### 3. Start Using
95
47
 
96
- scaffold-mcp integrates with AI coding agents' hook systems to provide proactive scaffolding guidance when creating new files.
48
+ Your AI agent now has access to scaffolding tools:
97
49
 
98
- **Quick setup for Claude Code** (`.claude/settings.json`):
50
+ ```
51
+ You: "Create a new Next.js app called dashboard"
52
+ Agent: [calls list-boilerplates, then use-boilerplate]
99
53
 
100
- ```json
101
- {
102
- "hooks": {
103
- "PreToolUse": [
104
- {
105
- "matcher": "Write",
106
- "hooks": [
107
- {
108
- "type": "command",
109
- "command": "npx @agiflowai/scaffold-mcp hook --type claude-code.preToolUse"
110
- }
111
- ]
112
- }
113
- ],
114
- "PostToolUse": [
115
- {
116
- "matcher": "mcp__one-mcp__use_tool",
117
- "hooks": [
118
- {
119
- "type": "command",
120
- "command": "npx @agiflowai/scaffold-mcp hook --type claude-code.postToolUse"
121
- }
122
- ]
123
- }
124
- ]
125
- }
126
- }
54
+ You: "Add a products page"
55
+ Agent: [calls list-scaffolding-methods, then use-scaffold-method]
127
56
  ```
128
57
 
129
- For detailed configuration, supported agents, and troubleshooting, see **[Hooks Documentation](./docs/hooks.md)**.
58
+ ---
130
59
 
131
- #### Available MCP Tools
60
+ ## Available Tools
132
61
 
133
- **Standard Tools** (always available):
62
+ ### Standard Tools
134
63
 
135
- 1. **list-boilerplates**: List all available project boilerplates
136
- - Returns: Array of boilerplate configurations with schemas
64
+ | Tool | Purpose | When to Use |
65
+ |------|---------|-------------|
66
+ | `list-boilerplates` | Show available project templates | Starting a new project |
67
+ | `use-boilerplate` | Create project from template | After choosing a template |
68
+ | `list-scaffolding-methods` | Show features for a project | Adding to existing project |
69
+ | `use-scaffold-method` | Add feature to project | After choosing a feature |
70
+ | `write-to-file` | Write content to file | Custom files not in templates |
137
71
 
138
- 2. **use-boilerplate**: Create a new project from a boilerplate template
139
- - Arguments:
140
- - `boilerplateName` (string): Name of the boilerplate
141
- - `variables` (object): Variables matching the boilerplate's schema
72
+ ### Admin Tools (with `--admin-enable`)
142
73
 
143
- 3. **list-scaffolding-methods**: List available features for a project
144
- - Arguments:
145
- - `projectPath` (string): Absolute path to project directory
74
+ | Tool | Purpose | When to Use |
75
+ |------|---------|-------------|
76
+ | `generate-boilerplate` | Create new project template | Building custom templates |
77
+ | `generate-feature-scaffold` | Create new feature scaffold | Adding feature generators |
78
+ | `generate-boilerplate-file` | Add files to templates | Populating template files |
146
79
 
147
- 4. **use-scaffold-method**: Add a feature to an existing project
148
- - Arguments:
149
- - `projectPath` (string): Absolute path to project directory
150
- - `scaffold_feature_name` (string): Name of the feature to add
151
- - `variables` (object): Variables for the feature
80
+ ---
152
81
 
153
- 5. **write-to-file**: Write content to a file
154
- - Arguments:
155
- - `file_path` (string): Path to the file
156
- - `content` (string): Content to write
82
+ ## How It Works
157
83
 
158
- **Admin Tools** (enabled with `--admin-enable` flag):
84
+ ```
85
+ Your Project Templates Directory
86
+ ───────────── ───────────────────
87
+ apps/
88
+ ├── my-app/ templates/
89
+ │ ├── project.json ──────────────► └── nextjs-15/
90
+ │ │ └── sourceTemplate: "nextjs-15" ├── scaffold.yaml ← Defines what can be generated
91
+ │ └── src/ ├── architect.yaml ← Design patterns (optional)
92
+ │ └── app/ ├── RULES.yaml ← Coding rules (optional)
93
+ │ └── page.tsx └── src/ ← Template files (.liquid)
94
+ ```
159
95
 
160
- 6. **generate-boilerplate**: Create a new boilerplate configuration in a template's scaffold.yaml
161
- - Arguments:
162
- - `templateName` (string): Name of the template folder
163
- - `boilerplateName` (string): Name of the boilerplate (kebab-case)
164
- - `description` (string): Detailed description
165
- - `targetFolder` (string): Target folder for projects
166
- - `variables` (array): Variable definitions with schema
167
- - `includes` (array): Template files to include
168
- - `instruction` (string, optional): Usage instructions
96
+ 1. **Templates define patterns**: Each template has a `scaffold.yaml` that defines boilerplates and features
97
+ 2. **Projects reference templates**: Your `project.json` has a `sourceTemplate` field pointing to the template
98
+ 3. **Tools generate code**: MCP tools read the template and generate files in your project
169
99
 
170
- 7. **generate-feature-scaffold**: Create a new feature configuration in a template's scaffold.yaml
171
- - Arguments:
172
- - `templateName` (string): Name of the template folder
173
- - `featureName` (string): Name of the feature (kebab-case)
174
- - `description` (string): Feature description
175
- - `variables` (array): Variable definitions with schema
176
- - `includes` (array, optional): Template files to include
177
- - `patterns` (array, optional): File patterns this feature works with
178
- - `instruction` (string, optional): Usage instructions
100
+ ---
179
101
 
180
- 8. **generate-boilerplate-file**: Create template files for boilerplates or features
181
- - Arguments:
182
- - `templateName` (string): Name of the template folder
183
- - `filePath` (string): Path of the file within the template
184
- - `content` (string): File content with Liquid variables
185
- - `header` (string, optional): Header comment for AI hints
186
- - `sourceFile` (string, optional): Copy from existing source file
102
+ ## Built-in Templates
187
103
 
188
- ### 2. CLI Commands
104
+ | Template | Stack | What You Can Generate |
105
+ |----------|-------|----------------------|
106
+ | `nextjs-15-drizzle` | Next.js 15 + App Router | Pages, layouts, components, API routes |
107
+ | `typescript-lib` | TypeScript library | Library structure, tests |
108
+ | `typescript-mcp-package` | MCP server | CLI commands, MCP tools |
189
109
 
190
- Use scaffold-mcp as a standalone CLI tool for scaffolding projects and adding features.
110
+ ---
191
111
 
192
- **Note:** Template management (init, add) is now handled by the `@agiflowai/aicode-toolkit` CLI. See [aicode-toolkit documentation](../../apps/aicode-toolkit/README.md) for details.
112
+ ## CLI Commands
193
113
 
194
- #### Boilerplate Commands
114
+ scaffold-mcp also works as a standalone CLI:
195
115
 
196
116
  ```bash
197
117
  # List available boilerplates
198
- scaffold-mcp boilerplate list
118
+ npx @agiflowai/scaffold-mcp boilerplate list
199
119
 
200
- # Show boilerplate details
201
- scaffold-mcp boilerplate info <boilerplate-name>
120
+ # Get info about a boilerplate
121
+ npx @agiflowai/scaffold-mcp boilerplate info nextjs-15-drizzle
202
122
 
203
123
  # Create project from boilerplate
204
- scaffold-mcp boilerplate create <name> --vars '{"appName":"my-app"}'
205
- scaffold-mcp boilerplate create nextjs-15-boilerplate \
206
- --vars '{"projectName":"my-app","packageName":"@myorg/my-app"}' \
207
- --verbose
124
+ npx @agiflowai/scaffold-mcp boilerplate create nextjs-15-drizzle \
125
+ --vars '{"projectName":"my-app","packageName":"@myorg/my-app"}'
126
+
127
+ # List features for a project
128
+ npx @agiflowai/scaffold-mcp scaffold list ./apps/my-app
129
+
130
+ # Add feature to project
131
+ npx @agiflowai/scaffold-mcp scaffold add scaffold-nextjs-page \
132
+ --project ./apps/my-app \
133
+ --vars '{"pageTitle":"About","nextjsPagePath":"/about"}'
208
134
  ```
209
135
 
210
- #### Scaffold Commands
136
+ ---
137
+
138
+ ## Server Options
211
139
 
212
140
  ```bash
213
- # List scaffolding methods for a project
214
- scaffold-mcp scaffold list ./apps/my-app
141
+ # stdio transport (default) - for Claude Code, Cursor
142
+ npx @agiflowai/scaffold-mcp mcp-serve
215
143
 
216
- # Show scaffold method details
217
- scaffold-mcp scaffold info <feature-name> --project ./apps/my-app
144
+ # HTTP transport - for web applications
145
+ npx @agiflowai/scaffold-mcp mcp-serve --type http --port 3000
218
146
 
219
- # Add feature to project
220
- scaffold-mcp scaffold add <feature> --project ./apps/my-app --vars '{"name":"MyFeature"}'
221
- scaffold-mcp scaffold add scaffold-nextjs-page \
222
- --project ./apps/my-app \
223
- --vars '{"pageTitle":"About Us","nextjsPagePath":"/about"}' \
224
- --verbose
147
+ # SSE transport - for streaming clients
148
+ npx @agiflowai/scaffold-mcp mcp-serve --type sse --port 3000
149
+
150
+ # With admin tools enabled
151
+ npx @agiflowai/scaffold-mcp mcp-serve --admin-enable
225
152
  ```
226
153
 
227
- #### Environment Variables
154
+ | Option | Description | Default |
155
+ |--------|-------------|---------|
156
+ | `-t, --type` | Transport: `stdio`, `http`, `sse` | `stdio` |
157
+ | `-p, --port` | Port for HTTP/SSE | `3000` |
158
+ | `--host` | Host for HTTP/SSE | `localhost` |
159
+ | `--admin-enable` | Enable template creation tools | `false` |
228
160
 
229
- - `MCP_PORT`: Port number for HTTP/SSE servers (default: 3000)
230
- - `MCP_HOST`: Host for HTTP/SSE servers (default: localhost)
161
+ ---
231
162
 
232
- ## Quick Start
163
+ ## Creating Custom Templates
233
164
 
234
- ### 1. Setup Templates
165
+ ### Option 1: Using Admin Tools (Recommended)
235
166
 
236
- For template management (downloading and managing templates), use the `@agiflowai/aicode-toolkit` CLI:
167
+ Ask your AI agent:
168
+ ```
169
+ "Create a boilerplate template for our React + Vite setup"
170
+ ```
237
171
 
238
- ```bash
239
- # Initialize workspace and download templates
240
- npx @agiflowai/aicode-toolkit init
172
+ The agent will use:
173
+ 1. `generate-boilerplate` - Creates scaffold.yaml entry
174
+ 2. `generate-boilerplate-file` - Adds template files
241
175
 
242
- # Add custom templates
243
- npx @agiflowai/aicode-toolkit add --name my-template --url https://github.com/user/template
244
- ```
176
+ ### Option 2: Manually
245
177
 
246
- See the [aicode-toolkit documentation](../../apps/aicode-toolkit/README.md) for complete setup instructions.
178
+ Create the template structure:
247
179
 
248
- ### 2. Create a New Project
180
+ ```
181
+ templates/my-template/
182
+ ├── scaffold.yaml # Required: defines boilerplates and features
183
+ └── src/ # Template files (use .liquid for variable replacement)
184
+ ├── package.json.liquid
185
+ └── src/
186
+ └── index.ts.liquid
187
+ ```
249
188
 
250
- ```bash
251
- # List available boilerplates
252
- scaffold-mcp boilerplate list
189
+ **scaffold.yaml example:**
190
+
191
+ ```yaml
192
+ boilerplate:
193
+ name: my-template-app
194
+ description: My custom application template
195
+ targetFolder: apps
196
+ variables_schema:
197
+ type: object
198
+ properties:
199
+ projectName:
200
+ type: string
201
+ description: Project directory name
202
+ packageName:
203
+ type: string
204
+ description: NPM package name
205
+ required:
206
+ - projectName
207
+ - packageName
208
+ includes:
209
+ - package.json
210
+ - src/index.ts
211
+
212
+ features:
213
+ - name: scaffold-component
214
+ description: Add a React component
215
+ variables_schema:
216
+ type: object
217
+ properties:
218
+ componentName:
219
+ type: string
220
+ description: Component name (PascalCase)
221
+ required:
222
+ - componentName
223
+ includes:
224
+ - src/components/{{ componentName }}/{{ componentName }}.tsx
225
+ ```
253
226
 
254
- # Get info about a specific boilerplate
255
- scaffold-mcp boilerplate info nextjs-15-boilerplate
227
+ **Template file example (package.json.liquid):**
256
228
 
257
- # Create a new Next.js 15 project
258
- scaffold-mcp boilerplate create nextjs-15-boilerplate \
259
- --vars '{"projectName":"my-app","packageName":"@myorg/my-app","appName":"My App"}'
229
+ ```json
230
+ {
231
+ "name": "{{ packageName }}",
232
+ "version": "0.1.0",
233
+ "description": "{{ description | default: 'My application' }}"
234
+ }
260
235
  ```
261
236
 
262
- ### 3. Add Features to Existing Projects
237
+ ---
263
238
 
264
- ```bash
265
- # List available features for your project
266
- scaffold-mcp scaffold list /path/to/your/project
239
+ ## Hooks Integration (Experimental)
240
+
241
+ > **Note:** This feature is experimental and may change.
242
+
243
+ Hooks let scaffold-mcp proactively suggest templates when your AI agent creates files.
267
244
 
268
- # Get info about a specific scaffold method
269
- scaffold-mcp scaffold info scaffold-nextjs-page --project /path/to/your/project
245
+ **Claude Code setup** (`.claude/settings.json`):
270
246
 
271
- # Add a new Next.js page
272
- scaffold-mcp scaffold add scaffold-nextjs-page \
273
- --project /path/to/your/project \
274
- --vars '{"pageTitle":"About Us","pageDescription":"Learn more","nextjsPagePath":"/about"}'
247
+ ```json
248
+ {
249
+ "hooks": {
250
+ "PreToolUse": [
251
+ {
252
+ "matcher": "Write",
253
+ "hooks": [
254
+ {
255
+ "type": "command",
256
+ "command": "npx @agiflowai/scaffold-mcp hook --type claude-code.preToolUse"
257
+ }
258
+ ]
259
+ }
260
+ ]
261
+ }
262
+ }
275
263
  ```
276
264
 
265
+ When Claude tries to write a new file, the hook shows available scaffolding methods that match, so Claude can use templates instead of writing from scratch.
266
+
267
+ See [Hooks Documentation](./docs/hooks.md) for details.
268
+
269
+ ---
270
+
277
271
  ## Documentation
278
272
 
279
- - [CLI Commands](./docs/cli-commands.md) - Complete CLI reference
280
- - [MCP Tools](./docs/mcp-tools.md) - MCP server tools reference
281
- - [Template Conventions](./docs/template-conventions.md) - Guide for creating templates with Liquid syntax
282
- - [Advanced Generators](./docs/advanced-generators.md) - Guide for creating custom TypeScript generators
283
- - [Hooks Integration](./docs/hooks.md) - Guide to integrating scaffold-mcp with AI coding agents via hooks (experimental)
273
+ | Document | Description |
274
+ |----------|-------------|
275
+ | [MCP Tools Reference](./docs/mcp-tools.md) | Detailed tool documentation |
276
+ | [CLI Commands](./docs/cli-commands.md) | Complete CLI reference |
277
+ | [Template Conventions](./docs/template-conventions.md) | How to create templates |
278
+ | [Advanced Generators](./docs/advanced-generators.md) | Custom TypeScript generators |
279
+ | [Hooks Integration](./docs/hooks.md) | AI agent hooks setup |
280
+
281
+ ---
284
282
 
285
283
  ## License
286
284
 
@@ -1,5 +1,5 @@
1
- const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_TemplateService = require('./TemplateService-CAD8jkoO.cjs');
1
+ const require_chunk = require('./chunk-CbDLau6x.cjs');
2
+ const require_TemplateService = require('./TemplateService-7QcWREot.cjs');
3
3
  let node_path = require("node:path");
4
4
  node_path = require_chunk.__toESM(node_path);
5
5
  let __agiflowai_aicode_utils = require("@agiflowai/aicode-utils");
@@ -223,10 +223,10 @@ var ScaffoldingMethodsService = class {
223
223
  const availableMethods = scaffoldingMethods.methods.map((m) => m.name).join(", ");
224
224
  throw new Error(`Scaffold method '${scaffold_feature_name}' not found. Available methods: ${availableMethods}`);
225
225
  }
226
- const ScaffoldService = (await Promise.resolve().then(() => require("./ScaffoldService-Bhzxp5-C.cjs"))).ScaffoldService;
227
- const ScaffoldConfigLoader = (await Promise.resolve().then(() => require("./ScaffoldConfigLoader-BB4_YUFL.cjs"))).ScaffoldConfigLoader;
228
- const VariableReplacementService = (await Promise.resolve().then(() => require("./VariableReplacementService-CNimgwaq.cjs"))).VariableReplacementService;
229
- const TemplateService$1 = (await Promise.resolve().then(() => require("./TemplateService-BrJGDvQt.cjs"))).TemplateService;
226
+ const ScaffoldService = (await Promise.resolve().then(() => require("./ScaffoldService-ybJPks4R.cjs"))).ScaffoldService;
227
+ const ScaffoldConfigLoader = (await Promise.resolve().then(() => require("./ScaffoldConfigLoader-HutEtfaH.cjs"))).ScaffoldConfigLoader;
228
+ const VariableReplacementService = (await Promise.resolve().then(() => require("./VariableReplacementService-wuYKgeui.cjs"))).VariableReplacementService;
229
+ const TemplateService$1 = (await Promise.resolve().then(() => require("./TemplateService-DUbdBOFs.cjs"))).TemplateService;
230
230
  const templateService = new TemplateService$1();
231
231
  const scaffoldConfigLoader = new ScaffoldConfigLoader(this.fileSystem, templateService);
232
232
  const variableReplacer = new VariableReplacementService(this.fileSystem, templateService);
@@ -1,4 +1,4 @@
1
- const require_chunk = require('./chunk-CUT6urMc.cjs');
1
+ const require_chunk = require('./chunk-CbDLau6x.cjs');
2
2
  let node_path = require("node:path");
3
3
  node_path = require_chunk.__toESM(node_path);
4
4
  let js_yaml = require("js-yaml");
@@ -1,3 +1,3 @@
1
- const require_ScaffoldConfigLoader = require('./ScaffoldConfigLoader-CQlXVksz.cjs');
1
+ const require_ScaffoldConfigLoader = require('./ScaffoldConfigLoader-BWpNpMx-.cjs');
2
2
 
3
3
  exports.ScaffoldConfigLoader = require_ScaffoldConfigLoader.ScaffoldConfigLoader;
@@ -1,4 +1,4 @@
1
- const require_chunk = require('./chunk-CUT6urMc.cjs');
1
+ const require_chunk = require('./chunk-CbDLau6x.cjs');
2
2
  let node_path = require("node:path");
3
3
  node_path = require_chunk.__toESM(node_path);
4
4
  let __agiflowai_aicode_utils = require("@agiflowai/aicode-utils");
@@ -0,0 +1,3 @@
1
+ const require_ScaffoldService = require('./ScaffoldService-S6ggnyvn.cjs');
2
+
3
+ exports.ScaffoldService = require_ScaffoldService.ScaffoldService;
@@ -1,4 +1,4 @@
1
- const require_chunk = require('./chunk-CUT6urMc.cjs');
1
+ const require_chunk = require('./chunk-CbDLau6x.cjs');
2
2
  let __agiflowai_aicode_utils = require("@agiflowai/aicode-utils");
3
3
  let liquidjs = require("liquidjs");
4
4
 
@@ -0,0 +1,3 @@
1
+ const require_TemplateService = require('./TemplateService-7QcWREot.cjs');
2
+
3
+ exports.TemplateService = require_TemplateService.TemplateService;
@@ -1,4 +1,4 @@
1
- const require_chunk = require('./chunk-CUT6urMc.cjs');
1
+ const require_chunk = require('./chunk-CbDLau6x.cjs');
2
2
  let node_path = require("node:path");
3
3
  node_path = require_chunk.__toESM(node_path);
4
4
  let __agiflowai_aicode_utils = require("@agiflowai/aicode-utils");
@@ -1,3 +1,3 @@
1
- const require_VariableReplacementService = require('./VariableReplacementService-DDG5KZpb.cjs');
1
+ const require_VariableReplacementService = require('./VariableReplacementService-DNYx0Dym.cjs');
2
2
 
3
3
  exports.VariableReplacementService = require_VariableReplacementService.VariableReplacementService;
@@ -6,12 +6,16 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __getProtoOf = Object.getPrototypeOf;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
8
  var __copyProps = (to, from, except, desc) => {
9
- if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
- key = keys[i];
11
- if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
- get: ((k) => from[k]).bind(null, key),
13
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
- });
9
+ if (from && typeof from === "object" || typeof from === "function") {
10
+ for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
+ key = keys[i];
12
+ if (!__hasOwnProp.call(to, key) && key !== except) {
13
+ __defProp(to, key, {
14
+ get: ((k) => from[k]).bind(null, key),
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ }
15
19
  }
16
20
  return to;
17
21
  };
package/dist/cli.cjs CHANGED
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
- const require_chunk = require('./chunk-CUT6urMc.cjs');
3
- const require_stdio = require('./stdio-BcTSxlVH.cjs');
4
- const require_ListScaffoldingMethodsTool = require('./ListScaffoldingMethodsTool-BuxKRbwi.cjs');
5
- require('./ScaffoldConfigLoader-CQlXVksz.cjs');
6
- require('./ScaffoldService-BPyiY_0B.cjs');
7
- const require_TemplateService = require('./TemplateService-CAD8jkoO.cjs');
8
- require('./VariableReplacementService-DDG5KZpb.cjs');
2
+ const require_chunk = require('./chunk-CbDLau6x.cjs');
3
+ const require_stdio = require('./stdio-BjCeL-i_.cjs');
4
+ const require_ListScaffoldingMethodsTool = require('./ListScaffoldingMethodsTool-9bLDuvy1.cjs');
5
+ require('./ScaffoldConfigLoader-BWpNpMx-.cjs');
6
+ require('./ScaffoldService-S6ggnyvn.cjs');
7
+ const require_TemplateService = require('./TemplateService-7QcWREot.cjs');
8
+ require('./VariableReplacementService-DNYx0Dym.cjs');
9
9
  let node_path = require("node:path");
10
10
  node_path = require_chunk.__toESM(node_path);
11
11
  let __agiflowai_aicode_utils = require("@agiflowai/aicode-utils");
@@ -16,7 +16,7 @@ let __agiflowai_coding_agent_bridge = require("@agiflowai/coding-agent-bridge");
16
16
  let __agiflowai_hooks_adapter = require("@agiflowai/hooks-adapter");
17
17
 
18
18
  //#region package.json
19
- var version = "1.0.6";
19
+ var version = "1.0.8";
20
20
 
21
21
  //#endregion
22
22
  //#region src/commands/boilerplate.ts
@@ -739,7 +739,7 @@ const hookCommand = new commander.Command("hook").description("Execute scaffold
739
739
  }
740
740
  const { agent, hookMethod } = (0, __agiflowai_hooks_adapter.parseHookType)(options.type);
741
741
  if (agent === __agiflowai_coding_agent_bridge.CLAUDE_CODE) {
742
- const useScaffoldMethodModule = await Promise.resolve().then(() => require("./useScaffoldMethod-C1hQdBVD.cjs"));
742
+ const useScaffoldMethodModule = await Promise.resolve().then(() => require("./useScaffoldMethod-FvOmyD91.cjs"));
743
743
  const claudeCallbacks = [];
744
744
  if (useScaffoldMethodModule.UseScaffoldMethodHook) {
745
745
  const hookInstance = new useScaffoldMethodModule.UseScaffoldMethodHook();
@@ -752,7 +752,7 @@ const hookCommand = new commander.Command("hook").description("Execute scaffold
752
752
  }
753
753
  await new __agiflowai_hooks_adapter.ClaudeCodeAdapter().executeMultiple(claudeCallbacks);
754
754
  } else if (agent === __agiflowai_coding_agent_bridge.GEMINI_CLI) {
755
- const useScaffoldMethodModule = await Promise.resolve().then(() => require("./useScaffoldMethod-Btc_9iCj.cjs"));
755
+ const useScaffoldMethodModule = await Promise.resolve().then(() => require("./useScaffoldMethod-DfG9reER.cjs"));
756
756
  const geminiCallbacks = [];
757
757
  if (useScaffoldMethodModule.UseScaffoldMethodHook) {
758
758
  const hookInstance = new useScaffoldMethodModule.UseScaffoldMethodHook();
package/dist/cli.mjs CHANGED
@@ -14,7 +14,7 @@ import { CLAUDE_CODE, GEMINI_CLI } from "@agiflowai/coding-agent-bridge";
14
14
  import { ClaudeCodeAdapter, GeminiCliAdapter, parseHookType } from "@agiflowai/hooks-adapter";
15
15
 
16
16
  //#region package.json
17
- var version = "1.0.6";
17
+ var version = "1.0.8";
18
18
 
19
19
  //#endregion
20
20
  //#region src/commands/boilerplate.ts
package/dist/index.cjs CHANGED
@@ -1,10 +1,10 @@
1
- const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_stdio = require('./stdio-BcTSxlVH.cjs');
3
- const require_ListScaffoldingMethodsTool = require('./ListScaffoldingMethodsTool-BuxKRbwi.cjs');
4
- const require_ScaffoldConfigLoader = require('./ScaffoldConfigLoader-CQlXVksz.cjs');
5
- const require_ScaffoldService = require('./ScaffoldService-BPyiY_0B.cjs');
6
- const require_TemplateService = require('./TemplateService-CAD8jkoO.cjs');
7
- const require_VariableReplacementService = require('./VariableReplacementService-DDG5KZpb.cjs');
1
+ const require_chunk = require('./chunk-CbDLau6x.cjs');
2
+ const require_stdio = require('./stdio-BjCeL-i_.cjs');
3
+ const require_ListScaffoldingMethodsTool = require('./ListScaffoldingMethodsTool-9bLDuvy1.cjs');
4
+ const require_ScaffoldConfigLoader = require('./ScaffoldConfigLoader-BWpNpMx-.cjs');
5
+ const require_ScaffoldService = require('./ScaffoldService-S6ggnyvn.cjs');
6
+ const require_TemplateService = require('./TemplateService-7QcWREot.cjs');
7
+ const require_VariableReplacementService = require('./VariableReplacementService-DNYx0Dym.cjs');
8
8
  let node_path = require("node:path");
9
9
  node_path = require_chunk.__toESM(node_path);
10
10
  let __agiflowai_aicode_utils = require("@agiflowai/aicode-utils");
@@ -1,9 +1,9 @@
1
- const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_ListScaffoldingMethodsTool = require('./ListScaffoldingMethodsTool-BuxKRbwi.cjs');
3
- const require_ScaffoldConfigLoader = require('./ScaffoldConfigLoader-CQlXVksz.cjs');
4
- const require_ScaffoldService = require('./ScaffoldService-BPyiY_0B.cjs');
5
- const require_TemplateService = require('./TemplateService-CAD8jkoO.cjs');
6
- const require_VariableReplacementService = require('./VariableReplacementService-DDG5KZpb.cjs');
1
+ const require_chunk = require('./chunk-CbDLau6x.cjs');
2
+ const require_ListScaffoldingMethodsTool = require('./ListScaffoldingMethodsTool-9bLDuvy1.cjs');
3
+ const require_ScaffoldConfigLoader = require('./ScaffoldConfigLoader-BWpNpMx-.cjs');
4
+ const require_ScaffoldService = require('./ScaffoldService-S6ggnyvn.cjs');
5
+ const require_TemplateService = require('./TemplateService-7QcWREot.cjs');
6
+ const require_VariableReplacementService = require('./VariableReplacementService-DNYx0Dym.cjs');
7
7
  let node_path = require("node:path");
8
8
  node_path = require_chunk.__toESM(node_path);
9
9
  let __agiflowai_aicode_utils = require("@agiflowai/aicode-utils");
@@ -1,6 +1,6 @@
1
- const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_ListScaffoldingMethodsTool = require('./ListScaffoldingMethodsTool-BuxKRbwi.cjs');
3
- require('./TemplateService-CAD8jkoO.cjs');
1
+ const require_chunk = require('./chunk-CbDLau6x.cjs');
2
+ const require_ListScaffoldingMethodsTool = require('./ListScaffoldingMethodsTool-9bLDuvy1.cjs');
3
+ require('./TemplateService-7QcWREot.cjs');
4
4
  let __agiflowai_aicode_utils = require("@agiflowai/aicode-utils");
5
5
  let __agiflowai_hooks_adapter = require("@agiflowai/hooks-adapter");
6
6
 
@@ -1,6 +1,6 @@
1
- const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_ListScaffoldingMethodsTool = require('./ListScaffoldingMethodsTool-BuxKRbwi.cjs');
3
- require('./TemplateService-CAD8jkoO.cjs');
1
+ const require_chunk = require('./chunk-CbDLau6x.cjs');
2
+ const require_ListScaffoldingMethodsTool = require('./ListScaffoldingMethodsTool-9bLDuvy1.cjs');
3
+ require('./TemplateService-7QcWREot.cjs');
4
4
  let node_path = require("node:path");
5
5
  node_path = require_chunk.__toESM(node_path);
6
6
  let __agiflowai_aicode_utils = require("@agiflowai/aicode-utils");
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@agiflowai/scaffold-mcp",
3
3
  "description": "MCP server for scaffolding applications with boilerplate templates",
4
- "version": "1.0.7",
4
+ "version": "1.0.9",
5
5
  "license": "AGPL-3.0",
6
6
  "author": "AgiflowIO",
7
7
  "repository": {
@@ -48,10 +48,10 @@
48
48
  "pino": "^10.0.0",
49
49
  "pino-pretty": "^13.1.1",
50
50
  "zod": "3.25.76",
51
- "@agiflowai/aicode-utils": "1.0.6",
52
- "@agiflowai/architect-mcp": "1.0.7",
53
- "@agiflowai/hooks-adapter": "0.0.2",
54
- "@agiflowai/coding-agent-bridge": "1.0.6"
51
+ "@agiflowai/architect-mcp": "1.0.9",
52
+ "@agiflowai/aicode-utils": "1.0.8",
53
+ "@agiflowai/coding-agent-bridge": "1.0.8",
54
+ "@agiflowai/hooks-adapter": "0.0.4"
55
55
  },
56
56
  "devDependencies": {
57
57
  "@types/express": "^5.0.0",
@@ -1,3 +0,0 @@
1
- const require_ScaffoldService = require('./ScaffoldService-BPyiY_0B.cjs');
2
-
3
- exports.ScaffoldService = require_ScaffoldService.ScaffoldService;
@@ -1,3 +0,0 @@
1
- const require_TemplateService = require('./TemplateService-CAD8jkoO.cjs');
2
-
3
- exports.TemplateService = require_TemplateService.TemplateService;