mcp-task-server 0.1.1 → 0.2.0
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 +111 -5
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +595 -1
- package/dist/templates.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -74,7 +74,7 @@ npm start
|
|
|
74
74
|
|
|
75
75
|
## Cursor IDE Integration
|
|
76
76
|
|
|
77
|
-
Add to your `.cursor/mcp.json`:
|
|
77
|
+
Add to your project's `.cursor/mcp.json`:
|
|
78
78
|
|
|
79
79
|
```json
|
|
80
80
|
{
|
|
@@ -82,13 +82,50 @@ Add to your `.cursor/mcp.json`:
|
|
|
82
82
|
"task-server": {
|
|
83
83
|
"command": "npx",
|
|
84
84
|
"args": ["-y", "mcp-task-server"],
|
|
85
|
-
"cwd": "/path/to/your/project"
|
|
85
|
+
"cwd": "/absolute/path/to/your/project"
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
### Important: cwd Limitations
|
|
92
|
+
|
|
93
|
+
The `cwd` parameter has limitations in Cursor:
|
|
94
|
+
|
|
95
|
+
1. **Must be an absolute path** - Relative paths and `~` expansion do not work reliably
|
|
96
|
+
2. **Set per-project** - Each project needs its own `.cursor/mcp.json` with the correct `cwd`
|
|
97
|
+
3. **No dynamic resolution** - Cursor does not automatically resolve `cwd` to the current workspace
|
|
98
|
+
4. **Global config issues** - If using `~/.cursor/mcp.json` (global), the `cwd` applies to all projects
|
|
99
|
+
|
|
100
|
+
**Recommended setup**: Add `.cursor/mcp.json` to each project with an absolute path:
|
|
101
|
+
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"mcpServers": {
|
|
105
|
+
"task-server": {
|
|
106
|
+
"command": "npx",
|
|
107
|
+
"args": ["-y", "mcp-task-server"],
|
|
108
|
+
"cwd": "/Users/yourname/Projects/my-project"
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Alternative**: Use environment variable for the working directory:
|
|
115
|
+
|
|
116
|
+
```json
|
|
117
|
+
{
|
|
118
|
+
"mcpServers": {
|
|
119
|
+
"task-server": {
|
|
120
|
+
"command": "npx",
|
|
121
|
+
"args": ["-y", "mcp-task-server"],
|
|
122
|
+
"env": {
|
|
123
|
+
"TASK_WORKSPACE": "/Users/yourname/Projects/my-project"
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
```
|
|
92
129
|
|
|
93
130
|
## Configuration
|
|
94
131
|
|
|
@@ -155,8 +192,8 @@ High-level overview auto-generated from tasks.json:
|
|
|
155
192
|
## Task Completion Summary
|
|
156
193
|
|
|
157
194
|
### Completed Tasks (3/5)
|
|
158
|
-
-
|
|
159
|
-
-
|
|
195
|
+
- Task 1: Project Setup
|
|
196
|
+
- Task 2: Database Schema
|
|
160
197
|
```
|
|
161
198
|
|
|
162
199
|
This architecture scales well for complex projects with many tasks and subtasks.
|
|
@@ -299,6 +336,72 @@ If you have existing `.taskmaster/tasks.json`:
|
|
|
299
336
|
3. Individual task files are generated
|
|
300
337
|
4. Progress summary is updated
|
|
301
338
|
|
|
339
|
+
## Publishing to npm
|
|
340
|
+
|
|
341
|
+
### Prerequisites
|
|
342
|
+
|
|
343
|
+
1. An npm account at [npmjs.com](https://www.npmjs.com/)
|
|
344
|
+
2. Node.js 18+
|
|
345
|
+
|
|
346
|
+
### npm Security Changes (2025+)
|
|
347
|
+
|
|
348
|
+
npm has updated its security model:
|
|
349
|
+
|
|
350
|
+
- **TOTP authenticator apps are deprecated** for new 2FA setups
|
|
351
|
+
- **Security keys (WebAuthn/FIDO)** are now required for new 2FA configurations
|
|
352
|
+
- **Automation tokens** are required for CI/CD and scripted publishing
|
|
353
|
+
|
|
354
|
+
### Creating a Publish Token
|
|
355
|
+
|
|
356
|
+
1. Go to [npmjs.com/settings/~/tokens](https://www.npmjs.com/settings/~/tokens)
|
|
357
|
+
2. Click **Generate New Token** → **Granular Access Token**
|
|
358
|
+
3. Configure:
|
|
359
|
+
- **Token name**: `mcp-task-server-publish` (or your preference)
|
|
360
|
+
- **Bypass two-factor authentication (2FA)**: Check this box (required for CLI publishing)
|
|
361
|
+
- **Allowed IP ranges**: Optional - add your IP as `x.x.x.x/32` for extra security
|
|
362
|
+
- **Packages and scopes**: Select **Read and write**, then **All packages**
|
|
363
|
+
- **Expiration**: 90 days (maximum for granular tokens)
|
|
364
|
+
4. Click **Generate Token**
|
|
365
|
+
5. Copy the token immediately (you won't see it again)
|
|
366
|
+
|
|
367
|
+
### Publishing
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
# Set the token as an environment variable
|
|
371
|
+
export NPM_TOKEN=npm_xxxxxxxxxxxx
|
|
372
|
+
|
|
373
|
+
# Build and publish
|
|
374
|
+
cd /path/to/mcp-task-server
|
|
375
|
+
npm publish --//registry.npmjs.org/:_authToken=$NPM_TOKEN
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
The `prepublishOnly` script automatically runs `npm run build` before publishing.
|
|
379
|
+
|
|
380
|
+
### Releasing Updates
|
|
381
|
+
|
|
382
|
+
```bash
|
|
383
|
+
# Bump version (updates package.json and creates git tag)
|
|
384
|
+
npm version patch # 0.1.1 -> 0.1.2
|
|
385
|
+
npm version minor # 0.1.2 -> 0.2.0
|
|
386
|
+
npm version major # 0.2.0 -> 1.0.0
|
|
387
|
+
|
|
388
|
+
# Publish the new version
|
|
389
|
+
npm publish --//registry.npmjs.org/:_authToken=$NPM_TOKEN
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
### Verifying Publication
|
|
393
|
+
|
|
394
|
+
```bash
|
|
395
|
+
npm info mcp-task-server
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
### Token Security Tips
|
|
399
|
+
|
|
400
|
+
- **Regenerate tokens** before they expire (90 day limit)
|
|
401
|
+
- **Use IP restrictions** if publishing from a static IP
|
|
402
|
+
- **Never commit tokens** to version control
|
|
403
|
+
- **Store tokens securely** (e.g., password manager, environment variables)
|
|
404
|
+
|
|
302
405
|
## Development
|
|
303
406
|
|
|
304
407
|
```bash
|
|
@@ -310,6 +413,9 @@ npm run build
|
|
|
310
413
|
|
|
311
414
|
# Watch mode
|
|
312
415
|
npm run dev
|
|
416
|
+
|
|
417
|
+
# Test locally before publishing
|
|
418
|
+
npm pack # Creates .tgz file for inspection
|
|
313
419
|
```
|
|
314
420
|
|
|
315
421
|
## License
|
package/dist/templates.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,EAAE,CA8GpE;AA66BD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAW5C"}
|
package/dist/templates.js
CHANGED
|
@@ -25,7 +25,40 @@ export function getTemplateFiles(projectName) {
|
|
|
25
25
|
path: "agent-kit/SHARED_CONTEXT.md",
|
|
26
26
|
content: SHARED_CONTEXT_TEMPLATE,
|
|
27
27
|
},
|
|
28
|
+
// memory_bank/architecture files
|
|
29
|
+
{
|
|
30
|
+
path: "memory_bank/architecture/architecture.md",
|
|
31
|
+
content: ARCHITECTURE_TEMPLATE.replace(/<project>/g, projectName),
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
path: "memory_bank/architecture/tech.md",
|
|
35
|
+
content: TECH_TEMPLATE.replace(/<project>/g, projectName),
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
path: "memory_bank/architecture/models.md",
|
|
39
|
+
content: MODELS_TEMPLATE.replace(/<project>/g, projectName),
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
path: "memory_bank/architecture/services.md",
|
|
43
|
+
content: SERVICES_TEMPLATE.replace(/<project>/g, projectName),
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
path: "memory_bank/architecture/deployment.md",
|
|
47
|
+
content: DEPLOYMENT_TEMPLATE.replace(/<project>/g, projectName),
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
path: "memory_bank/architecture/kubernetes.md",
|
|
51
|
+
content: KUBERNETES_TEMPLATE.replace(/<project>/g, projectName),
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
path: "memory_bank/architecture/webhooks.md",
|
|
55
|
+
content: WEBHOOKS_TEMPLATE.replace(/<project>/g, projectName),
|
|
56
|
+
},
|
|
28
57
|
// memory_bank/context files
|
|
58
|
+
{
|
|
59
|
+
path: "memory_bank/context/context.md",
|
|
60
|
+
content: CONTEXT_TEMPLATE.replace(/<project>/g, projectName),
|
|
61
|
+
},
|
|
29
62
|
{
|
|
30
63
|
path: "memory_bank/context/brief.md",
|
|
31
64
|
content: BRIEF_TEMPLATE.replace(/<project>/g, projectName),
|
|
@@ -34,7 +67,23 @@ export function getTemplateFiles(projectName) {
|
|
|
34
67
|
path: "memory_bank/context/active.md",
|
|
35
68
|
content: ACTIVE_TEMPLATE.replace(/<project>/g, projectName),
|
|
36
69
|
},
|
|
70
|
+
{
|
|
71
|
+
path: "memory_bank/context/product.md",
|
|
72
|
+
content: PRODUCT_TEMPLATE.replace(/<project>/g, projectName),
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
path: "memory_bank/context/canvas.md",
|
|
76
|
+
content: CANVAS_TEMPLATE.replace(/<project>/g, projectName),
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
path: "memory_bank/context/changelog.md",
|
|
80
|
+
content: CHANGELOG_TEMPLATE.replace(/<project>/g, projectName),
|
|
81
|
+
},
|
|
37
82
|
// memory_bank/execution files
|
|
83
|
+
{
|
|
84
|
+
path: "memory_bank/execution/execution.md",
|
|
85
|
+
content: EXECUTION_TEMPLATE.replace(/<project>/g, projectName),
|
|
86
|
+
},
|
|
38
87
|
{
|
|
39
88
|
path: "memory_bank/execution/progress.md",
|
|
40
89
|
content: PROGRESS_TEMPLATE.replace(/<project>/g, projectName),
|
|
@@ -43,6 +92,19 @@ export function getTemplateFiles(projectName) {
|
|
|
43
92
|
path: "memory_bank/execution/decisions.md",
|
|
44
93
|
content: DECISIONS_TEMPLATE.replace(/<project>/g, projectName),
|
|
45
94
|
},
|
|
95
|
+
{
|
|
96
|
+
path: "memory_bank/execution/debug.md",
|
|
97
|
+
content: DEBUG_TEMPLATE.replace(/<project>/g, projectName),
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
path: "memory_bank/execution/git.md",
|
|
101
|
+
content: GIT_TEMPLATE.replace(/<project>/g, projectName),
|
|
102
|
+
},
|
|
103
|
+
// memory_bank/reference placeholder
|
|
104
|
+
{
|
|
105
|
+
path: "memory_bank/reference/README.md",
|
|
106
|
+
content: REFERENCE_README_TEMPLATE.replace(/<project>/g, projectName),
|
|
107
|
+
},
|
|
46
108
|
// .cursor/rules file
|
|
47
109
|
{
|
|
48
110
|
path: ".cursor/rules/agent-workflow.mdc",
|
|
@@ -197,8 +259,305 @@ Run \`sync-memories\` or edit \`~/.cursor/shared-context.json\` manually.
|
|
|
197
259
|
See the full documentation in the MCP Task Server repository.
|
|
198
260
|
`;
|
|
199
261
|
// =============================================================================
|
|
200
|
-
// memory_bank templates
|
|
262
|
+
// memory_bank/architecture templates
|
|
201
263
|
// =============================================================================
|
|
264
|
+
const ARCHITECTURE_TEMPLATE = `---
|
|
265
|
+
title: Architecture and Operations
|
|
266
|
+
slug: /applications/<project>/architecture
|
|
267
|
+
sidebar_label: architecture
|
|
268
|
+
sidebar_position: 2
|
|
269
|
+
unlisted: false
|
|
270
|
+
tags:
|
|
271
|
+
- application
|
|
272
|
+
- <project>
|
|
273
|
+
- architecture
|
|
274
|
+
- operations
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
# Architecture and operations
|
|
278
|
+
|
|
279
|
+
## Purpose
|
|
280
|
+
- Describe the runtime stack and how components fit together.
|
|
281
|
+
|
|
282
|
+
## Audience
|
|
283
|
+
- Primary builder
|
|
284
|
+
- Future contributors
|
|
285
|
+
- Reviewers (security, performance, compliance)
|
|
286
|
+
|
|
287
|
+
## What this covers
|
|
288
|
+
- High-level architecture
|
|
289
|
+
- Deployment shape
|
|
290
|
+
- Links to deep dives
|
|
291
|
+
|
|
292
|
+
## How this page fits in
|
|
293
|
+
- Technical context
|
|
294
|
+
- System services
|
|
295
|
+
- Data models
|
|
296
|
+
- Webhooks
|
|
297
|
+
- Deployment
|
|
298
|
+
- Kubernetes
|
|
299
|
+
|
|
300
|
+
## Principles and assumptions
|
|
301
|
+
- Local-first or cloud-first?
|
|
302
|
+
- Simple components over complex stacks?
|
|
303
|
+
- Privacy and data locality?
|
|
304
|
+
`;
|
|
305
|
+
const TECH_TEMPLATE = `---
|
|
306
|
+
title: Technical Context
|
|
307
|
+
slug: /applications/<project>/architecture/technical
|
|
308
|
+
sidebar_label: technical
|
|
309
|
+
sidebar_position: 1
|
|
310
|
+
unlisted: false
|
|
311
|
+
tags:
|
|
312
|
+
- application
|
|
313
|
+
- <project>
|
|
314
|
+
- architecture
|
|
315
|
+
- technical
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
# Technical context
|
|
319
|
+
|
|
320
|
+
## Stack at a glance
|
|
321
|
+
- Runtime:
|
|
322
|
+
- Frontend:
|
|
323
|
+
- Backend:
|
|
324
|
+
- Database:
|
|
325
|
+
- Infra:
|
|
326
|
+
- Tooling:
|
|
327
|
+
|
|
328
|
+
## Why this stack
|
|
329
|
+
- Reason 1:
|
|
330
|
+
- Reason 2:
|
|
331
|
+
|
|
332
|
+
## Coding style and rules of engagement
|
|
333
|
+
- Assumptions -> Request -> Safeguards
|
|
334
|
+
- One change -> one run
|
|
335
|
+
- Keep the model locked (no Auto)
|
|
336
|
+
|
|
337
|
+
## Quality bars
|
|
338
|
+
- Performance targets:
|
|
339
|
+
- Reliability targets:
|
|
340
|
+
`;
|
|
341
|
+
const MODELS_TEMPLATE = `---
|
|
342
|
+
title: Data Models
|
|
343
|
+
slug: /applications/<project>/architecture/models
|
|
344
|
+
sidebar_label: models
|
|
345
|
+
sidebar_position: 3
|
|
346
|
+
unlisted: false
|
|
347
|
+
tags:
|
|
348
|
+
- application
|
|
349
|
+
- <project>
|
|
350
|
+
- architecture
|
|
351
|
+
- models
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
# Data models
|
|
355
|
+
|
|
356
|
+
## Conventions
|
|
357
|
+
- IDs:
|
|
358
|
+
- Timestamps:
|
|
359
|
+
- Soft delete:
|
|
360
|
+
- Units:
|
|
361
|
+
|
|
362
|
+
## Core models
|
|
363
|
+
### Model 1
|
|
364
|
+
- Fields:
|
|
365
|
+
- Indexes:
|
|
366
|
+
- Rules:
|
|
367
|
+
|
|
368
|
+
### Model 2
|
|
369
|
+
- Fields:
|
|
370
|
+
- Indexes:
|
|
371
|
+
- Rules:
|
|
372
|
+
|
|
373
|
+
## Relationships
|
|
374
|
+
- Describe key relationships and constraints.
|
|
375
|
+
`;
|
|
376
|
+
const SERVICES_TEMPLATE = `---
|
|
377
|
+
title: System Services
|
|
378
|
+
slug: /applications/<project>/architecture/services
|
|
379
|
+
sidebar_label: services
|
|
380
|
+
sidebar_position: 2
|
|
381
|
+
unlisted: false
|
|
382
|
+
tags:
|
|
383
|
+
- application
|
|
384
|
+
- <project>
|
|
385
|
+
- architecture
|
|
386
|
+
- services
|
|
387
|
+
---
|
|
388
|
+
|
|
389
|
+
# System services
|
|
390
|
+
|
|
391
|
+
## System architecture overview
|
|
392
|
+
- Key directories:
|
|
393
|
+
- Service communication flow:
|
|
394
|
+
|
|
395
|
+
## Core services
|
|
396
|
+
### 1) API layer
|
|
397
|
+
- Responsibility:
|
|
398
|
+
- Key endpoints:
|
|
399
|
+
|
|
400
|
+
### 2) Auth and tokens
|
|
401
|
+
- Responsibility:
|
|
402
|
+
- Behavior:
|
|
403
|
+
|
|
404
|
+
### 3) Background workers
|
|
405
|
+
- Responsibility:
|
|
406
|
+
- Schedule and retry:
|
|
407
|
+
|
|
408
|
+
## Admin or internal tooling
|
|
409
|
+
- Admin endpoints:
|
|
410
|
+
- Observability:
|
|
411
|
+
`;
|
|
412
|
+
const DEPLOYMENT_TEMPLATE = `---
|
|
413
|
+
title: Deployment and Setup Guide
|
|
414
|
+
slug: /applications/<project>/architecture/deployment
|
|
415
|
+
sidebar_label: deployment
|
|
416
|
+
sidebar_position: 5
|
|
417
|
+
unlisted: false
|
|
418
|
+
tags:
|
|
419
|
+
- application
|
|
420
|
+
- <project>
|
|
421
|
+
- architecture
|
|
422
|
+
- deployment
|
|
423
|
+
---
|
|
424
|
+
|
|
425
|
+
# Deployment and setup guide
|
|
426
|
+
|
|
427
|
+
## Prerequisites
|
|
428
|
+
- Runtime version:
|
|
429
|
+
- Database:
|
|
430
|
+
- External credentials:
|
|
431
|
+
|
|
432
|
+
## Quick start (development)
|
|
433
|
+
1) Clone and install
|
|
434
|
+
2) Environment configuration
|
|
435
|
+
3) Database setup
|
|
436
|
+
4) Start development
|
|
437
|
+
|
|
438
|
+
## Production notes
|
|
439
|
+
- Environment variables:
|
|
440
|
+
- Scaling:
|
|
441
|
+
- Backups and recovery:
|
|
442
|
+
`;
|
|
443
|
+
const KUBERNETES_TEMPLATE = `---
|
|
444
|
+
title: Kubernetes Deployment
|
|
445
|
+
slug: /applications/<project>/architecture/kubernetes
|
|
446
|
+
sidebar_label: kubernetes
|
|
447
|
+
sidebar_position: 6
|
|
448
|
+
unlisted: false
|
|
449
|
+
tags:
|
|
450
|
+
- application
|
|
451
|
+
- <project>
|
|
452
|
+
- architecture
|
|
453
|
+
- kubernetes
|
|
454
|
+
---
|
|
455
|
+
|
|
456
|
+
# Kubernetes deployment
|
|
457
|
+
|
|
458
|
+
## Environments
|
|
459
|
+
- Development:
|
|
460
|
+
- Production:
|
|
461
|
+
|
|
462
|
+
## Namespaces
|
|
463
|
+
- dev:
|
|
464
|
+
- prod:
|
|
465
|
+
|
|
466
|
+
## Core manifests
|
|
467
|
+
- deployment.yaml
|
|
468
|
+
- service.yaml
|
|
469
|
+
- ingress.yaml
|
|
470
|
+
- configmap.yaml
|
|
471
|
+
- secret.yaml
|
|
472
|
+
|
|
473
|
+
## GitOps
|
|
474
|
+
- Repo source of truth:
|
|
475
|
+
- Image automation:
|
|
476
|
+
|
|
477
|
+
## Secrets
|
|
478
|
+
- Encryption approach:
|
|
479
|
+
- Rotation plan:
|
|
480
|
+
|
|
481
|
+
## Backups
|
|
482
|
+
- Schedule:
|
|
483
|
+
- Restore verification:
|
|
484
|
+
`;
|
|
485
|
+
const WEBHOOKS_TEMPLATE = `---
|
|
486
|
+
title: Webhooks Implementation
|
|
487
|
+
slug: /applications/<project>/architecture/webhooks
|
|
488
|
+
sidebar_label: webhooks
|
|
489
|
+
sidebar_position: 4
|
|
490
|
+
unlisted: false
|
|
491
|
+
tags:
|
|
492
|
+
- application
|
|
493
|
+
- <project>
|
|
494
|
+
- architecture
|
|
495
|
+
- webhooks
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
# Webhooks implementation
|
|
499
|
+
|
|
500
|
+
## Overview
|
|
501
|
+
- What events are handled:
|
|
502
|
+
- Why webhooks vs polling:
|
|
503
|
+
|
|
504
|
+
## Architecture
|
|
505
|
+
- Flow diagram (events -> queue -> workers -> db):
|
|
506
|
+
|
|
507
|
+
## Database schema
|
|
508
|
+
- Webhook subscriptions model:
|
|
509
|
+
- Job queue model:
|
|
510
|
+
|
|
511
|
+
## Setup instructions
|
|
512
|
+
1) Environment variables
|
|
513
|
+
2) Migration or setup
|
|
514
|
+
3) Create webhook subscription
|
|
515
|
+
4) Verify delivery
|
|
516
|
+
|
|
517
|
+
## Monitoring and troubleshooting
|
|
518
|
+
- Health checks:
|
|
519
|
+
- Common failures:
|
|
520
|
+
`;
|
|
521
|
+
// =============================================================================
|
|
522
|
+
// memory_bank/context templates
|
|
523
|
+
// =============================================================================
|
|
524
|
+
const CONTEXT_TEMPLATE = `---
|
|
525
|
+
title: Context and Planning
|
|
526
|
+
slug: /applications/<project>/context
|
|
527
|
+
sidebar_label: context
|
|
528
|
+
sidebar_position: 1
|
|
529
|
+
unlisted: false
|
|
530
|
+
tags:
|
|
531
|
+
- application
|
|
532
|
+
- <project>
|
|
533
|
+
- context
|
|
534
|
+
- planning
|
|
535
|
+
---
|
|
536
|
+
|
|
537
|
+
# Context and planning
|
|
538
|
+
|
|
539
|
+
## Purpose
|
|
540
|
+
- Explain why this project exists and how decisions are made.
|
|
541
|
+
|
|
542
|
+
## Audience
|
|
543
|
+
- Primary:
|
|
544
|
+
- Secondary:
|
|
545
|
+
|
|
546
|
+
## Scope and boundaries
|
|
547
|
+
- In scope:
|
|
548
|
+
- Out of scope:
|
|
549
|
+
|
|
550
|
+
## Assumptions
|
|
551
|
+
- Assumption 1:
|
|
552
|
+
- Assumption 2:
|
|
553
|
+
|
|
554
|
+
## How this page fits in
|
|
555
|
+
- Link to brief, product, active, canvas, changelog.
|
|
556
|
+
|
|
557
|
+
## Success criteria
|
|
558
|
+
- Criterion 1:
|
|
559
|
+
- Criterion 2:
|
|
560
|
+
`;
|
|
202
561
|
const BRIEF_TEMPLATE = `---
|
|
203
562
|
title: Project Brief
|
|
204
563
|
slug: /applications/<project>/context/brief
|
|
@@ -284,6 +643,146 @@ tags:
|
|
|
284
643
|
- One change → one run
|
|
285
644
|
- Keep the model locked (no Auto)
|
|
286
645
|
`;
|
|
646
|
+
const PRODUCT_TEMPLATE = `---
|
|
647
|
+
title: Product Context
|
|
648
|
+
slug: /applications/<project>/context/product
|
|
649
|
+
sidebar_label: product
|
|
650
|
+
sidebar_position: 3
|
|
651
|
+
unlisted: false
|
|
652
|
+
tags:
|
|
653
|
+
- application
|
|
654
|
+
- <project>
|
|
655
|
+
- context
|
|
656
|
+
- product
|
|
657
|
+
---
|
|
658
|
+
|
|
659
|
+
# Product context
|
|
660
|
+
|
|
661
|
+
## Purpose
|
|
662
|
+
- Explain the product intent and why it exists.
|
|
663
|
+
|
|
664
|
+
## Guiding themes
|
|
665
|
+
- Theme 1:
|
|
666
|
+
- Theme 2:
|
|
667
|
+
|
|
668
|
+
## Stages overview
|
|
669
|
+
1. Stage 1:
|
|
670
|
+
2. Stage 2:
|
|
671
|
+
|
|
672
|
+
## Who this is for
|
|
673
|
+
- Persona 1:
|
|
674
|
+
- Persona 2:
|
|
675
|
+
|
|
676
|
+
## Jobs to be done
|
|
677
|
+
- Job 1:
|
|
678
|
+
- Job 2:
|
|
679
|
+
|
|
680
|
+
## Principles
|
|
681
|
+
- Principle 1:
|
|
682
|
+
- Principle 2:
|
|
683
|
+
`;
|
|
684
|
+
const CANVAS_TEMPLATE = `---
|
|
685
|
+
title: Lean Canvas
|
|
686
|
+
slug: /applications/<project>/context/canvas
|
|
687
|
+
sidebar_label: canvas
|
|
688
|
+
sidebar_position: 4
|
|
689
|
+
unlisted: false
|
|
690
|
+
tags:
|
|
691
|
+
- application
|
|
692
|
+
- <project>
|
|
693
|
+
- context
|
|
694
|
+
- planning
|
|
695
|
+
- canvas
|
|
696
|
+
---
|
|
697
|
+
|
|
698
|
+
# Concise lean canvas
|
|
699
|
+
|
|
700
|
+
## 1. Problem
|
|
701
|
+
- Problem 1:
|
|
702
|
+
- Problem 2:
|
|
703
|
+
|
|
704
|
+
## 2. Customer segments
|
|
705
|
+
- Segment 1:
|
|
706
|
+
- Segment 2:
|
|
707
|
+
|
|
708
|
+
## 3. Unique value proposition (UVP)
|
|
709
|
+
- One sentence UVP:
|
|
710
|
+
|
|
711
|
+
## 4. Solution
|
|
712
|
+
- Solution 1:
|
|
713
|
+
- Solution 2:
|
|
714
|
+
|
|
715
|
+
## 5. Channels
|
|
716
|
+
- Channel 1:
|
|
717
|
+
- Channel 2:
|
|
718
|
+
|
|
719
|
+
## 6. Revenue streams
|
|
720
|
+
- Revenue 1:
|
|
721
|
+
- Revenue 2:
|
|
722
|
+
|
|
723
|
+
## 7. Cost structure
|
|
724
|
+
- Cost 1:
|
|
725
|
+
- Cost 2:
|
|
726
|
+
|
|
727
|
+
## 8. Key metrics
|
|
728
|
+
- Metric 1:
|
|
729
|
+
- Metric 2:
|
|
730
|
+
|
|
731
|
+
## 9. Unfair advantage
|
|
732
|
+
- Advantage:
|
|
733
|
+
`;
|
|
734
|
+
const CHANGELOG_TEMPLATE = `---
|
|
735
|
+
title: Changelog
|
|
736
|
+
slug: /applications/<project>/context/changelog
|
|
737
|
+
sidebar_label: changelog
|
|
738
|
+
sidebar_position: 5
|
|
739
|
+
unlisted: false
|
|
740
|
+
tags:
|
|
741
|
+
- application
|
|
742
|
+
- <project>
|
|
743
|
+
- context
|
|
744
|
+
- changelog
|
|
745
|
+
---
|
|
746
|
+
|
|
747
|
+
# Changelog
|
|
748
|
+
|
|
749
|
+
## YYYY-MM-DD
|
|
750
|
+
- Change summary:
|
|
751
|
+
- Rationale:
|
|
752
|
+
`;
|
|
753
|
+
// =============================================================================
|
|
754
|
+
// memory_bank/execution templates
|
|
755
|
+
// =============================================================================
|
|
756
|
+
const EXECUTION_TEMPLATE = `---
|
|
757
|
+
title: Execution and Tracking
|
|
758
|
+
slug: /applications/<project>/execution
|
|
759
|
+
sidebar_label: execution
|
|
760
|
+
sidebar_position: 3
|
|
761
|
+
unlisted: false
|
|
762
|
+
tags:
|
|
763
|
+
- application
|
|
764
|
+
- <project>
|
|
765
|
+
- execution
|
|
766
|
+
---
|
|
767
|
+
|
|
768
|
+
# Execution and tracking
|
|
769
|
+
|
|
770
|
+
## Purpose
|
|
771
|
+
- Make delivery visible and repeatable.
|
|
772
|
+
|
|
773
|
+
## Audience
|
|
774
|
+
- Primary builder
|
|
775
|
+
- Future contributors
|
|
776
|
+
|
|
777
|
+
## What this covers
|
|
778
|
+
- Progress updates
|
|
779
|
+
- Decision log
|
|
780
|
+
- Debug diary
|
|
781
|
+
- Git hygiene
|
|
782
|
+
|
|
783
|
+
## Success criteria
|
|
784
|
+
- Dated entries for progress, decisions, and debug.
|
|
785
|
+
`;
|
|
287
786
|
const PROGRESS_TEMPLATE = `---
|
|
288
787
|
title: Progress
|
|
289
788
|
slug: /applications/<project>/execution/progress
|
|
@@ -358,6 +857,101 @@ tags:
|
|
|
358
857
|
- Alternatives:
|
|
359
858
|
- Impact:
|
|
360
859
|
`;
|
|
860
|
+
const DEBUG_TEMPLATE = `---
|
|
861
|
+
title: Debug Diary
|
|
862
|
+
slug: /applications/<project>/execution/diary
|
|
863
|
+
sidebar_label: diary
|
|
864
|
+
sidebar_position: 2
|
|
865
|
+
unlisted: false
|
|
866
|
+
tags:
|
|
867
|
+
- application
|
|
868
|
+
- <project>
|
|
869
|
+
- execution
|
|
870
|
+
- diary
|
|
871
|
+
---
|
|
872
|
+
|
|
873
|
+
# Debug diary
|
|
874
|
+
|
|
875
|
+
## Structure
|
|
876
|
+
- Date
|
|
877
|
+
- Context
|
|
878
|
+
- Issue
|
|
879
|
+
- Investigation
|
|
880
|
+
- Fix
|
|
881
|
+
- Lesson
|
|
882
|
+
|
|
883
|
+
## Debug history
|
|
884
|
+
### YYYY-MM-DD
|
|
885
|
+
- Context:
|
|
886
|
+
- Issue:
|
|
887
|
+
- Investigation:
|
|
888
|
+
- Fix:
|
|
889
|
+
- Lesson:
|
|
890
|
+
`;
|
|
891
|
+
const GIT_TEMPLATE = `---
|
|
892
|
+
title: Git Setup and Code Quality
|
|
893
|
+
slug: /applications/<project>/execution/git
|
|
894
|
+
sidebar_label: git
|
|
895
|
+
sidebar_position: 4
|
|
896
|
+
unlisted: false
|
|
897
|
+
tags:
|
|
898
|
+
- application
|
|
899
|
+
- <project>
|
|
900
|
+
- execution
|
|
901
|
+
- git
|
|
902
|
+
- quality
|
|
903
|
+
---
|
|
904
|
+
|
|
905
|
+
# Git setup and code quality
|
|
906
|
+
|
|
907
|
+
## Initial repository setup
|
|
908
|
+
\`\`\`bash
|
|
909
|
+
git init
|
|
910
|
+
git checkout -b main
|
|
911
|
+
git add .
|
|
912
|
+
git commit -m "Initial commit"
|
|
913
|
+
\`\`\`
|
|
914
|
+
|
|
915
|
+
## GitLab setup
|
|
916
|
+
\`\`\`bash
|
|
917
|
+
# Replace with your GitLab host
|
|
918
|
+
glab auth status --hostname <gitlab-host>
|
|
919
|
+
glab repo create <group>/<project> --private
|
|
920
|
+
\`\`\`
|
|
921
|
+
|
|
922
|
+
## Code quality tools
|
|
923
|
+
- Prettier
|
|
924
|
+
- ESLint
|
|
925
|
+
- Husky
|
|
926
|
+
|
|
927
|
+
## Scripts
|
|
928
|
+
\`\`\`bash
|
|
929
|
+
npm run format
|
|
930
|
+
npm run lint
|
|
931
|
+
npm run typecheck
|
|
932
|
+
npm test
|
|
933
|
+
\`\`\`
|
|
934
|
+
`;
|
|
935
|
+
// =============================================================================
|
|
936
|
+
// memory_bank/reference template
|
|
937
|
+
// =============================================================================
|
|
938
|
+
const REFERENCE_README_TEMPLATE = `# Reference
|
|
939
|
+
|
|
940
|
+
This folder contains reference materials for the project.
|
|
941
|
+
|
|
942
|
+
## What belongs here
|
|
943
|
+
|
|
944
|
+
- API documentation
|
|
945
|
+
- Third-party service docs
|
|
946
|
+
- Design specifications
|
|
947
|
+
- Research notes
|
|
948
|
+
- External requirements
|
|
949
|
+
|
|
950
|
+
## Usage
|
|
951
|
+
|
|
952
|
+
Store any reference materials that help understand the project but are not
|
|
953
|
+
part of the core context, architecture, or execution tracking.
|
|
954
|
+
`;
|
|
361
955
|
// =============================================================================
|
|
362
956
|
// .cursor/rules template
|
|
363
957
|
// =============================================================================
|
package/dist/templates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,OAAO;QACL,kBAAkB;QAClB;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,oBAAoB;SAC9B;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,cAAc;SACxB;QACD;YACE,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,gBAAgB;SAC1B;QACD;YACE,IAAI,EAAE,6BAA6B;YACnC,OAAO,EAAE,uBAAuB;SACjC;QACD,4BAA4B;QAC5B;YACE,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC;SAC3D;QACD;YACE,IAAI,EAAE,+BAA+B;YACrC,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC;SAC5D;QACD,8BAA8B;QAC9B;YACE,IAAI,EAAE,mCAAmC;YACzC,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC;SAC9D;QACD;YACE,IAAI,EAAE,oCAAoC;YAC1C,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC;SAC/D;QACD,qBAAqB;QACrB;YACE,IAAI,EAAE,kCAAkC;YACxC,OAAO,EAAE,qBAAqB;SAC/B;KACF,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2E5B,CAAC;AAEF,MAAM,cAAc,GAAG;;;;;;;;;;;;CAYtB,CAAC;AAEF,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;CAaxB,CAAC;AAEF,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuC/B,CAAC;AAEF,gFAAgF;AAChF,
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
|