@projitive/mcp 1.0.4 → 1.0.6

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.
Files changed (55) hide show
  1. package/README.md +4 -4
  2. package/output/package.json +4 -5
  3. package/output/source/design-context.js +515 -0
  4. package/output/source/index.js +50 -41
  5. package/output/source/projitive.js +8 -9
  6. package/output/source/roadmap.js +2 -2
  7. package/output/source/tasks.js +5 -6
  8. package/package.json +4 -5
  9. package/output/designs.js +0 -38
  10. package/output/helpers/artifacts/artifacts.js +0 -10
  11. package/output/helpers/artifacts/artifacts.test.js +0 -18
  12. package/output/helpers/artifacts/index.js +0 -1
  13. package/output/helpers/catch/catch.js +0 -48
  14. package/output/helpers/catch/catch.test.js +0 -43
  15. package/output/helpers/catch/index.js +0 -1
  16. package/output/helpers/files/files.js +0 -62
  17. package/output/helpers/files/files.test.js +0 -32
  18. package/output/helpers/files/index.js +0 -1
  19. package/output/helpers/index.js +0 -6
  20. package/output/helpers/linter/codes.js +0 -25
  21. package/output/helpers/linter/index.js +0 -2
  22. package/output/helpers/linter/linter.js +0 -6
  23. package/output/helpers/linter/linter.test.js +0 -16
  24. package/output/helpers/markdown/index.js +0 -1
  25. package/output/helpers/markdown/markdown.js +0 -33
  26. package/output/helpers/markdown/markdown.test.js +0 -36
  27. package/output/helpers/response/index.js +0 -1
  28. package/output/helpers/response/response.js +0 -73
  29. package/output/helpers/response/response.test.js +0 -50
  30. package/output/hooks.js +0 -49
  31. package/output/hooks.test.js +0 -40
  32. package/output/index.js +0 -227
  33. package/output/projitive.js +0 -488
  34. package/output/projitive.test.js +0 -75
  35. package/output/prompts.js +0 -87
  36. package/output/readme.js +0 -26
  37. package/output/rendering-input-guard.test.js +0 -20
  38. package/output/reports.js +0 -36
  39. package/output/resources.js +0 -95
  40. package/output/roadmap.js +0 -165
  41. package/output/roadmap.test.js +0 -11
  42. package/output/smoke-reports/2026-02-18T13-18-19-740Z/projectContext.md +0 -48
  43. package/output/smoke-reports/2026-02-18T13-18-19-740Z/projectInit.md +0 -40
  44. package/output/smoke-reports/2026-02-18T13-18-19-740Z/projectLocate.md +0 -22
  45. package/output/smoke-reports/2026-02-18T13-18-19-740Z/projectNext.md +0 -31
  46. package/output/smoke-reports/2026-02-18T13-18-19-740Z/projectScan.md +0 -28
  47. package/output/smoke-reports/2026-02-18T13-18-19-740Z/roadmapContext.md +0 -33
  48. package/output/smoke-reports/2026-02-18T13-18-19-740Z/roadmapList.md +0 -25
  49. package/output/smoke-reports/2026-02-18T13-18-19-740Z/summary.json +0 -90
  50. package/output/smoke-reports/2026-02-18T13-18-19-740Z/summary.md +0 -17
  51. package/output/smoke-reports/2026-02-18T13-18-19-740Z/taskContext.md +0 -47
  52. package/output/smoke-reports/2026-02-18T13-18-19-740Z/taskList.md +0 -27
  53. package/output/smoke-reports/2026-02-18T13-18-19-740Z/taskNext.md +0 -64
  54. package/output/tasks.js +0 -762
  55. package/output/tasks.test.js +0 -152
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Language: English | [简体中文](README_CN.md)
4
4
 
5
- **Current Spec Version: projitive-spec v1.0.0 | MCP Version: 1.0.4**
5
+ **Current Spec Version: projitive-spec v1.0.0 | MCP Version: 1.0.6**
6
6
 
7
7
  Projitive MCP server (semantic interface edition) helps agents discover projects, select tasks, locate evidence, and execute under governance workflows.
8
8
 
