@frontmcp/skills 0.0.1 → 1.0.0-beta.11
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 +2 -2
- package/catalog/TEMPLATE.md +58 -13
- package/catalog/frontmcp-config/SKILL.md +156 -0
- package/catalog/{auth/configure-auth/references/auth-modes.md → frontmcp-config/references/configure-auth-modes.md} +5 -0
- package/catalog/frontmcp-config/references/configure-auth.md +243 -0
- package/catalog/frontmcp-config/references/configure-elicitation.md +183 -0
- package/catalog/frontmcp-config/references/configure-http.md +210 -0
- package/catalog/frontmcp-config/references/configure-session.md +210 -0
- package/catalog/{config/configure-throttle/references/guard-config.md → frontmcp-config/references/configure-throttle-guard-config.md} +5 -0
- package/catalog/frontmcp-config/references/configure-throttle.md +234 -0
- package/catalog/{config/configure-transport/references/protocol-presets.md → frontmcp-config/references/configure-transport-protocol-presets.md} +5 -0
- package/catalog/frontmcp-config/references/configure-transport.md +200 -0
- package/catalog/frontmcp-config/references/setup-redis.md +9 -0
- package/catalog/frontmcp-config/references/setup-sqlite.md +9 -0
- package/catalog/frontmcp-deployment/SKILL.md +152 -0
- package/catalog/frontmcp-deployment/references/build-for-browser.md +143 -0
- package/catalog/frontmcp-deployment/references/build-for-cli.md +191 -0
- package/catalog/{deployment/build-for-sdk/SKILL.md → frontmcp-deployment/references/build-for-sdk.md} +66 -20
- package/catalog/frontmcp-deployment/references/deploy-to-cloudflare.md +218 -0
- package/catalog/{deployment/deploy-to-lambda/SKILL.md → frontmcp-deployment/references/deploy-to-lambda.md} +77 -59
- package/catalog/{deployment/deploy-to-node/references/Dockerfile.example → frontmcp-deployment/references/deploy-to-node-dockerfile.md} +18 -4
- package/catalog/{deployment/deploy-to-node/SKILL.md → frontmcp-deployment/references/deploy-to-node.md} +69 -36
- package/catalog/frontmcp-deployment/references/deploy-to-vercel-config.md +65 -0
- package/catalog/frontmcp-deployment/references/deploy-to-vercel.md +229 -0
- package/catalog/frontmcp-development/SKILL.md +126 -0
- package/catalog/frontmcp-development/references/create-adapter.md +170 -0
- package/catalog/{development/create-agent/references/llm-config.md → frontmcp-development/references/create-agent-llm-config.md} +10 -5
- package/catalog/{development/create-agent/SKILL.md → frontmcp-development/references/create-agent.md} +83 -40
- package/catalog/{development/create-job/SKILL.md → frontmcp-development/references/create-job.md} +62 -15
- package/catalog/{plugins/create-plugin-hooks/SKILL.md → frontmcp-development/references/create-plugin-hooks.md} +100 -7
- package/catalog/frontmcp-development/references/create-plugin.md +506 -0
- package/catalog/{development/create-prompt/SKILL.md → frontmcp-development/references/create-prompt.md} +65 -22
- package/catalog/{development/create-provider/SKILL.md → frontmcp-development/references/create-provider.md} +63 -23
- package/catalog/{development/create-resource/SKILL.md → frontmcp-development/references/create-resource.md} +148 -26
- package/catalog/{development/create-skill-with-tools/SKILL.md → frontmcp-development/references/create-skill-with-tools.md} +174 -20
- package/catalog/{development/create-skill/SKILL.md → frontmcp-development/references/create-skill.md} +114 -28
- package/catalog/{development/create-tool/references/tool-annotations.md → frontmcp-development/references/create-tool-annotations.md} +5 -0
- package/catalog/{development/create-tool/references/output-schema-types.md → frontmcp-development/references/create-tool-output-schema-types.md} +5 -0
- package/catalog/{development/create-tool/SKILL.md → frontmcp-development/references/create-tool.md} +172 -23
- package/catalog/{development/create-workflow/SKILL.md → frontmcp-development/references/create-workflow.md} +61 -14
- package/catalog/frontmcp-development/references/decorators-guide.md +754 -0
- package/catalog/frontmcp-development/references/official-adapters.md +199 -0
- package/catalog/{plugins/official-plugins/SKILL.md → frontmcp-development/references/official-plugins.md} +97 -27
- package/catalog/frontmcp-extensibility/SKILL.md +103 -0
- package/catalog/frontmcp-extensibility/references/vectoriadb.md +289 -0
- package/catalog/frontmcp-guides/SKILL.md +420 -0
- package/catalog/frontmcp-guides/references/example-knowledge-base.md +641 -0
- package/catalog/frontmcp-guides/references/example-task-manager.md +517 -0
- package/catalog/frontmcp-guides/references/example-weather-api.md +297 -0
- package/catalog/frontmcp-production-readiness/SKILL.md +98 -0
- package/catalog/frontmcp-production-readiness/references/common-checklist.md +156 -0
- package/catalog/frontmcp-production-readiness/references/production-browser.md +46 -0
- package/catalog/frontmcp-production-readiness/references/production-cli-binary.md +62 -0
- package/catalog/frontmcp-production-readiness/references/production-cli-daemon.md +61 -0
- package/catalog/frontmcp-production-readiness/references/production-cloudflare.md +52 -0
- package/catalog/frontmcp-production-readiness/references/production-lambda.md +53 -0
- package/catalog/frontmcp-production-readiness/references/production-node-sdk.md +66 -0
- package/catalog/frontmcp-production-readiness/references/production-node-server.md +61 -0
- package/catalog/frontmcp-production-readiness/references/production-vercel.md +52 -0
- package/catalog/frontmcp-setup/SKILL.md +132 -0
- package/catalog/frontmcp-setup/references/frontmcp-skills-usage.md +280 -0
- package/catalog/{setup/multi-app-composition/SKILL.md → frontmcp-setup/references/multi-app-composition.md} +66 -19
- package/catalog/{setup/nx-workflow/SKILL.md → frontmcp-setup/references/nx-workflow.md} +79 -17
- package/catalog/frontmcp-setup/references/project-structure-nx.md +251 -0
- package/catalog/frontmcp-setup/references/project-structure-standalone.md +217 -0
- package/catalog/frontmcp-setup/references/readme-guide.md +226 -0
- package/catalog/{setup/setup-project/SKILL.md → frontmcp-setup/references/setup-project.md} +63 -58
- package/catalog/{setup/setup-redis/SKILL.md → frontmcp-setup/references/setup-redis.md} +60 -82
- package/catalog/{setup/setup-sqlite/SKILL.md → frontmcp-setup/references/setup-sqlite.md} +65 -72
- package/catalog/frontmcp-testing/SKILL.md +135 -0
- package/catalog/{testing/setup-testing/SKILL.md → frontmcp-testing/references/setup-testing.md} +79 -63
- package/catalog/{testing/setup-testing → frontmcp-testing}/references/test-auth.md +5 -0
- package/catalog/{testing/setup-testing → frontmcp-testing}/references/test-browser-build.md +5 -0
- package/catalog/{testing/setup-testing → frontmcp-testing}/references/test-cli-binary.md +5 -0
- package/catalog/{testing/setup-testing → frontmcp-testing}/references/test-direct-client.md +5 -0
- package/catalog/{testing/setup-testing → frontmcp-testing}/references/test-e2e-handler.md +5 -0
- package/catalog/{testing/setup-testing → frontmcp-testing}/references/test-tool-unit.md +6 -0
- package/catalog/skills-manifest.json +337 -382
- package/package.json +2 -2
- package/src/index.d.ts +1 -1
- package/src/index.js.map +1 -1
- package/src/loader.js +0 -1
- package/src/loader.js.map +1 -1
- package/src/manifest.d.ts +15 -3
- package/src/manifest.js +3 -3
- package/src/manifest.js.map +1 -1
- package/catalog/adapters/create-adapter/SKILL.md +0 -127
- package/catalog/adapters/official-adapters/SKILL.md +0 -136
- package/catalog/auth/configure-auth/SKILL.md +0 -250
- package/catalog/auth/configure-session/SKILL.md +0 -201
- package/catalog/config/configure-elicitation/SKILL.md +0 -136
- package/catalog/config/configure-http/SKILL.md +0 -167
- package/catalog/config/configure-throttle/SKILL.md +0 -189
- package/catalog/config/configure-transport/SKILL.md +0 -151
- package/catalog/deployment/build-for-browser/SKILL.md +0 -95
- package/catalog/deployment/build-for-cli/SKILL.md +0 -100
- package/catalog/deployment/deploy-to-cloudflare/SKILL.md +0 -192
- package/catalog/deployment/deploy-to-vercel/SKILL.md +0 -196
- package/catalog/deployment/deploy-to-vercel/references/vercel.json.example +0 -60
- package/catalog/development/decorators-guide/SKILL.md +0 -598
- package/catalog/plugins/create-plugin/SKILL.md +0 -336
- package/catalog/setup/frontmcp-skills-usage/SKILL.md +0 -200
- package/catalog/setup/project-structure-nx/SKILL.md +0 -186
- package/catalog/setup/project-structure-standalone/SKILL.md +0 -153
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: production-cli-daemon
|
|
3
|
+
description: Checklist for deploying FrontMCP as a long-running local daemon with socket transport
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Production Readiness: CLI Daemon (Local MCP Server)
|
|
7
|
+
|
|
8
|
+
Checklist for deploying FrontMCP as a long-running local MCP server managed by the FrontMCP process manager (`frontmcp start/stop/restart`).
|
|
9
|
+
|
|
10
|
+
> Run the `common-checklist` first, then use this checklist for daemon-specific items.
|
|
11
|
+
|
|
12
|
+
## Process Management
|
|
13
|
+
|
|
14
|
+
- [ ] Server starts via `frontmcp start <name> --entry ./src/main.ts`
|
|
15
|
+
- [ ] `frontmcp stop <name>` cleanly shuts down the daemon
|
|
16
|
+
- [ ] `frontmcp restart <name>` works without orphaned processes
|
|
17
|
+
- [ ] `frontmcp status` shows the daemon as running
|
|
18
|
+
- [ ] `frontmcp logs <name> --follow` streams daemon output
|
|
19
|
+
|
|
20
|
+
## Socket / Transport
|
|
21
|
+
|
|
22
|
+
- [ ] Unix socket path is configured: `http: { socketPath: '/tmp/my-app.sock' }`
|
|
23
|
+
- [ ] Socket file is cleaned up on shutdown (no stale `.sock` files)
|
|
24
|
+
- [ ] Stdio transport works as fallback: `frontmcp socket ./src/main.ts`
|
|
25
|
+
- [ ] Socket permissions are restrictive (only the owning user can connect)
|
|
26
|
+
|
|
27
|
+
## Service Registration
|
|
28
|
+
|
|
29
|
+
- [ ] `frontmcp service install <name>` registers as a system service (launchd/systemd)
|
|
30
|
+
- [ ] Service starts automatically on boot (if desired)
|
|
31
|
+
- [ ] Service restarts on crash with backoff
|
|
32
|
+
- [ ] Logs are captured by the system journal / log file
|
|
33
|
+
|
|
34
|
+
## Storage
|
|
35
|
+
|
|
36
|
+
- [ ] SQLite used for local persistence (session, cache)
|
|
37
|
+
- [ ] Database file location is configurable (not hardcoded)
|
|
38
|
+
- [ ] WAL mode enabled for concurrent reads
|
|
39
|
+
- [ ] Automatic migration on startup (if schema changes)
|
|
40
|
+
- [ ] Redis optional (only if shared state is needed between instances)
|
|
41
|
+
|
|
42
|
+
## Graceful Shutdown
|
|
43
|
+
|
|
44
|
+
- [ ] SIGTERM handler completes in-flight requests
|
|
45
|
+
- [ ] Database connections are closed
|
|
46
|
+
- [ ] Socket file is removed
|
|
47
|
+
- [ ] PID file is cleaned up
|
|
48
|
+
|
|
49
|
+
## Health & Monitoring
|
|
50
|
+
|
|
51
|
+
- [ ] `/health` endpoint responds on the socket
|
|
52
|
+
- [ ] Startup errors are logged clearly (not swallowed)
|
|
53
|
+
- [ ] `frontmcp doctor` passes all checks
|
|
54
|
+
- [ ] Memory usage is stable over time (no leaks)
|
|
55
|
+
|
|
56
|
+
## Security
|
|
57
|
+
|
|
58
|
+
- [ ] Socket file has restrictive permissions
|
|
59
|
+
- [ ] No network exposure (socket-only, not TCP)
|
|
60
|
+
- [ ] Secrets stored in config file with `600` permissions
|
|
61
|
+
- [ ] Config stored in `~/.config/<app>/` or XDG directories
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: production-cloudflare
|
|
3
|
+
description: Checklist for deploying FrontMCP to Cloudflare Workers with KV and Durable Objects
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Production Readiness: Cloudflare Workers
|
|
7
|
+
|
|
8
|
+
Target-specific checklist for deploying FrontMCP to Cloudflare Workers.
|
|
9
|
+
|
|
10
|
+
> Run the `common-checklist` first, then use this checklist for Cloudflare-specific items.
|
|
11
|
+
|
|
12
|
+
## Wrangler Configuration
|
|
13
|
+
|
|
14
|
+
- [ ] `wrangler.toml` is configured with correct routes and bindings
|
|
15
|
+
- [ ] `frontmcp build --target cloudflare` produces the correct output
|
|
16
|
+
- [ ] Environment variables are set via `wrangler secret put` or dashboard
|
|
17
|
+
- [ ] Custom domain or `*.workers.dev` subdomain is configured for CORS
|
|
18
|
+
|
|
19
|
+
## Workers Runtime
|
|
20
|
+
|
|
21
|
+
- [ ] No Node.js-only APIs used (Workers use V8 isolates, not Node)
|
|
22
|
+
- [ ] No `node:crypto` or `node:fs` — use `@frontmcp/utils` or Web APIs
|
|
23
|
+
- [ ] Bundle size is within Workers limits (< 10MB compressed)
|
|
24
|
+
- [ ] No `eval()` or dynamic `Function()` (prohibited in Workers)
|
|
25
|
+
- [ ] Async I/O only — no synchronous blocking operations
|
|
26
|
+
|
|
27
|
+
## Storage
|
|
28
|
+
|
|
29
|
+
- [ ] Session storage uses Workers KV, Durable Objects, or D1
|
|
30
|
+
- [ ] Cache uses Workers KV or Cache API
|
|
31
|
+
- [ ] No file system access (Workers have no filesystem)
|
|
32
|
+
- [ ] R2 is used for blob/file storage if needed
|
|
33
|
+
|
|
34
|
+
## Performance
|
|
35
|
+
|
|
36
|
+
- [ ] Cold start time is within Workers limits (< 50ms)
|
|
37
|
+
- [ ] No heavy initialization at module scope
|
|
38
|
+
- [ ] Lazy-load dependencies
|
|
39
|
+
- [ ] Request handling completes within CPU time limits
|
|
40
|
+
|
|
41
|
+
## Scaling
|
|
42
|
+
|
|
43
|
+
- [ ] Stateless design (Workers are ephemeral)
|
|
44
|
+
- [ ] Durable Objects used for stateful coordination (if needed)
|
|
45
|
+
- [ ] No in-memory caching between requests (use KV instead)
|
|
46
|
+
|
|
47
|
+
## CI/CD
|
|
48
|
+
|
|
49
|
+
- [ ] `wrangler.toml` environment configs for staging/production
|
|
50
|
+
- [ ] Secrets set via `wrangler secret put`
|
|
51
|
+
- [ ] Deploy with `wrangler deploy` (not manual upload)
|
|
52
|
+
- [ ] Tail logs: `wrangler tail` for production debugging
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: production-lambda
|
|
3
|
+
description: Checklist for deploying FrontMCP to AWS Lambda with SAM, API Gateway, and DynamoDB
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Production Readiness: AWS Lambda
|
|
7
|
+
|
|
8
|
+
Target-specific checklist for deploying FrontMCP to AWS Lambda.
|
|
9
|
+
|
|
10
|
+
> Run the `common-checklist` first, then use this checklist for Lambda-specific items.
|
|
11
|
+
|
|
12
|
+
## SAM / CloudFormation
|
|
13
|
+
|
|
14
|
+
- [ ] `ci/template.yaml` (SAM template) is configured correctly
|
|
15
|
+
- [ ] `frontmcp build --target lambda` produces the correct handler
|
|
16
|
+
- [ ] Environment variables are set in the SAM template or SSM Parameter Store
|
|
17
|
+
- [ ] API Gateway is configured with correct routes and CORS
|
|
18
|
+
- [ ] Lambda function memory and timeout are set appropriately
|
|
19
|
+
|
|
20
|
+
## Lambda Runtime
|
|
21
|
+
|
|
22
|
+
- [ ] Handler exports are correct for the Lambda runtime
|
|
23
|
+
- [ ] No long-lived connections assumed (Lambda freezes between invocations)
|
|
24
|
+
- [ ] No `node:fs` writes to `/tmp` that exceed 512MB
|
|
25
|
+
- [ ] Connection reuse pattern is used for external services
|
|
26
|
+
|
|
27
|
+
## Storage
|
|
28
|
+
|
|
29
|
+
- [ ] Session storage uses DynamoDB or ElastiCache (not in-memory)
|
|
30
|
+
- [ ] Cache uses DynamoDB or ElastiCache
|
|
31
|
+
- [ ] Secrets use AWS SSM Parameter Store or Secrets Manager
|
|
32
|
+
- [ ] S3 is used for blob/file storage if needed
|
|
33
|
+
|
|
34
|
+
## Cold Starts
|
|
35
|
+
|
|
36
|
+
- [ ] Bundle is tree-shaken to minimize size
|
|
37
|
+
- [ ] Provisioned concurrency is configured for latency-sensitive endpoints
|
|
38
|
+
- [ ] Lazy initialization pattern for database connections
|
|
39
|
+
- [ ] No heavy imports at module scope
|
|
40
|
+
|
|
41
|
+
## Scaling
|
|
42
|
+
|
|
43
|
+
- [ ] Concurrency limits are set to prevent downstream overload
|
|
44
|
+
- [ ] Reserved concurrency for critical functions
|
|
45
|
+
- [ ] Dead letter queue (DLQ) configured for failed invocations
|
|
46
|
+
- [ ] Connection pooling accounts for Lambda concurrency (use RDS Proxy if needed)
|
|
47
|
+
|
|
48
|
+
## CI/CD
|
|
49
|
+
|
|
50
|
+
- [ ] `sam build && sam deploy` works from CI
|
|
51
|
+
- [ ] Staging and production stages are separate
|
|
52
|
+
- [ ] API Gateway stages are configured correctly
|
|
53
|
+
- [ ] CloudWatch alarms are set for errors and throttling
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: production-node-sdk
|
|
3
|
+
description: Checklist for publishing FrontMCP as an embedded npm package used as a direct client SDK
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Production Readiness: Node.js Direct Client (SDK)
|
|
7
|
+
|
|
8
|
+
Checklist for publishing FrontMCP as an npm package used as a direct client SDK — embedded in someone else's Node.js application, not running as a standalone server.
|
|
9
|
+
|
|
10
|
+
> Run the `common-checklist` first, then use this checklist for SDK-specific items.
|
|
11
|
+
|
|
12
|
+
## API Surface
|
|
13
|
+
|
|
14
|
+
- [ ] `create()` function is exported and documented
|
|
15
|
+
- [ ] Server's `connect()` method returns a typed client with `listTools`, `callTool`, etc.
|
|
16
|
+
- [ ] Client provides `close()` method to terminate the connection
|
|
17
|
+
- [ ] Server `dispose()` and client `close()` must completely release all resources (connections, timers, listeners)
|
|
18
|
+
- [ ] TypeScript declarations (`.d.ts`) are included in the published package
|
|
19
|
+
- [ ] `package.json` has correct `main`, `module`, `types`, and `exports` fields (CJS + ESM entry points)
|
|
20
|
+
|
|
21
|
+
## Initialization & Lifecycle
|
|
22
|
+
|
|
23
|
+
- [ ] `create()` does not bind a port (SDK mode, not server mode)
|
|
24
|
+
- [ ] `serve: false` is set in the FrontMCP config (or uses direct API)
|
|
25
|
+
- [ ] Initialization is async and returns a promise
|
|
26
|
+
- [ ] No side effects at import time (no top-level `await`, no global state)
|
|
27
|
+
- [ ] Multiple instances can coexist without conflicts
|
|
28
|
+
|
|
29
|
+
## Memory & Cleanup
|
|
30
|
+
|
|
31
|
+
- [ ] `client.close()` and `server.dispose()` are called in the host app's shutdown handler
|
|
32
|
+
- [ ] No event listener leaks (all listeners are removed on dispose)
|
|
33
|
+
- [ ] No dangling timers or intervals after dispose
|
|
34
|
+
- [ ] Provider lifecycle `dispose()` is implemented for all resources
|
|
35
|
+
- [ ] Memory usage is bounded (no unbounded caches or queues)
|
|
36
|
+
|
|
37
|
+
## npm Publishing
|
|
38
|
+
|
|
39
|
+
- [ ] Package name is available on npm
|
|
40
|
+
- [ ] `package.json` has `name`, `version`, `description`, `keywords`, `license`
|
|
41
|
+
- [ ] `files` field includes only: `dist/`, `README.md`, `LICENSE`
|
|
42
|
+
- [ ] `peerDependencies` are declared for shared packages (e.g., `zod`)
|
|
43
|
+
- [ ] `engines.node` matches required Node.js version
|
|
44
|
+
- [ ] `README.md` has usage examples with `create()` and `connect()` API
|
|
45
|
+
|
|
46
|
+
## Testing
|
|
47
|
+
|
|
48
|
+
- [ ] Unit tests cover tool execution via direct client
|
|
49
|
+
- [ ] Integration tests verify `create()` → `connect()` → `callTool()` → `close()` → `dispose()`
|
|
50
|
+
- [ ] No tests depend on a running HTTP server
|
|
51
|
+
- [ ] Tests clean up (dispose) after each test case
|
|
52
|
+
|
|
53
|
+
## Example Usage in README
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
import { create } from 'my-mcp-package';
|
|
57
|
+
|
|
58
|
+
const server = await create();
|
|
59
|
+
const client = await server.connect();
|
|
60
|
+
|
|
61
|
+
const tools = await client.listTools();
|
|
62
|
+
const result = await client.callTool('my_tool', { input: 'value' });
|
|
63
|
+
|
|
64
|
+
await client.close();
|
|
65
|
+
await server.dispose();
|
|
66
|
+
```
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: production-node-server
|
|
3
|
+
description: Checklist for deploying FrontMCP as a long-running Node.js server with Docker
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Production Readiness: Node.js / Docker
|
|
7
|
+
|
|
8
|
+
Target-specific checklist for deploying FrontMCP as a long-running Node.js server (with or without Docker).
|
|
9
|
+
|
|
10
|
+
> Run the `common-checklist` first, then use this checklist for Node-specific items.
|
|
11
|
+
|
|
12
|
+
## Docker
|
|
13
|
+
|
|
14
|
+
- [ ] Dockerfile uses multi-stage build (separate build and runtime stages)
|
|
15
|
+
- [ ] Base image is minimal (`node:24-slim`, not full `node` image)
|
|
16
|
+
- [ ] Non-root user is configured: `USER node`
|
|
17
|
+
- [ ] `.dockerignore` excludes: `node_modules`, `.git`, `.env`, `dist`, `coverage`
|
|
18
|
+
- [ ] Container health check is defined: `HEALTHCHECK CMD curl -f http://localhost:3000/health`
|
|
19
|
+
- [ ] Resource limits (memory, CPU) are set in docker-compose or k8s deployment
|
|
20
|
+
- [ ] `NODE_ENV=production` is set in the container
|
|
21
|
+
|
|
22
|
+
## Process Management
|
|
23
|
+
|
|
24
|
+
- [ ] SIGTERM handler is configured for graceful shutdown
|
|
25
|
+
- [ ] In-flight requests complete before process exit
|
|
26
|
+
- [ ] Redis/database connections are closed on shutdown
|
|
27
|
+
- [ ] Health check returns unhealthy during shutdown drain period
|
|
28
|
+
- [ ] `/health` endpoint is implemented and monitored
|
|
29
|
+
- [ ] Health check verifies downstream dependencies (Redis, databases)
|
|
30
|
+
- [ ] Readiness probe is separate from liveness probe (if using K8s)
|
|
31
|
+
|
|
32
|
+
## Storage
|
|
33
|
+
|
|
34
|
+
- [ ] Redis is used for session storage (not in-memory)
|
|
35
|
+
- [ ] Redis connection pooling is configured
|
|
36
|
+
- [ ] Database connections use connection pools with limits
|
|
37
|
+
- [ ] Connection timeouts are set (don't hang indefinitely)
|
|
38
|
+
- [ ] Cache uses Redis (not in-memory) for multi-instance consistency
|
|
39
|
+
|
|
40
|
+
## Scaling
|
|
41
|
+
|
|
42
|
+
- [ ] Server is stateless (session state in Redis, not memory)
|
|
43
|
+
- [ ] Multiple instances can run behind a load balancer
|
|
44
|
+
- [ ] WebSocket/SSE connections use sticky sessions or Redis pub/sub
|
|
45
|
+
- [ ] Auto-scaling is configured based on CPU/memory/request metrics
|
|
46
|
+
|
|
47
|
+
## CI/CD
|
|
48
|
+
|
|
49
|
+
- [ ] Tests run on every PR (unit + E2E)
|
|
50
|
+
- [ ] `frontmcp build --target node` produces optimized output
|
|
51
|
+
- [ ] Docker image is built and pushed automatically
|
|
52
|
+
- [ ] Deployment is automated with rollback capability
|
|
53
|
+
- [ ] Database migrations run as a separate step
|
|
54
|
+
|
|
55
|
+
## Environment
|
|
56
|
+
|
|
57
|
+
- [ ] `NODE_ENV=production` is set
|
|
58
|
+
- [ ] All required env vars are documented in `.env.example`
|
|
59
|
+
- [ ] Env vars are validated at startup (fail fast on missing config)
|
|
60
|
+
- [ ] Port binding uses `process.env.PORT`
|
|
61
|
+
- [ ] No dev dependencies installed in production image
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: production-vercel
|
|
3
|
+
description: Checklist for deploying FrontMCP to Vercel serverless or edge functions with Vercel KV
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Production Readiness: Vercel / Edge
|
|
7
|
+
|
|
8
|
+
Target-specific checklist for deploying FrontMCP to Vercel serverless or edge functions.
|
|
9
|
+
|
|
10
|
+
> Run the `common-checklist` first, then use this checklist for Vercel-specific items.
|
|
11
|
+
|
|
12
|
+
## Vercel Configuration
|
|
13
|
+
|
|
14
|
+
- [ ] `vercel.json` is configured with correct function routes
|
|
15
|
+
- [ ] `frontmcp build --target vercel` produces the correct output
|
|
16
|
+
- [ ] Environment variables are set in Vercel dashboard (not `.env`)
|
|
17
|
+
- [ ] `VERCEL_URL` or custom domain is configured for CORS origins
|
|
18
|
+
|
|
19
|
+
## Edge Runtime
|
|
20
|
+
|
|
21
|
+
- [ ] No Node.js-only APIs used (no `fs`, `child_process`, `net`)
|
|
22
|
+
- [ ] No `node:crypto` direct imports — use `@frontmcp/utils` (cross-platform)
|
|
23
|
+
- [ ] No large npm packages that exceed edge bundle size limits
|
|
24
|
+
- [ ] Streaming responses work correctly on the edge runtime
|
|
25
|
+
|
|
26
|
+
## Session & Storage
|
|
27
|
+
|
|
28
|
+
- [ ] Session storage uses Vercel KV (not in-memory or Redis)
|
|
29
|
+
- [ ] Cache uses Vercel KV or edge-compatible store
|
|
30
|
+
- [ ] No file system access (serverless is ephemeral)
|
|
31
|
+
- [ ] SQLite is NOT used (not available on serverless)
|
|
32
|
+
|
|
33
|
+
## Cold Starts
|
|
34
|
+
|
|
35
|
+
- [ ] Server startup time is minimal (< 1s target for cold starts)
|
|
36
|
+
- [ ] Lazy-load expensive dependencies
|
|
37
|
+
- [ ] No heavy initialization in module scope
|
|
38
|
+
- [ ] OpenAPI spec is cached (not fetched on every invocation)
|
|
39
|
+
|
|
40
|
+
## Scaling
|
|
41
|
+
|
|
42
|
+
- [ ] Stateless design (no in-memory state between invocations)
|
|
43
|
+
- [ ] Connection pooling accounts for serverless concurrency
|
|
44
|
+
- [ ] Function timeout is set appropriately in vercel.json
|
|
45
|
+
- [ ] Memory allocation matches workload
|
|
46
|
+
|
|
47
|
+
## CI/CD
|
|
48
|
+
|
|
49
|
+
- [ ] `vercel.json` routes are correct
|
|
50
|
+
- [ ] Environment variables are set in Vercel project settings
|
|
51
|
+
- [ ] Preview deployments test the full MCP flow
|
|
52
|
+
- [ ] Production deployment uses `npx vercel --prod`
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: frontmcp-setup
|
|
3
|
+
description: "Domain router for project setup, scaffolding, and organization. Use this skill whenever someone asks to create a new FrontMCP project, set up an Nx monorepo, configure Redis or SQLite storage, organize project structure, compose multiple apps into one server, or manage the skills system. Also triggers for questions like 'how do I start', 'project layout', 'folder structure', 'add redis', 'set up database', or 'create a new app'."
|
|
4
|
+
tags: [router, setup, scaffold, project, nx, redis, sqlite, structure, guide]
|
|
5
|
+
category: setup
|
|
6
|
+
targets: [all]
|
|
7
|
+
bundle: [recommended, minimal, full]
|
|
8
|
+
priority: 10
|
|
9
|
+
visibility: both
|
|
10
|
+
license: Apache-2.0
|
|
11
|
+
metadata:
|
|
12
|
+
docs: https://docs.agentfront.dev/frontmcp/getting-started/quickstart
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# FrontMCP Setup Router
|
|
16
|
+
|
|
17
|
+
Entry point for project setup and scaffolding. This skill helps you find the right setup guide based on your project needs — from initial scaffolding to storage backends, project structure, and multi-app composition.
|
|
18
|
+
|
|
19
|
+
## When to Use This Skill
|
|
20
|
+
|
|
21
|
+
### Must Use
|
|
22
|
+
|
|
23
|
+
- Starting a new FrontMCP project from scratch and need to choose between standalone vs Nx monorepo
|
|
24
|
+
- Setting up storage backends (Redis, SQLite) for session or state management
|
|
25
|
+
- Organizing an existing project and need canonical directory layout guidance
|
|
26
|
+
|
|
27
|
+
### Recommended
|
|
28
|
+
|
|
29
|
+
- Onboarding to the FrontMCP project structure and naming conventions
|
|
30
|
+
- Setting up multi-app composition within a single server
|
|
31
|
+
- Understanding the skills system and how to browse, install, and manage skills
|
|
32
|
+
|
|
33
|
+
### Skip When
|
|
34
|
+
|
|
35
|
+
- You need to build specific components like tools or resources (see `frontmcp-development`)
|
|
36
|
+
- You need to configure transport, auth, or throttling (see `frontmcp-config`)
|
|
37
|
+
- You need to deploy or build for a target platform (see `frontmcp-deployment`)
|
|
38
|
+
|
|
39
|
+
> **Decision:** Use this skill when you need to CREATE or ORGANIZE a project. Use other routers when you need to build, configure, deploy, or test.
|
|
40
|
+
|
|
41
|
+
## Prerequisites
|
|
42
|
+
|
|
43
|
+
- Node.js 24+ and npm/yarn installed
|
|
44
|
+
- `frontmcp` CLI available globally (`npm install -g frontmcp`)
|
|
45
|
+
|
|
46
|
+
## Steps
|
|
47
|
+
|
|
48
|
+
1. Use the Scenario Routing Table below to find the right setup guide for your task
|
|
49
|
+
2. Scaffold your project with `frontmcp create` (standalone) or `frontmcp create --nx` (monorepo)
|
|
50
|
+
3. Configure storage and project structure per the relevant reference files
|
|
51
|
+
4. Follow the Recommended Reading Order for a complete setup walkthrough
|
|
52
|
+
|
|
53
|
+
## Scenario Routing Table
|
|
54
|
+
|
|
55
|
+
| Scenario | Reference | Description |
|
|
56
|
+
| --------------------------------------------- | -------------------------------------------- | -------------------------------------------------------------------------------------------- |
|
|
57
|
+
| Scaffold a new project with `frontmcp create` | `references/setup-project.md` | CLI scaffolder (flags: `--target`, `--redis`, `--skills <bundle>`, `--cicd`, `--nx`, `--pm`) |
|
|
58
|
+
| Organize a standalone (non-Nx) project | `references/project-structure-standalone.md` | File layout, naming conventions (`<name>.<type>.ts`), folder hierarchy |
|
|
59
|
+
| Organize an Nx monorepo | `references/project-structure-nx.md` | apps/, libs/, servers/ layout, generators, dependency rules |
|
|
60
|
+
| Set up Redis for production storage | `references/setup-redis.md` | Docker Redis, Vercel KV, pub/sub for subscriptions |
|
|
61
|
+
| Set up SQLite for local development | `references/setup-sqlite.md` | WAL mode, migration helpers, encryption |
|
|
62
|
+
| Compose multiple apps into one server | `references/multi-app-composition.md` | `@FrontMcp` with multiple `@App` classes, cross-app providers |
|
|
63
|
+
| Use Nx build, test, and CI commands | `references/nx-workflow.md` | `nx build`, `nx test`, `nx run-many`, caching, affected commands |
|
|
64
|
+
| Browse, install, and manage skills | `references/frontmcp-skills-usage.md` | CLI commands, bundles, categories, search |
|
|
65
|
+
| Generate or update project README.md | `references/readme-guide.md` | Deployment-target-aware README for npm, CLI, Docker, serverless |
|
|
66
|
+
|
|
67
|
+
## Recommended Reading Order
|
|
68
|
+
|
|
69
|
+
1. **`references/setup-project.md`** — Start here for any new project
|
|
70
|
+
2. **`references/project-structure-standalone.md`** or **`references/project-structure-nx.md`** — Choose your layout
|
|
71
|
+
3. **`references/setup-redis.md`** or **`references/setup-sqlite.md`** — Add storage if needed
|
|
72
|
+
4. **`references/multi-app-composition.md`** — Scale to multiple apps (when needed)
|
|
73
|
+
5. **`references/nx-workflow.md`** — Nx-specific build and CI commands (if using Nx)
|
|
74
|
+
6. **`references/frontmcp-skills-usage.md`** — Learn the skills system
|
|
75
|
+
7. **`references/readme-guide.md`** — Generate README for your deployment target
|
|
76
|
+
|
|
77
|
+
## Cross-Cutting Patterns
|
|
78
|
+
|
|
79
|
+
| Pattern | Rule |
|
|
80
|
+
| -------------- | -------------------------------------------------------------------------------- |
|
|
81
|
+
| Project type | Standalone for single-app projects; Nx for multi-app or team projects |
|
|
82
|
+
| File naming | `<name>.<type>.ts` (e.g., `fetch-weather.tool.ts`) everywhere |
|
|
83
|
+
| Test naming | `.spec.ts` extension (not `.test.ts`) |
|
|
84
|
+
| Entry point | `main.ts` must `export default` the `@FrontMcp` class |
|
|
85
|
+
| Storage choice | Redis for production/serverless; SQLite for local dev/CLI; memory for tests only |
|
|
86
|
+
| App boundaries | Each `@App` is a self-contained module; shared logic goes in providers |
|
|
87
|
+
|
|
88
|
+
## Common Patterns
|
|
89
|
+
|
|
90
|
+
| Pattern | Correct | Incorrect | Why |
|
|
91
|
+
| --------------------- | ----------------------------------------------- | -------------------------------------------- | ----------------------------------------------------------------- |
|
|
92
|
+
| Project scaffolding | `frontmcp create` or `frontmcp create --nx` | Manual setup from scratch | CLI sets up correct structure, dependencies, and config files |
|
|
93
|
+
| Entry point | `export default class MyServer` in `main.ts` | Named export or no default export | FrontMCP loads the default export at startup |
|
|
94
|
+
| Storage in production | Redis or platform-native (Vercel KV, DynamoDB) | Memory store or SQLite | Memory is lost on restart; SQLite doesn't work on serverless |
|
|
95
|
+
| Multi-app composition | Separate `@App` classes composed in `@FrontMcp` | One giant `@App` with all components | Separate apps enable independent testing and modular architecture |
|
|
96
|
+
| File organization | Feature folders for 10+ components | Flat `tools/` directory with dozens of files | Feature folders make domain boundaries visible |
|
|
97
|
+
|
|
98
|
+
## Verification Checklist
|
|
99
|
+
|
|
100
|
+
### Project Structure
|
|
101
|
+
|
|
102
|
+
- [ ] `main.ts` exists with `export default` of `@FrontMcp` class
|
|
103
|
+
- [ ] At least one `@App` class registered in the server
|
|
104
|
+
- [ ] Files follow `<name>.<type>.ts` naming convention
|
|
105
|
+
- [ ] Test files use `.spec.ts` extension
|
|
106
|
+
|
|
107
|
+
### Storage
|
|
108
|
+
|
|
109
|
+
- [ ] Storage backend chosen and configured (Redis/SQLite/memory)
|
|
110
|
+
- [ ] Connection string in environment variables, not hardcoded
|
|
111
|
+
- [ ] Storage accessible from the server process
|
|
112
|
+
|
|
113
|
+
### Build and Dev
|
|
114
|
+
|
|
115
|
+
- [ ] `frontmcp dev` starts successfully with file watching
|
|
116
|
+
- [ ] `frontmcp build --target <target>` completes without errors
|
|
117
|
+
- [ ] Tests pass with `frontmcp test` or `nx test`
|
|
118
|
+
|
|
119
|
+
## Troubleshooting
|
|
120
|
+
|
|
121
|
+
| Problem | Cause | Solution |
|
|
122
|
+
| ------------------------ | -------------------------------- | --------------------------------------------------------------------- |
|
|
123
|
+
| `frontmcp create` fails | Missing Node.js 24+ or npm/yarn | Install Node.js 24+ and ensure npm/yarn is available |
|
|
124
|
+
| Server fails to start | `main.ts` missing default export | Add `export default MyServerClass` to `main.ts` |
|
|
125
|
+
| Redis connection refused | Redis not running or wrong URL | Start Redis (`docker compose up redis`) or fix `REDIS_URL` env var |
|
|
126
|
+
| Nx generator not found | `@frontmcp/nx` not installed | Run `npm install -D @frontmcp/nx` |
|
|
127
|
+
| Skills not loading | Skills placed in wrong directory | Catalog skills go in top-level `skills/`, app skills in `src/skills/` |
|
|
128
|
+
|
|
129
|
+
## Reference
|
|
130
|
+
|
|
131
|
+
- [Getting Started](https://docs.agentfront.dev/frontmcp/getting-started/quickstart)
|
|
132
|
+
- Domain routers: `frontmcp-development`, `frontmcp-deployment`, `frontmcp-testing`, `frontmcp-config`, `frontmcp-guides`
|