@@ -149,7 +149,7 @@ npm run test
149
149
  #### `projectInit`
150
150
 
151
151
  - **Purpose**: manually initialize governance directory structure for a project (default `.projitive`).
152
- - **Input**: `projectPath?`, `governanceDir?`, `force?`
152
+ - **Input**: `projectPath`, `governanceDir?`, `force?`
153
153
  - **Output Example (Markdown)**:
154
154
 
155
155
  ```markdown
@@ -177,7 +177,7 @@ npm run test
177
177
  #### `projectNext`
178
178
 
179
179
  - **Purpose**: directly list recently actionable projects (ranked by actionable task count and recency).
180
- - **Input**: `rootPath?`, `maxDepth?`, `limit?`
180
+ - **Input**: `maxDepth?`, `limit?`
181
181
  - **Output Example (Markdown)**:
182
182
 
183
183
  ```markdown
@@ -294,7 +294,7 @@ npm run test
294
294
  #### `taskNext`
295
295
 
296
296
  - **Purpose**: one-step workflow for project discovery + best task selection + evidence/read-order output.
297
- - **Input**: `rootPath?`, `maxDepth?`, `topCandidates?`
297
+ - **Input**: `maxDepth?`, `topCandidates?`
298
298
  - **Output Example (Markdown)**:
299
299
 
300
300
  ```markdown
@@ -1,22 +1,21 @@
1
1
  {
2
2
  "name": "@projitive/mcp",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "Projitive MCP Server for project and task discovery/update",
5
5
  "license": "ISC",
6
6
  "author": "",
7
7
  "type": "module",
8
8
  "bin": {
9
- "mcp": "output/index.js"
9
+ "mcp": "output/source/index.js"
10
10
  },
11
- "main": "./output/index.js",
12
- "types": "./output/index.d.ts",
11
+ "main": "./output/source/index.js",
13
12
  "publishConfig": {
14
13
  "access": "public"
15
14
  },
16
15
  "scripts": {
17
16
  "test": "vitest run",
18
17
  "lint": "tsc -p tsconfig.json --noEmit",
19
- "build": "tsc -p tsconfig.json",
18
+ "build": "rm -rf output && tsc -p tsconfig.json",
20
19
  "prepublishOnly": "npm run build",
21
20
  "dev": "tsc -p tsconfig.json --watch"
22
21
  },
@@ -0,0 +1,515 @@
1
+ // Design Context Module for Projitive MCP
2
+ // Provides fast-start design context for agents to understand Projitive goals, constraints, and execution rules
3
+ export function registerDesignContextResources(server) {
4
+ server.registerResource("designQuickStart", "projitive://design/quick-start", {
5
+ title: "Design Quick Start",
6
+ description: "Fast-start guide to Projitive design goals, constraints, and execution rules",
7
+ mimeType: "text/markdown",
8
+ }, async () => ({
9
+ contents: [
10
+ {
11
+ uri: "projitive://design/quick-start",
12
+ text: renderDesignQuickStart(),
13
+ },
14
+ ],
15
+ }));
16
+ server.registerResource("designPrinciples", "projitive://design/principles", {
17
+ title: "Design Principles",
18
+ description: "Core design principles governing Projitive specification and MCP implementation",
19
+ mimeType: "text/markdown",
20
+ }, async () => ({
21
+ contents: [
22
+ {
23
+ uri: "projitive://design/principles",
24
+ text: renderDesignPrinciples(),
25
+ },
26
+ ],
27
+ }));
28
+ server.registerResource("executionRules", "projitive://design/execution-rules", {
29
+ title: "Execution Rules",
30
+ description: "Mandatory rules for agent execution within Projitive governance",
31
+ mimeType: "text/markdown",
32
+ }, async () => ({
33
+ contents: [
34
+ {
35
+ uri: "projitive://design/execution-rules",
36
+ text: renderExecutionRules(),
37
+ },
38
+ ],
39
+ }));
40
+ }
41
+ export function registerDesignContextPrompts(server) {
42
+ server.registerPrompt("understandDesignContext", {
43
+ title: "Understand Design Context",
44
+ description: "Quickly load Projitive design goals, constraints, and execution rules",
45
+ argsSchema: {},
46
+ }, async () => ({
47
+ messages: [
48
+ {
49
+ role: "user",
50
+ content: {
51
+ type: "text",
52
+ text: [
53
+ "Load Projitive design context to understand:",
54
+ "1. Design goals and principles",
55
+ "2. Constraints and boundaries",
56
+ "3. Execution rules for agents",
57
+ "",
58
+ "Read these resources in order:",
59
+ "1. projitive://design/quick-start",
60
+ "2. projitive://design/principles",
61
+ "3. projitive://design/execution-rules",
62
+ "",
63
+ "After reading, you should understand:",
64
+ "- Projitive is a governance specification for agent-executable projects",
65
+ "- MCP is one implementation of this spec",
66
+ "- Governance artifacts are markdown-first",
67
+ "- IDs must remain immutable, evidence is required for transitions",
68
+ "- Agents follow: discover -> decide -> execute -> verify",
69
+ ].join("\n"),
70
+ },
71
+ },
72
+ ],
73
+ }));
74
+ server.registerPrompt("fastStartExecution", {
75
+ title: "Fast Start Execution",
76
+ description: "Minimal steps to start executing within Projitive governance",
77
+ argsSchema: {},
78
+ }, async () => ({
79
+ messages: [
80
+ {
81
+ role: "user",
82
+ content: {
83
+ type: "text",
84
+ text: [
85
+ "Execute Projitive task with minimal calls:",
86
+ "",
87
+ "Prerequisite:",
88
+ "- If target project has no `.projitive`, run: projectInit(projectPath=<project-dir>)",
89
+ "",
90
+ "STEP 1: Get task (1 call)",
91
+ "- Run: taskNext()",
92
+ "- Result: selectedTaskId, suggestedReadOrder",
93
+ "",
94
+ "STEP 2: Load context (1-2 calls)",
95
+ "- Read files in suggestedReadOrder",
96
+ "- If design context needed: read projitive://design/quick-start",
97
+ "",
98
+ "STEP 3: Execute task",
99
+ "- Edit governance markdown only (tasks/designs/reports)",
100
+ "- Update task status with evidence",
101
+ "",
102
+ "STEP 4: Verify (1 call)",
103
+ "- Run: taskContext(projectPath, taskId)",
104
+ "- Confirm status/evidence/reference consistency",
105
+ "",
106
+ "Total calls: 4-6 per task execution cycle",
107
+ ].join("\n"),
108
+ },
109
+ },
110
+ ],
111
+ }));
112
+ }
113
+ // Content renderers
114
+ function renderDesignQuickStart() {
115
+ return [
116
+ "# Projitive Design Quick Start",
117
+ "",
118
+ "**Version:** 1.0.0 ",
119
+ "**Purpose:** Fast-start guide for agents to understand Projitive design goals, constraints, and execution rules",
120
+ "",
121
+ "## What is Projitive?",
122
+ "",
123
+ "Projitive is a **governance specification** for agent-executable projects. It defines:",
124
+ "- How projects self-describe their goals, tasks, and progress",
125
+ "- How agents discover and execute work within governance constraints",
126
+ "- How evidence is captured and validated for state transitions",
127
+ "",
128
+ "**MCP (Model Context Protocol)** is one implementation of Projitive spec.",
129
+ "",
130
+ "## Core Design Goals",
131
+ "",
132
+ "| Goal | Description |",
133
+ "|------|-------------|",
134
+ "| **Agent-First** | Governance designed for AI agents, not just human readers |",
135
+ "| **Markdown-First** | All artifacts are markdown with semantic markers |",
136
+ "| **Evidence-First** | Every state change requires evidence |",
137
+ "| **Immutable IDs** | TASK/ROADMAP IDs never change |",
138
+ "| **Discoverable** | One-call task discovery via `taskNext` |",
139
+ "",
140
+ "## Execution Constraints",
141
+ "",
142
+ "### Hard Rules (Never Violate)",
143
+ "",
144
+ "1. **ID Immutability**: TASK-XXXX and ROADMAP-XXXX IDs must never change",
145
+ "2. **Evidence Required**: Every status transition must have report evidence",
146
+ "3. **Markdown Governance**: Only edit files in `.projitive/` (tasks.md, roadmap.md, designs/, reports/)",
147
+ "4. **Status Machine**: Only valid transitions (TODO↔IN_PROGRESS, IN_PROGRESS→BLOCKED, BLOCKED→IN_PROGRESS, IN_PROGRESS→DONE)",
148
+ "",
149
+ "### Soft Guidelines (Prefer When Possible)",
150
+ "",
151
+ "- Update `updatedAt` timestamp on every task change",
152
+ "- Link reports in task `links` array",
153
+ "- Use `roadmapRefs` to connect tasks to roadmap items",
154
+ "- Create hooks in `.projitive/hooks/` for custom no-task behavior",
155
+ "",
156
+ "## Agent Execution Loop",
157
+ "",
158
+ "```",
159
+ "taskNext → taskContext → execute → taskContext (verify) → taskNext",
160
+ "```",
161
+ "",
162
+ "### Step-by-Step",
163
+ "",
164
+ "1. **Discover**: Call `taskNext` to get highest-priority actionable task",
165
+ "2. **Context**: Call `taskContext` to get full task details and read order",
166
+ "3. **Read**: Read files in suggested read order",
167
+ "4. **Execute**: Edit governance markdown, update task status with evidence",
168
+ "5. **Verify**: Re-run `taskContext` to confirm consistency",
169
+ "6. **Repeat**: Call `taskNext` for next task",
170
+ "",
171
+ "## Quick Reference",
172
+ "",
173
+ "| Resource | URI | Purpose |",
174
+ "|----------|-----|---------|",
175
+ "| Design Quick Start | `projitive://design/quick-start` | This document |",
176
+ "| Design Principles | `projitive://design/principles` | Core design principles |",
177
+ "| Execution Rules | `projitive://design/execution-rules` | Mandatory execution rules |",
178
+ "| Governance Workspace | `projitive://governance/workspace` | Primary governance README |",
179
+ "| Governance Tasks | `projitive://governance/tasks` | Current task pool |",
180
+ "| Governance Roadmap | `projitive://governance/roadmap` | Current roadmap |",
181
+ "| MCP Method Catalog | `projitive://mcp/method-catalog` | Method naming and purpose |",
182
+ "",
183
+ "## Next Steps",
184
+ "",
185
+ "1. Read `projitive://design/principles` for core design principles",
186
+ "2. Read `projitive://design/execution-rules` for mandatory rules",
187
+ "3. Run `taskNext` to discover your first task",
188
+ "4. Follow the Agent Execution Loop",
189
+ "",
190
+ "---",
191
+ "*Part of Projitive Design Context resources. See TASK-0006 for implementation details.*",
192
+ ].join("\n");
193
+ }
194
+ function renderDesignPrinciples() {
195
+ return [
196
+ "# Projitive Design Principles",
197
+ "",
198
+ "**Version:** 1.0.0 ",
199
+ "**Purpose:** Core design principles governing Projitive specification and MCP implementation",
200
+ "",
201
+ "## 1. Agent-First Design",
202
+ "",
203
+ "**Principle:** Governance artifacts are designed primarily for AI agents, not just human readers.",
204
+ "",
205
+ "### Implications",
206
+ "- One-call task discovery via `taskNext`",
207
+ "- Markdown-first outputs optimized for agent parsing",
208
+ "- Semantic markers for stable machine reading",
209
+ "- Clear read order suggestions in tool outputs",
210
+ "",
211
+ "### Examples",
212
+ "```markdown",
213
+ "## TASK-0001 | DONE | Bootstrap repository",
214
+ "- owner: ai-copilot",
215
+ "- summary: Create baseline governance artifacts",
216
+ "- updatedAt: 2026-02-21T07:48:00.000Z",
217
+ "```",
218
+ "",
219
+ "## 2. Markdown-First Artifacts",
220
+ "",
221
+ "**Principle:** All governance artifacts are markdown files with semantic structure.",
222
+ "",
223
+ "### Implications",
224
+ "- Human-readable and machine-parseable",
225
+ "- Version control friendly (git diffs)",
226
+ "- No binary lockfiles or proprietary formats",
227
+ "- Extensible through markdown conventions",
228
+ "",
229
+ "### Required Files",
230
+ "",
231
+ "| File | Purpose |",
232
+ "|------|---------|",
233
+ "| `.projitive/README.md` | Governance workspace overview |",
234
+ "| `.projitive/tasks.md` | Task pool and status |",
235
+ "| `.projitive/roadmap.md` | Roadmap items and milestones |",
236
+ "| `.projitive/designs/*.md` | Design specifications |",
237
+ "| `.projitive/reports/*.md` | Execution reports and evidence |",
238
+ "",
239
+ "## 3. Evidence-First Transitions",
240
+ "",
241
+ "**Principle:** Every state change requires evidence to be valid.",
242
+ "",
243
+ "### Implications",
244
+ "- Status transitions without evidence are rejected",
245
+ "- Reports in `.projitive/reports/` serve as evidence",
246
+ "- Task `links` array must reference reports",
247
+ "- `updatedAt` timestamp tracks when evidence was added",
248
+ "",
249
+ "### Evidence Requirements by Transition",
250
+ "",
251
+ "| Transition | Required Evidence |",
252
+ "|------------|-------------------|",
253
+ "| TODO → IN_PROGRESS | Task assignment, initial plan |",
254
+ "| IN_PROGRESS → DONE | Completion report, test results |",
255
+ "| IN_PROGRESS → BLOCKED | Blocker description, escalation path |",
256
+ "| BLOCKED → IN_PROGRESS | Unblock confirmation, new plan |",
257
+ "",
258
+ "### Example Evidence Report",
259
+ "",
260
+ "```markdown",
261
+ "# Task Completion Report: TASK-0006",
262
+ "",
263
+ "**Date:** 2026-02-21 ",
264
+ "**Task:** Enhance MCP design onboarding context ",
265
+ "**Status:** DONE",
266
+ "",
267
+ "## Evidence",
268
+ "",
269
+ "1. Created `design-context.ts` with 3 new resources:",
270
+ " - projitive://design/quick-start",
271
+ " - projitive://design/principles",
272
+ " - projitive://design/execution-rules",
273
+ "",
274
+ "2. Added 2 new prompts:",
275
+ " - understandDesignContext",
276
+ " - fastStartExecution",
277
+ "",
278
+ "## Verification",
279
+ "",
280
+ "- All resources accessible via MCP",
281
+ "- Prompts provide actionable guidance",
282
+ "- Design context reduces discovery calls from 5-7 to 1-2",
283
+ "```",
284
+ "",
285
+ "## 4. Immutable IDs",
286
+ "",
287
+ "**Principle:** TASK and ROADMAP IDs must never change once created.",
288
+ "",
289
+ "### Implications",
290
+ "- IDs are permanent references across all artifacts",
291
+ "- Renaming requires creating new ID, deprecating old",
292
+ "- Links and references remain stable over time",
293
+ "- Version history is traceable through immutable IDs",
294
+ "",
295
+ "### ID Format",
296
+ "",
297
+ "```",
298
+ "TASK-XXXX # 4-digit sequential task ID",
299
+ "ROADMAP-XXXX # 4-digit sequential roadmap ID",
300
+ "DESIGN-XXXX # 4-digit sequential design ID",
301
+ "```",
302
+ "",
303
+ "## 5. Discoverable Execution",
304
+ "",
305
+ "**Principle:** Agents must be able to discover and execute work with minimal calls.",
306
+ "",
307
+ "### Implications",
308
+ "- One-call task discovery via `taskNext`",
309
+ "- Clear read order in tool outputs",
310
+ "- Hints for next call in every response",
311
+ "- Fallback paths when no actionable tasks exist",
312
+ "",
313
+ "### Execution Loop",
314
+ "",
315
+ "```",
316
+ "┌─────────┐ ┌─────────────┐ ┌──────────┐",
317
+ "│ taskNext │ -> │ taskContext │ -> │ Execute │",
318
+ "└─────────┘ └─────────────┘ └──────────┘",
319
+ " ^ │",
320
+ " └────────────────────────────────────┘",
321
+ " Verify",
322
+ "```",
323
+ "",
324
+ "### Target Metrics",
325
+ "",
326
+ "| Metric | Before | After |",
327
+ "|--------|--------|-------|",
328
+ "| Calls to discover task | 3-5 | 1 |",
329
+ "| Calls to get context | 2-3 | 1 |",
330
+ "| Calls to verify | 2-3 | 1 |",
331
+ "| Total per cycle | 7-11 | 3-4 |",
332
+ "",
333
+ "---",
334
+ "*Part of Projitive Design Context resources. See TASK-0006 for implementation details.*",
335
+ ].join("\n");
336
+ }
337
+ function renderExecutionRules() {
338
+ return [
339
+ "# Projitive Execution Rules",
340
+ "",
341
+ "**Version:** 1.0.0 ",
342
+ "**Purpose:** Mandatory rules for agent execution within Projitive governance",
343
+ "",
344
+ "> ⚠️ **WARNING**: Violation of Hard Rules may corrupt governance state. Always verify before committing changes.",
345
+ "",
346
+ "## Hard Rules (Never Violate)",
347
+ "",
348
+ "### RULE-1: ID Immutability",
349
+ "",
350
+ "**Rule**: TASK-XXXX and ROADMAP-XXXX IDs must never change once created.",
351
+ "",
352
+ "**Rationale**: IDs are permanent references. Changing them breaks all links and history.",
353
+ "",
354
+ "**Valid Actions**:",
355
+ "- Create new ID with new content",
356
+ "- Mark old ID as deprecated with link to new ID",
357
+ "- Update references to point to new ID",
358
+ "",
359
+ "**Invalid Actions**:",
360
+ "- Edit existing ID number",
361
+ "- Rename TASK-0001 to TASK-0002",
362
+ "- Reuse ID after deletion",
363
+ "",
364
+ "---",
365
+ "",
366
+ "### RULE-2: Evidence Required",
367
+ "",
368
+ "**Rule**: Every status transition must have evidence in `.projitive/reports/`.",
369
+ "",
370
+ "**Rationale**: Without evidence, status changes are unverifiable. Reports provide audit trail.",
371
+ "",
372
+ "**Valid Actions**:",
373
+ "- Create report before marking DONE",
374
+ "- Link report in task `links` array",
375
+ "- Update `updatedAt` timestamp",
376
+ "",
377
+ "**Invalid Actions**:",
378
+ "- Mark DONE without report",
379
+ "- Delete report after status change",
380
+ "- Use external evidence without linking",
381
+ "",
382
+ "**Evidence Requirements by Transition**:",
383
+ "",
384
+ "| Transition | Required Evidence |",
385
+ "|------------|-------------------|",
386
+ "| TODO → IN_PROGRESS | Task assignment, initial plan |",
387
+ "| IN_PROGRESS → DONE | Completion report, test results |",
388
+ "| IN_PROGRESS → BLOCKED | Blocker description, escalation path |",
389
+ "| BLOCKED → IN_PROGRESS | Unblock confirmation, new plan |",
390
+ "",
391
+ "---",
392
+ "",
393
+ "### RULE-3: Markdown Governance Only",
394
+ "",
395
+ "**Rule**: Only edit files in `.projitive/` directory (tasks.md, roadmap.md, designs/, reports/).",
396
+ "",
397
+ "**Rationale**: Governance state must be isolated from implementation. Mixing concerns corrupts both.",
398
+ "",
399
+ "**Valid Actions**:",
400
+ "- Edit `.projitive/tasks.md`",
401
+ "- Create `.projitive/reports/*.md`",
402
+ "- Update `.projitive/roadmap.md`",
403
+ "- Modify `.projitive/designs/*.md`",
404
+ "",
405
+ "**Invalid Actions**:",
406
+ "- Edit source code files",
407
+ "- Modify tests to fit governance",
408
+ "- Change implementation to match reports",
409
+ "",
410
+ "**Governance File Purposes**:",
411
+ "",
412
+ "| File | Purpose |",
413
+ "|------|---------|",
414
+ "| `.projitive/README.md` | Governance workspace overview |",
415
+ "| `.projitive/tasks.md` | Task pool and status tracking |",
416
+ "| `.projitive/roadmap.md` | Roadmap items and milestones |",
417
+ "| `.projitive/designs/*.md` | Design specifications |",
418
+ "| `.projitive/reports/*.md` | Execution reports and evidence |",
419
+ "| `.projitive/hooks/*.md` | Lifecycle hooks and custom prompts |",
420
+ "",
421
+ "---",
422
+ "",
423
+ "### RULE-4: Status Machine",
424
+ "",
425
+ "**Rule**: Only valid status transitions are allowed.",
426
+ "",
427
+ "**Valid Transitions**:",
428
+ "",
429
+ "```",
430
+ "TODO ↔ IN_PROGRESS",
431
+ "IN_PROGRESS → BLOCKED",
432
+ "BLOCKED → IN_PROGRESS",
433
+ "IN_PROGRESS → DONE",
434
+ "```",
435
+ "",
436
+ "**Invalid Transitions**:",
437
+ "",
438
+ "| Invalid | Reason |",
439
+ "|---------|--------|",
440
+ "| TODO → DONE | Missing execution evidence |",
441
+ "| DONE → any | Terminal state, create new task if needed |",
442
+ "| BLOCKED → DONE | Must go through IN_PROGRESS |",
443
+ "| any → TODO | No reset, create new task instead |",
444
+ "",
445
+ "---",
446
+ "",
447
+ "## Soft Guidelines (Prefer When Possible)",
448
+ "",
449
+ "### GUIDELINE-1: Update Timestamps",
450
+ "",
451
+ "Update `updatedAt` field whenever modifying a task.",
452
+ "",
453
+ "**Format**: ISO 8601 UTC (e.g., `2026-02-21T14:30:00.000Z`)",
454
+ "",
455
+ "---",
456
+ "",
457
+ "### GUIDELINE-2: Link Reports",
458
+ "",
459
+ "Add report paths to task `links` array for traceability.",
460
+ "",
461
+ "**Example**:",
462
+ "```yaml",
463
+ "links:",
464
+ " - ./reports/task-0001-completion-2026-02-21.md",
465
+ "```",
466
+ "",
467
+ "---",
468
+ "",
469
+ "### GUIDELINE-3: Roadmap References",
470
+ "",
471
+ "Connect tasks to roadmap items via `roadmapRefs`.",
472
+ "",
473
+ "**Example**:",
474
+ "```yaml",
475
+ "roadmapRefs: ROADMAP-0001",
476
+ "```",
477
+ "",
478
+ "---",
479
+ "",
480
+ "### GUIDELINE-4: Custom Hooks",
481
+ "",
482
+ "Create hooks in `.projitive/hooks/` for custom behavior.",
483
+ "",
484
+ "**Standard Hook Files**:",
485
+ "",
486
+ "| File | Purpose |",
487
+ "|------|---------|",
488
+ "| `task_no_actionable.md` | Custom prompt when no tasks available |",
489
+ "",
490
+ "---",
491
+ "",
492
+ "## Verification Checklist",
493
+ "",
494
+ "Before committing changes, verify:",
495
+ "",
496
+ "- [ ] No ID changes (TASK/ROADMAP IDs unchanged)",
497
+ "- [ ] Evidence exists for status transitions",
498
+ "- [ ] Only `.projitive/` files modified",
499
+ "- [ ] Valid status transition per state machine",
500
+ "- [ ] `updatedAt` timestamp updated (guideline)",
501
+ "- [ ] Report linked in task `links` (guideline)",
502
+ "",
503
+ "---",
504
+ "",
505
+ "## See Also",
506
+ "",
507
+ "- `projitive://design/quick-start` - Overview and quick reference",
508
+ "- `projitive://design/principles` - Core design principles",
509
+ "- `.projitive/README.md` - Governance workspace overview",
510
+ "- `../design/README.md` - Design specification",
511
+ "",
512
+ "---",
513
+ "*Part of Projitive Design Context resources. See TASK-0006 for implementation details.*",
514
+ ].join("\n");
515
+ }