syntaur 0.1.13 → 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.
Files changed (128) hide show
  1. package/README.md +5 -0
  2. package/dashboard/dist/assets/{_basePickBy-DXzhD14q.js → _basePickBy-CHKX1r7P.js} +1 -1
  3. package/dashboard/dist/assets/{_baseUniq-gxypqvP5.js → _baseUniq-CTxTc4MS.js} +1 -1
  4. package/dashboard/dist/assets/{arc-Ce7nYKSm.js → arc-BUo5zftd.js} +1 -1
  5. package/dashboard/dist/assets/{architectureDiagram-2XIMDMQ5-zX4f4_Mf.js → architectureDiagram-2XIMDMQ5-CrJLm-P0.js} +1 -1
  6. package/dashboard/dist/assets/{blockDiagram-WCTKOSBZ-auOdy7nH.js → blockDiagram-WCTKOSBZ-BK60lBBJ.js} +1 -1
  7. package/dashboard/dist/assets/{c4Diagram-IC4MRINW-C2kkjPbW.js → c4Diagram-IC4MRINW-C7oJEvA0.js} +1 -1
  8. package/dashboard/dist/assets/channel-DdltvFFH.js +1 -0
  9. package/dashboard/dist/assets/{chunk-4BX2VUAB-B7dfpnbG.js → chunk-4BX2VUAB-CjUPlzHz.js} +1 -1
  10. package/dashboard/dist/assets/{chunk-55IACEB6-r1_jHZYp.js → chunk-55IACEB6-6HmWguiO.js} +1 -1
  11. package/dashboard/dist/assets/{chunk-FMBD7UC4-5mMONjMK.js → chunk-FMBD7UC4-CLuJnd1b.js} +1 -1
  12. package/dashboard/dist/assets/{chunk-JSJVCQXG-CwKj-Es4.js → chunk-JSJVCQXG-B4d62qWV.js} +1 -1
  13. package/dashboard/dist/assets/{chunk-KX2RTZJC-ByoW-HgN.js → chunk-KX2RTZJC-AsEKRPq2.js} +1 -1
  14. package/dashboard/dist/assets/{chunk-NQ4KR5QH-D1olOovd.js → chunk-NQ4KR5QH-DQhHHvwY.js} +1 -1
  15. package/dashboard/dist/assets/{chunk-QZHKN3VN-CB8_FC8w.js → chunk-QZHKN3VN-Ds1TtI3E.js} +1 -1
  16. package/dashboard/dist/assets/{chunk-WL4C6EOR-CFEqRrE1.js → chunk-WL4C6EOR-C7jE3-cR.js} +1 -1
  17. package/dashboard/dist/assets/classDiagram-VBA2DB6C-BHqdFE-8.js +1 -0
  18. package/dashboard/dist/assets/classDiagram-v2-RAHNMMFH-BHqdFE-8.js +1 -0
  19. package/dashboard/dist/assets/clone-CBJOOeOm.js +1 -0
  20. package/dashboard/dist/assets/{cose-bilkent-S5V4N54A-D6dGVXEI.js → cose-bilkent-S5V4N54A-C9ka5v1m.js} +1 -1
  21. package/dashboard/dist/assets/{dagre-KLK3FWXG-Cvg9CgP-.js → dagre-KLK3FWXG-BbgPQBKy.js} +1 -1
  22. package/dashboard/dist/assets/{diagram-E7M64L7V-iCBudhZD.js → diagram-E7M64L7V-DpdeZFD4.js} +1 -1
  23. package/dashboard/dist/assets/{diagram-IFDJBPK2-BGniy7VQ.js → diagram-IFDJBPK2-FlHLQzOV.js} +1 -1
  24. package/dashboard/dist/assets/{diagram-P4PSJMXO-B6Ie044E.js → diagram-P4PSJMXO-B22NkEF_.js} +1 -1
  25. package/dashboard/dist/assets/{erDiagram-INFDFZHY-BHvFRNhJ.js → erDiagram-INFDFZHY-zSqmtDid.js} +1 -1
  26. package/dashboard/dist/assets/{flowDiagram-PKNHOUZH-CN86Zu3Q.js → flowDiagram-PKNHOUZH-BP_0XmVV.js} +1 -1
  27. package/dashboard/dist/assets/{ganttDiagram-A5KZAMGK-D-1fKFjW.js → ganttDiagram-A5KZAMGK-8uRyYgZV.js} +1 -1
  28. package/dashboard/dist/assets/{gitGraphDiagram-K3NZZRJ6-Dtf1A6KL.js → gitGraphDiagram-K3NZZRJ6-JFqg8sv4.js} +1 -1
  29. package/dashboard/dist/assets/{graph-B6H_kXSs.js → graph-a-PAH599.js} +1 -1
  30. package/dashboard/dist/assets/index-CoVCLSh2.css +1 -0
  31. package/dashboard/dist/assets/index-yyAIuzrP.js +471 -0
  32. package/dashboard/dist/assets/{infoDiagram-LFFYTUFH-R9wJj4JF.js → infoDiagram-LFFYTUFH-C3kq7Nbv.js} +1 -1
  33. package/dashboard/dist/assets/{ishikawaDiagram-PHBUUO56-CJmeR-bX.js → ishikawaDiagram-PHBUUO56-Kqi4EZ-n.js} +1 -1
  34. package/dashboard/dist/assets/{journeyDiagram-4ABVD52K-FcUhyu8I.js → journeyDiagram-4ABVD52K-CTfv0Wcr.js} +1 -1
  35. package/dashboard/dist/assets/{kanban-definition-K7BYSVSG-C8UcTIwW.js → kanban-definition-K7BYSVSG-Dmx0lgvR.js} +1 -1
  36. package/dashboard/dist/assets/{layout-DzBy6alw.js → layout-KKRbT2Od.js} +1 -1
  37. package/dashboard/dist/assets/{linear-CZJCNOB9.js → linear-5egaBiw7.js} +1 -1
  38. package/dashboard/dist/assets/{mermaid.core-fMQRe9Gq.js → mermaid.core-C9pF_oFQ.js} +4 -4
  39. package/dashboard/dist/assets/{mindmap-definition-YRQLILUH-BFwp-LS-.js → mindmap-definition-YRQLILUH-C7HXYEXt.js} +1 -1
  40. package/dashboard/dist/assets/{pieDiagram-SKSYHLDU-CQLmPkkd.js → pieDiagram-SKSYHLDU-DkdZm-YP.js} +1 -1
  41. package/dashboard/dist/assets/{quadrantDiagram-337W2JSQ-DAmi-dmD.js → quadrantDiagram-337W2JSQ-DkcRJs5F.js} +1 -1
  42. package/dashboard/dist/assets/{requirementDiagram-Z7DCOOCP-Dcdts4kX.js → requirementDiagram-Z7DCOOCP-BaTDVYTl.js} +1 -1
  43. package/dashboard/dist/assets/{sankeyDiagram-WA2Y5GQK-By8LRvM0.js → sankeyDiagram-WA2Y5GQK-DvPLbGV5.js} +1 -1
  44. package/dashboard/dist/assets/{sequenceDiagram-2WXFIKYE-BsvqgtTz.js → sequenceDiagram-2WXFIKYE-DQoZ2xMK.js} +1 -1
  45. package/dashboard/dist/assets/{stateDiagram-RAJIS63D-DFNOD7cx.js → stateDiagram-RAJIS63D-CS4l0OjM.js} +1 -1
  46. package/dashboard/dist/assets/stateDiagram-v2-FVOUBMTO-DkBtE1WJ.js +1 -0
  47. package/dashboard/dist/assets/{timeline-definition-YZTLITO2-CMcgJGjn.js → timeline-definition-YZTLITO2-aC0iCFCW.js} +1 -1
  48. package/dashboard/dist/assets/{treemap-KZPCXAKY-BWsRNHwq.js → treemap-KZPCXAKY-Ie-PFjgx.js} +1 -1
  49. package/dashboard/dist/assets/{vennDiagram-LZ73GAT5-io7-2Tod.js → vennDiagram-LZ73GAT5-CJN3ExTQ.js} +1 -1
  50. package/dashboard/dist/assets/{xychartDiagram-JWTSCODW-AVnh4fDS.js → xychartDiagram-JWTSCODW-DSiDu1CN.js} +1 -1
  51. package/dashboard/dist/index.html +2 -2
  52. package/dist/dashboard/server.d.ts +1 -1
  53. package/dist/dashboard/server.js +1163 -734
  54. package/dist/dashboard/server.js.map +1 -1
  55. package/dist/index.js +3979 -1372
  56. package/dist/index.js.map +1 -1
  57. package/examples/playbooks/keep-records-updated.md +1 -1
  58. package/examples/playbooks/read-before-plan.md +5 -5
  59. package/examples/{sample-mission → sample-project}/_index-assignments.md +1 -1
  60. package/examples/{sample-mission → sample-project}/_index-decisions.md +1 -1
  61. package/examples/{sample-mission → sample-project}/_index-plans.md +1 -1
  62. package/examples/{sample-mission → sample-project}/_status.md +3 -3
  63. package/examples/{sample-mission → sample-project}/assignments/design-auth-schema/assignment.md +4 -1
  64. package/examples/{sample-mission → sample-project}/assignments/implement-jwt-middleware/assignment.md +4 -1
  65. package/examples/{sample-mission → sample-project}/assignments/write-auth-tests/assignment.md +4 -1
  66. package/examples/{sample-mission → sample-project}/manifest.md +3 -3
  67. package/examples/{sample-mission → sample-project}/memories/_index.md +2 -2
  68. package/examples/{sample-mission → sample-project}/memories/postgres-connection-pooling.md +1 -1
  69. package/examples/{sample-mission → sample-project}/resources/_index.md +1 -1
  70. package/package.json +5 -3
  71. package/platforms/README.md +7 -7
  72. package/platforms/claude-code/README.md +1 -1
  73. package/platforms/claude-code/agents/syntaur-expert.md +57 -57
  74. package/platforms/claude-code/commands/doctor-syntaur/doctor-syntaur.md +112 -0
  75. package/platforms/claude-code/commands/track-session/track-session.md +8 -8
  76. package/platforms/claude-code/hooks/enforce-boundaries.sh +4 -4
  77. package/platforms/claude-code/hooks/hooks.json +1 -1
  78. package/platforms/claude-code/hooks/session-cleanup.sh +5 -5
  79. package/platforms/claude-code/references/file-ownership.md +8 -8
  80. package/platforms/claude-code/references/protocol-summary.md +7 -6
  81. package/platforms/claude-code/skills/complete-assignment/SKILL.md +21 -17
  82. package/platforms/claude-code/skills/create-assignment/SKILL.md +15 -14
  83. package/platforms/claude-code/skills/grab-assignment/SKILL.md +56 -49
  84. package/platforms/claude-code/skills/plan-assignment/SKILL.md +57 -10
  85. package/platforms/claude-code/skills/syntaur-protocol/SKILL.md +21 -17
  86. package/platforms/codex/.codex-plugin/plugin.json +3 -3
  87. package/platforms/codex/README.md +1 -1
  88. package/platforms/codex/adapters/AGENTS.md.template +3 -3
  89. package/platforms/codex/agents/openai.yaml +2 -2
  90. package/platforms/codex/agents/syntaur-operator.md +33 -30
  91. package/platforms/codex/references/file-ownership.md +8 -8
  92. package/platforms/codex/references/protocol-summary.md +11 -6
  93. package/platforms/codex/scripts/enforce-boundaries.sh +2 -2
  94. package/platforms/codex/scripts/session-cleanup.sh +2 -2
  95. package/platforms/codex/skills/complete-assignment/SKILL.md +6 -6
  96. package/platforms/codex/skills/create-assignment/SKILL.md +8 -7
  97. package/platforms/codex/skills/grab-assignment/SKILL.md +30 -20
  98. package/platforms/codex/skills/plan-assignment/SKILL.md +19 -11
  99. package/platforms/codex/skills/syntaur-protocol/SKILL.md +26 -21
  100. package/platforms/cursor/README.md +1 -1
  101. package/platforms/cursor/adapters/syntaur-protocol.mdc +1 -1
  102. package/platforms/opencode/README.md +1 -1
  103. package/platforms/opencode/adapters/opencode.json.template +1 -1
  104. package/dashboard/dist/assets/channel-PMR2DuGi.js +0 -1
  105. package/dashboard/dist/assets/classDiagram-VBA2DB6C-DmESf_RL.js +0 -1
  106. package/dashboard/dist/assets/classDiagram-v2-RAHNMMFH-DmESf_RL.js +0 -1
  107. package/dashboard/dist/assets/clone-WlIeyha4.js +0 -1
  108. package/dashboard/dist/assets/index-BhuXD-Q5.js +0 -445
  109. package/dashboard/dist/assets/index-BnqH-RIk.css +0 -1
  110. package/dashboard/dist/assets/stateDiagram-v2-FVOUBMTO-DVO-Epiz.js +0 -1
  111. package/examples/sample-mission/agent.md +0 -33
  112. package/examples/sample-mission/claude.md +0 -13
  113. package/platforms/claude-code/skills/create-mission/SKILL.md +0 -51
  114. package/platforms/codex/skills/create-mission/SKILL.md +0 -35
  115. /package/examples/{sample-mission → sample-project}/assignments/design-auth-schema/decision-record.md +0 -0
  116. /package/examples/{sample-mission → sample-project}/assignments/design-auth-schema/handoff.md +0 -0
  117. /package/examples/{sample-mission → sample-project}/assignments/design-auth-schema/plan.md +0 -0
  118. /package/examples/{sample-mission → sample-project}/assignments/design-auth-schema/scratchpad.md +0 -0
  119. /package/examples/{sample-mission → sample-project}/assignments/implement-jwt-middleware/decision-record.md +0 -0
  120. /package/examples/{sample-mission → sample-project}/assignments/implement-jwt-middleware/handoff.md +0 -0
  121. /package/examples/{sample-mission → sample-project}/assignments/implement-jwt-middleware/plan.md +0 -0
  122. /package/examples/{sample-mission → sample-project}/assignments/implement-jwt-middleware/scratchpad.md +0 -0
  123. /package/examples/{sample-mission → sample-project}/assignments/write-auth-tests/decision-record.md +0 -0
  124. /package/examples/{sample-mission → sample-project}/assignments/write-auth-tests/handoff.md +0 -0
  125. /package/examples/{sample-mission → sample-project}/assignments/write-auth-tests/plan.md +0 -0
  126. /package/examples/{sample-mission → sample-project}/assignments/write-auth-tests/scratchpad.md +0 -0
  127. /package/examples/{sample-mission/mission.md → sample-project/project.md} +0 -0
  128. /package/examples/{sample-mission → sample-project}/resources/auth-requirements.md +0 -0
@@ -23,7 +23,7 @@ tags:
23
23
 
24
24
  ## When starting work:
25
25
  - Add a progress entry noting you've begun and what your approach is
26
- - If a plan.md exists, update its task checkboxes as you complete steps
26
+ - If any plan files exist (plan.md, plan-v2.md, ...), update their task checkboxes as you complete steps
27
27
 
28
28
  ## When stopping or handing off:
29
29
  - Write a final progress entry summarizing current state
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  name: "Read Before You Plan"
3
3
  slug: read-before-plan
4
- description: "Agents must read all mission context files before creating or modifying a plan"
5
- when_to_use: "Before creating or modifying plan.md"
4
+ description: "Agents must read all project context files before creating or modifying a plan"
5
+ when_to_use: "Before creating or modifying any plan file (plan.md, plan-v2.md, ...)"
6
6
  created: "2026-04-02T00:00:00Z"
7
7
  updated: "2026-04-02T00:00:00Z"
8
8
  tags:
@@ -12,10 +12,10 @@ tags:
12
12
 
13
13
  # Read Before You Plan
14
14
 
15
- Before creating or modifying plan.md, read these files in order:
15
+ Before creating or modifying any plan file (plan.md, plan-v2.md, ...), read these files in order:
16
16
 
17
- 1. `manifest.md` -- understand the mission structure
18
- 2. `mission.md` -- understand the goal and scope
17
+ 1. `manifest.md` -- understand the project structure
18
+ 2. `project.md` -- understand the goal and scope
19
19
  3. `agent.md` -- understand conventions and constraints
20
20
  4. `claude.md` (if exists) -- Claude-specific instructions
21
21
  5. `assignment.md` -- understand your specific task, acceptance criteria, and dependencies
@@ -1,5 +1,5 @@
1
1
  ---
2
- mission: build-auth-system
2
+ project: build-auth-system
3
3
  generated: "2026-03-18T14:30:00Z"
4
4
  total: 3
5
5
  by_status:
@@ -1,5 +1,5 @@
1
1
  ---
2
- mission: build-auth-system
2
+ project: build-auth-system
3
3
  generated: "2026-03-18T14:30:00Z"
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- mission: build-auth-system
2
+ project: build-auth-system
3
3
  generated: "2026-03-18T14:30:00Z"
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- mission: build-auth-system
2
+ project: build-auth-system
3
3
  generated: "2026-03-18T14:30:00Z"
4
4
  status: active
5
5
  progress:
@@ -13,10 +13,10 @@ progress:
13
13
  needsAttention:
14
14
  blockedCount: 0
15
15
  failedCount: 0
16
- unansweredQuestions: 1
16
+ openQuestions: 1
17
17
  ---
18
18
 
19
- # Mission Status: Build Authentication System
19
+ # Project Status: Build Authentication System
20
20
 
21
21
  **Status:** active
22
22
  **Progress:** 1/3 assignments complete
@@ -32,6 +32,10 @@ Design the PostgreSQL database schema for the authentication system. This includ
32
32
  - [x] All tables have appropriate indexes for query patterns
33
33
  - [x] Migration scripts are idempotent and backward-compatible
34
34
 
35
+ ## Todos
36
+
37
+ - [x] Execute [plan](./plan.md)
38
+
35
39
  ## Context
36
40
 
37
41
  This is the foundational data layer for the auth system. The schema must support the JWT middleware (implement-jwt-middleware) and be testable (write-auth-tests). See [Auth Requirements](../../resources/auth-requirements.md) for functional specs.
@@ -55,7 +59,6 @@ Started schema design. Reviewed auth requirements document. Planning three table
55
59
 
56
60
  ## Links
57
61
 
58
- - [Plan](./plan.md)
59
62
  - [Scratchpad](./scratchpad.md)
60
63
  - [Handoff](./handoff.md)
61
64
  - [Decision Record](./decision-record.md)
@@ -36,6 +36,10 @@ Implement Express.js middleware that validates JWT access tokens on protected ro
36
36
  - [ ] Token revocation endpoint (logout)
37
37
  - [ ] Role-based route guards (admin vs user)
38
38
 
39
+ ## Todos
40
+
41
+ - [ ] Execute [plan](./plan.md)
42
+
39
43
  ## Context
40
44
 
41
45
  Depends on the database schema from [design-auth-schema](../design-auth-schema/assignment.md). The schema is complete — see the [handoff notes](../design-auth-schema/handoff.md) for integration details. Key table: `sessions` with `jti` column for token validation. See [Auth Requirements](../../resources/auth-requirements.md) for full specs.
@@ -59,7 +63,6 @@ Started implementation. Set up RS256 key pair loading from environment variables
59
63
 
60
64
  ## Links
61
65
 
62
- - [Plan](./plan.md)
63
66
  - [Scratchpad](./scratchpad.md)
64
67
  - [Handoff](./handoff.md)
65
68
  - [Decision Record](./decision-record.md)
@@ -34,6 +34,10 @@ Write comprehensive unit and integration tests for the authentication system, co
34
34
  - [ ] Edge case tests: expired tokens, revoked sessions, refresh token reuse detection
35
35
  - [ ] Coverage report showing 80%+ line coverage
36
36
 
37
+ ## Todos
38
+
39
+ - [ ] Execute [plan](./plan.md)
40
+
37
41
  ## Context
38
42
 
39
43
  This assignment depends on [implement-jwt-middleware](../implement-jwt-middleware/assignment.md) being completed. Tests will cover both the schema layer (from design-auth-schema) and the middleware/endpoint layer (from implement-jwt-middleware). Use Jest as the test framework with `supertest` for HTTP integration tests.
@@ -48,7 +52,6 @@ No progress yet.
48
52
 
49
53
  ## Links
50
54
 
51
- - [Plan](./plan.md)
52
55
  - [Scratchpad](./scratchpad.md)
53
56
  - [Handoff](./handoff.md)
54
57
  - [Decision Record](./decision-record.md)
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  version: "1.0"
3
- mission: build-auth-system
3
+ project: build-auth-system
4
4
  generated: "2026-03-18T14:30:00Z"
5
5
  ---
6
6
 
7
- # Mission: build-auth-system
7
+ # Project: build-auth-system
8
8
 
9
9
  ## Overview
10
- - [Mission Overview](./mission.md)
10
+ - [Project Overview](./project.md)
11
11
 
12
12
  ## Indexes
13
13
  - [Assignments](./_index-assignments.md)
@@ -1,5 +1,5 @@
1
1
  ---
2
- mission: build-auth-system
2
+ project: build-auth-system
3
3
  generated: "2026-03-18T14:30:00Z"
4
4
  total: 1
5
5
  ---
@@ -8,4 +8,4 @@ total: 1
8
8
 
9
9
  | Name | Source | Scope | Source Assignment | Updated |
10
10
  |------|--------|-------|------------------|---------|
11
- | [postgres-connection-pooling](./postgres-connection-pooling.md) | claude-2 | mission | design-auth-schema | 2026-03-17T09:00:00Z |
11
+ | [postgres-connection-pooling](./postgres-connection-pooling.md) | claude-2 | project | design-auth-schema | 2026-03-17T09:00:00Z |
@@ -6,7 +6,7 @@ sourceAssignment: design-auth-schema
6
6
  relatedAssignments:
7
7
  - design-auth-schema
8
8
  - implement-jwt-middleware
9
- scope: mission
9
+ scope: project
10
10
  created: "2026-03-17T09:00:00Z"
11
11
  updated: "2026-03-17T09:00:00Z"
12
12
  tags:
@@ -1,5 +1,5 @@
1
1
  ---
2
- mission: build-auth-system
2
+ project: build-auth-system
3
3
  generated: "2026-03-18T14:30:00Z"
4
4
  total: 1
5
5
  ---
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "syntaur",
3
- "version": "0.1.13",
4
- "description": "Mission workflow CLI with dashboard, Claude Code plugin, and Codex plugin",
3
+ "version": "0.2.0",
4
+ "description": "Project workflow CLI with dashboard, Claude Code plugin, and Codex plugin",
5
5
  "homepage": "https://github.com/prong-horn/syntaur#readme",
6
6
  "repository": {
7
7
  "type": "git",
@@ -40,7 +40,9 @@
40
40
  "typecheck": "tsc --noEmit",
41
41
  "test": "vitest run",
42
42
  "test:watch": "vitest",
43
- "prepublishOnly": "npm run build && npm ci --prefix dashboard && npm run build --prefix dashboard"
43
+ "prepublishOnly": "npm run build && npm ci --prefix dashboard && npm run build --prefix dashboard",
44
+ "try": "node scripts/try.mjs",
45
+ "untry": "npm unlink -g syntaur && npm install -g syntaur@latest && echo '\\n✓ global syntaur restored to latest published version'"
44
46
  },
45
47
  "engines": {
46
48
  "node": ">=20.0.0"
@@ -16,16 +16,16 @@ format expected by the target framework.
16
16
 
17
17
  ```bash
18
18
  # Generate Cursor adapter files in the current directory
19
- syntaur setup-adapter cursor --mission <mission-slug> --assignment <assignment-slug>
19
+ syntaur setup-adapter cursor --project <project-slug> --assignment <assignment-slug>
20
20
 
21
21
  # Generate Codex adapter files
22
- syntaur setup-adapter codex --mission <mission-slug> --assignment <assignment-slug>
22
+ syntaur setup-adapter codex --project <project-slug> --assignment <assignment-slug>
23
23
 
24
24
  # Generate OpenCode adapter files
25
- syntaur setup-adapter opencode --mission <mission-slug> --assignment <assignment-slug>
25
+ syntaur setup-adapter opencode --project <project-slug> --assignment <assignment-slug>
26
26
 
27
27
  # Overwrite existing files
28
- syntaur setup-adapter cursor --mission my-mission --assignment my-task --force
28
+ syntaur setup-adapter cursor --project my-project --assignment my-task --force
29
29
  ```
30
30
 
31
31
  ## What Gets Generated
@@ -35,8 +35,8 @@ All adapters embed equivalent protocol knowledge:
35
35
  - **Write boundary rules** (which files the agent can and cannot modify)
36
36
  - **Assignment lifecycle states** and valid transitions
37
37
  - **CLI commands** for state transitions (`syntaur start`, `syntaur complete`, etc.)
38
- - **Reading order** for mission and assignment files
39
- - **Current assignment context** (mission slug, assignment slug, paths)
38
+ - **Reading order** for project and assignment files
39
+ - **Current assignment context** (project slug, assignment slug, paths)
40
40
 
41
41
  ## Contributing a New Adapter
42
42
 
@@ -46,7 +46,7 @@ To add support for a new framework:
46
46
  reference file showing the format. This is documentation, not a runtime asset.
47
47
 
48
48
  2. **Create a TypeScript renderer** in `src/templates/<framework>.ts`:
49
- - Define a params interface with `missionSlug`, `assignmentSlug`, `missionDir`, `assignmentDir`
49
+ - Define a params interface with `projectSlug`, `assignmentSlug`, `projectDir`, `assignmentDir`
50
50
  - Export a render function returning the file content as a string
51
51
  - Embed protocol knowledge directly in the template literal (do not read files at runtime)
52
52
 
@@ -4,7 +4,7 @@ Syntaur plugin for Claude Code. Installed automatically during `syntaur setup`.
4
4
 
5
5
  ## What's included
6
6
 
7
- - **Skills:** grab-assignment, plan-assignment, complete-assignment, create-mission, create-assignment, syntaur-protocol
7
+ - **Skills:** grab-assignment, plan-assignment, complete-assignment, create-project, create-assignment, syntaur-protocol
8
8
  - **Agents:** syntaur-protocol (background)
9
9
  - **Hooks:** write boundary enforcement (PreToolUse)
10
10
  - **Commands:** track-session
@@ -6,7 +6,7 @@ model: opus
6
6
  maxTurns: 20
7
7
  ---
8
8
 
9
- You are the authoritative expert on the Syntaur platform — the markdown-based, filesystem-hosted protocol for multi-agent mission coordination. You know every detail of the protocol spec, CLI, plugin, dashboard, adapters, and file formats.
9
+ You are the authoritative expert on the Syntaur platform — the markdown-based, filesystem-hosted protocol for multi-agent project coordination. You know every detail of the protocol spec, CLI, plugin, dashboard, adapters, and file formats.
10
10
 
11
11
  When answering questions, read the actual source files rather than relying solely on this prompt. The codebase is your ground truth.
12
12
 
@@ -42,20 +42,20 @@ Syntaur is a **markdown-based, filesystem-hosted protocol** that coordinates wor
42
42
  ~/.syntaur/
43
43
  config.md # Global config (optional)
44
44
  syntaur.db # SQLite database for agent sessions
45
- missions/
46
- <mission-slug>/
45
+ projects/
46
+ <project-slug>/
47
47
  manifest.md # Derived: root navigation
48
- mission.md # Human-authored: goal, context, success criteria
48
+ project.md # Human-authored: goal, context, success criteria
49
49
  agent.md # Human-authored: universal agent instructions
50
50
  claude.md # Human-authored: Claude Code-specific instructions
51
51
  _index-assignments.md # Derived: assignment summary table
52
52
  _index-plans.md # Derived: plan status summary
53
53
  _index-decisions.md # Derived: decision record summary
54
- _status.md # Derived: mission status rollup
54
+ _status.md # Derived: project status rollup
55
55
  assignments/
56
56
  <assignment-slug>/
57
- assignment.md # Agent-writable: source of truth for state
58
- plan.md # Agent-writable: implementation plan
57
+ assignment.md # Agent-writable: source of truth for state (includes ## Todos)
58
+ plan*.md # Agent-writable: versioned implementation plans (0+, optional)
59
59
  scratchpad.md # Agent-writable: working notes
60
60
  handoff.md # Agent-writable: append-only handoff log
61
61
  decision-record.md # Agent-writable: append-only decision log
@@ -72,13 +72,13 @@ Syntaur is a **markdown-based, filesystem-hosted protocol** that coordinates wor
72
72
  ## File Ownership Model
73
73
 
74
74
  ### Human-Authored (READ-ONLY for agents)
75
- - `mission.md` — mission overview, goal, context, success criteria
75
+ - `project.md` — project overview, goal, context, success criteria
76
76
  - `agent.md` — universal agent instructions
77
77
  - `claude.md` — Claude Code-specific instructions
78
78
 
79
79
  ### Agent-Writable (single-writer per assignment)
80
- - `assignment.md` — source of truth for assignment state
81
- - `plan.md` — implementation plan
80
+ - `assignment.md` — source of truth for assignment state (includes `## Todos` checklist)
81
+ - `plan*.md` — versioned implementation plans (optional, one per `## Todos` entry: `plan.md`, `plan-v2.md`, ...)
82
82
  - `scratchpad.md` — unstructured working notes
83
83
  - `handoff.md` — append-only handoff log
84
84
  - `decision-record.md` — append-only decision log
@@ -128,8 +128,8 @@ Only the assigned agent may write to its own assignment folder.
128
128
  - `pending` + unmet dependencies = structural wait (automatic, no action needed)
129
129
  - `blocked` = runtime obstacle requiring human intervention (must set `blockedReason`)
130
130
 
131
- ### Mission Status Rollup (computed, first-match-wins)
132
- 1. `archived: true` in mission.md → `archived`
131
+ ### Project Status Rollup (computed, first-match-wins)
132
+ 1. `archived: true` in project.md → `archived`
133
133
  2. ALL assignments `completed` → `completed`
134
134
  3. ANY `in_progress` or `review` → `active`
135
135
  4. ANY `failed` → `failed`
@@ -151,31 +151,31 @@ Only the assigned agent may write to its own assignment folder.
151
151
  | `syntaur setup-adapter <framework>` | Generate adapter files for cursor, codex, or opencode |
152
152
  | `syntaur uninstall [--all]` | Remove plugins and optionally `~/.syntaur` data |
153
153
 
154
- ### Mission & Assignment Creation
154
+ ### Project & Assignment Creation
155
155
  | Command | Description |
156
156
  |---------|-------------|
157
- | `syntaur create-mission <title> [--slug S] [--dir D]` | Create new mission with full scaffolding |
158
- | `syntaur create-assignment <title> --mission M [--priority P] [--depends-on D] [--slug S]` | Create assignment in a mission |
157
+ | `syntaur create-project <title> [--slug S] [--dir D]` | Create new project with full scaffolding |
158
+ | `syntaur create-assignment <title> --project M [--priority P] [--depends-on D] [--slug S]` | Create assignment in a project |
159
159
  | `syntaur create-assignment <title> --one-off` | Create standalone one-off assignment |
160
160
 
161
161
  ### State Transitions
162
162
  | Command | Description |
163
163
  |---------|-------------|
164
- | `syntaur assign <slug> --agent <name> --mission <mission>` | Set assignee |
165
- | `syntaur start <slug> --mission <mission>` | pending → in_progress |
166
- | `syntaur review <slug> --mission <mission>` | in_progress → review |
167
- | `syntaur complete <slug> --mission <mission>` | in_progress/review → completed |
168
- | `syntaur block <slug> --mission <mission> --reason <text>` | → blocked |
169
- | `syntaur unblock <slug> --mission <mission>` | blocked → in_progress |
170
- | `syntaur fail <slug> --mission <mission>` | → failed |
171
- | `syntaur reopen <slug> --mission <mission>` | completed/failed → in_progress |
164
+ | `syntaur assign <slug> --agent <name> --project <project>` | Set assignee |
165
+ | `syntaur start <slug> --project <project>` | pending → in_progress |
166
+ | `syntaur review <slug> --project <project>` | in_progress → review |
167
+ | `syntaur complete <slug> --project <project>` | in_progress/review → completed |
168
+ | `syntaur block <slug> --project <project> --reason <text>` | → blocked |
169
+ | `syntaur unblock <slug> --project <project>` | blocked → in_progress |
170
+ | `syntaur fail <slug> --project <project>` | → failed |
171
+ | `syntaur reopen <slug> --project <project>` | completed/failed → in_progress |
172
172
 
173
173
  ### Session Tracking
174
174
  | Command | Description |
175
175
  |---------|-------------|
176
- | `syntaur track-session --mission M --assignment A --agent N` | Register agent session |
176
+ | `syntaur track-session --project M --assignment A --agent N` | Register agent session |
177
177
 
178
- All commands support `--dir <path>` to override the default `~/.syntaur/missions/` directory.
178
+ All commands support `--dir <path>` to override the default `~/.syntaur/projects/` directory.
179
179
 
180
180
  ---
181
181
 
@@ -192,7 +192,7 @@ plugin/
192
192
  skills/
193
193
  syntaur-protocol/SKILL.md # Core protocol rules (background)
194
194
  grab-assignment/SKILL.md # Claim a pending assignment
195
- create-mission/SKILL.md # Create new mission
195
+ create-project/SKILL.md # Create new project
196
196
  create-assignment/SKILL.md # Create new assignment
197
197
  plan-assignment/SKILL.md # Write implementation plan
198
198
  complete-assignment/SKILL.md # Handoff and complete
@@ -212,17 +212,17 @@ plugin/
212
212
  | Skill | Trigger | Purpose |
213
213
  |-------|---------|---------|
214
214
  | `/syntaur-protocol` | Background — auto-loaded when working with Syntaur files | Core write boundary rules and protocol knowledge |
215
- | `/grab-assignment` | User says "grab assignment" or starts work on a mission | Discover pending assignments, claim one, create context.json |
216
- | `/create-mission` | User wants to create a new mission | Run CLI scaffolding, guide through editing mission files |
217
- | `/create-assignment` | User wants to add an assignment to a mission | Create assignment with all supporting files |
218
- | `/plan-assignment` | User wants to plan current assignment | Explore workspace, write detailed plan.md |
215
+ | `/grab-assignment` | User says "grab assignment" or starts work on a project | Discover pending assignments, claim one, create context.json |
216
+ | `/create-project` | User wants to create a new project | Run CLI scaffolding, guide through editing project files |
217
+ | `/create-assignment` | User wants to add an assignment to a project | Create assignment with all supporting files |
218
+ | `/plan-assignment` | User wants to plan current assignment | Explore workspace, write the next `plan-v<N>.md`, append a linked todo to `## Todos` (supersede prior plan todo) |
219
219
  | `/complete-assignment` | User is done with assignment work | Verify criteria, write handoff, transition state, close session |
220
220
 
221
221
  ### Hooks
222
222
 
223
223
  | Hook | Event | Behavior |
224
224
  |------|-------|----------|
225
- | PostToolUse: ExitPlanMode | User exits plan mode | Prompts to update plan.md with the plan just created |
225
+ | PostToolUse: ExitPlanMode | User exits plan mode | Prompts to write the plan to the next unused `plan-v<N>.md` (or `plan.md` if none exists) and append a linked todo in the `## Todos` section of `assignment.md` |
226
226
  | SessionEnd | Claude Code session exits | Runs session-cleanup.sh to mark session as stopped |
227
227
  | PreToolUse: enforce-boundaries | Edit/Write/MultiEdit | Validates target path is within assignment boundaries |
228
228
 
@@ -240,27 +240,27 @@ syntaur # Dashboard is the default command
240
240
  ```
241
241
 
242
242
  ### Features
243
- - **Overview page:** Mission stats, quick actions, attention items
244
- - **Mission detail:** Assignment listing, resources, memories, status
243
+ - **Overview page:** Project stats, quick actions, attention items
244
+ - **Project detail:** Assignment listing, resources, memories, status
245
245
  - **Assignment detail:** Full assignment view with all fields, criteria checklist
246
246
  - **Kanban board:** Drag assignments between status columns
247
247
  - **Agent sessions:** Track active/completed/stopped agent sessions
248
248
  - **Server tracking:** Discover running dev servers via tmux session scanning
249
249
  - **Real-time updates:** WebSocket pushes file changes to the browser
250
- - **Markdown editing:** Edit mission.md, assignment.md, plan.md, scratchpad.md in-browser
250
+ - **Markdown editing:** Edit project.md, assignment.md, plan files, scratchpad.md in-browser
251
251
  - **Attention queue:** Highlights blocked, failed, and review-pending items
252
252
 
253
253
  ### API Endpoints
254
254
  - `GET /api/overview` — Dashboard summary stats
255
- - `GET /api/missions` — List all missions
256
- - `GET /api/missions/:slug` — Mission detail with assignments
257
- - `GET /api/missions/:slug/assignments/:aslug` — Assignment detail
258
- - `GET /api/assignments` — All assignments across missions
255
+ - `GET /api/projects` — List all projects
256
+ - `GET /api/projects/:slug` — Project detail with assignments
257
+ - `GET /api/projects/:slug/assignments/:aslug` — Assignment detail
258
+ - `GET /api/assignments` — All assignments across projects
259
259
  - `GET /api/attention` — Items needing attention
260
260
  - `GET /api/agent-sessions` — Agent session list
261
- - `POST /api/missions` — Create mission
262
- - `POST /api/missions/:slug/assignments` — Create assignment
263
- - `PATCH /api/missions/:slug/assignments/:aslug` — Update assignment
261
+ - `POST /api/projects` — Create project
262
+ - `POST /api/projects/:slug/assignments` — Create assignment
263
+ - `PATCH /api/projects/:slug/assignments/:aslug` — Update assignment
264
264
  - WebSocket at `/ws` for real-time file change notifications
265
265
 
266
266
  ### Architecture
@@ -276,9 +276,9 @@ syntaur # Dashboard is the default command
276
276
  Syntaur supports Cursor, Codex, and OpenCode via generated adapter files.
277
277
 
278
278
  ```bash
279
- syntaur setup-adapter cursor --mission <slug> --assignment <slug>
280
- syntaur setup-adapter codex --mission <slug> --assignment <slug>
281
- syntaur setup-adapter opencode --mission <slug> --assignment <slug>
279
+ syntaur setup-adapter cursor --project <slug> --assignment <slug>
280
+ syntaur setup-adapter codex --project <slug> --assignment <slug>
281
+ syntaur setup-adapter opencode --project <slug> --assignment <slug>
282
282
  ```
283
283
 
284
284
  | Framework | Generated Files | Discovery |
@@ -297,17 +297,17 @@ Adapters embed protocol knowledge (write boundaries, lifecycle states, CLI comma
297
297
 
298
298
  **assignment.md:** id, slug, title, status, priority, created, updated, assignee, externalIds, dependsOn, blockedReason, workspace (repository, worktreePath, branch, parentBranch), tags
299
299
 
300
- **plan.md:** assignment, status (draft/approved/in_progress/completed), created, updated
300
+ **plan files (plan.md, plan-v2.md, ...):** assignment, status (draft/approved/in_progress/completed), created, updated — zero or more per assignment, each linked from a todo in `assignment.md`'s `## Todos` section
301
301
 
302
302
  **handoff.md:** assignment, updated, handoffCount
303
303
 
304
304
  **decision-record.md:** assignment, updated, decisionCount
305
305
 
306
- **mission.md:** id, slug, title, archived, archivedAt, archivedReason, created, updated, externalIds, tags
306
+ **project.md:** id, slug, title, archived, archivedAt, archivedReason, created, updated, externalIds, tags
307
307
 
308
- **manifest.md:** version, mission, generated
308
+ **manifest.md:** version, project, generated
309
309
 
310
- **_status.md:** mission, generated, status, progress (total/completed/in_progress/blocked/pending/review/failed), needsAttention (blockedCount/failedCount/unansweredQuestions)
310
+ **_status.md:** project, generated, status, progress (total/completed/in_progress/blocked/pending/review/failed), needsAttention (blockedCount/failedCount/unansweredQuestions)
311
311
 
312
312
  ### Conventions
313
313
  - **Timestamps:** RFC 3339 / ISO 8601 with UTC: `2026-03-18T14:30:00Z`
@@ -324,12 +324,12 @@ Adapters embed protocol knowledge (write boundaries, lifecycle states, CLI comma
324
324
  # 1. Run guided setup
325
325
  npx syntaur@latest setup
326
326
 
327
- # 2. Create your first mission
328
- syntaur create-mission "My First Mission"
327
+ # 2. Create your first project
328
+ syntaur create-project "My First Project"
329
329
 
330
330
  # 3. Create assignments
331
- syntaur create-assignment "Design the schema" --mission my-first-mission --priority high
332
- syntaur create-assignment "Implement the API" --mission my-first-mission --depends-on design-the-schema
331
+ syntaur create-assignment "Design the schema" --project my-first-project --priority high
332
+ syntaur create-assignment "Implement the API" --project my-first-project --depends-on design-the-schema
333
333
 
334
334
  # 4. Start the dashboard
335
335
  syntaur dashboard
@@ -338,7 +338,7 @@ syntaur dashboard
338
338
  ### Agent Workflow
339
339
  ```bash
340
340
  # In Claude Code, use skills:
341
- /grab-assignment my-first-mission # Claim a pending assignment
341
+ /grab-assignment my-first-project # Claim a pending assignment
342
342
  /plan-assignment # Write implementation plan
343
343
  # ... do the work ...
344
344
  /complete-assignment # Handoff and complete
@@ -351,10 +351,10 @@ syntaur dashboard
351
351
  Created by `/grab-assignment` in the current working directory. Contains:
352
352
  ```json
353
353
  {
354
- "missionSlug": "my-first-mission",
354
+ "projectSlug": "my-first-project",
355
355
  "assignmentSlug": "design-the-schema",
356
- "missionDir": "/Users/you/.syntaur/missions/my-first-mission",
357
- "assignmentDir": "/Users/you/.syntaur/missions/my-first-mission/assignments/design-the-schema",
356
+ "projectDir": "/Users/you/.syntaur/projects/my-first-project",
357
+ "assignmentDir": "/Users/you/.syntaur/projects/my-first-project/assignments/design-the-schema",
358
358
  "workspaceRoot": "/Users/you/projects/my-app",
359
359
  "title": "Design the schema",
360
360
  "branch": "feature/design-the-schema",
@@ -370,7 +370,7 @@ Read by `/plan-assignment`, `/complete-assignment`, and the write boundary hook
370
370
  ## Common Questions
371
371
 
372
372
  **Q: How do I see what assignments are available?**
373
- A: Use `/grab-assignment <mission-slug>` — it lists pending assignments. Or check the dashboard, or read `_index-assignments.md`.
373
+ A: Use `/grab-assignment <project-slug>` — it lists pending assignments. Or check the dashboard, or read `_index-assignments.md`.
374
374
 
375
375
  **Q: Can two agents work on the same assignment?**
376
376
  A: No. Single-writer guarantee — one agent per assignment folder. Use separate assignments for parallel work.
@@ -0,0 +1,112 @@
1
+ ---
2
+ name: doctor-syntaur
3
+ description: Diagnose and help recover from common Syntaur bad states
4
+ arguments:
5
+ - name: args
6
+ description: "Optional flags: --verbose, --only <check-id>"
7
+ required: false
8
+ ---
9
+
10
+ # /doctor-syntaur
11
+
12
+ Run `syntaur doctor` and help the user interpret the results, remediating issues where appropriate. Respect Syntaur write boundaries throughout.
13
+
14
+ ## Usage
15
+
16
+ - `/doctor-syntaur` — run all checks
17
+ - `/doctor-syntaur --verbose` — include passing checks in the summary
18
+ - `/doctor-syntaur --only <check-id>` — re-run one check after remediation (e.g. `--only assignment.workspace-missing`)
19
+
20
+ ## Instructions
21
+
22
+ When the user runs this command:
23
+
24
+ ### Step 1: Parse arguments
25
+
26
+ From the argument string, extract optional flags:
27
+
28
+ - `--verbose` — pass through to the CLI and include passing checks in the summary
29
+ - `--only <check-id>` — pass through to the CLI to restrict to a single check
30
+
31
+ ### Step 2: Run the CLI and capture output + exit code
32
+
33
+ Exit code 1 is expected (means issues were found). Do NOT let a non-zero exit fail the turn. Use a pattern like:
34
+
35
+ ```bash
36
+ output=$(syntaur doctor --json [--only <check-id>] 2>&1); exit_code=$?
37
+ ```
38
+
39
+ Then parse `$output` as JSON. If the JSON fails to parse, surface the raw output — that means the CLI itself broke.
40
+
41
+ ### Step 3: Handle exit codes and severity
42
+
43
+ - **Exit 2** — Syntaur isn't initialized. Tell the user to run `syntaur init` and stop.
44
+ - **Exit 1** (one or more errors) — continue to step 4; report both errors and warnings.
45
+ - **Exit 0 and `summary.warn === 0`** — everything passed. Say so in one line (e.g. "All checks passed — no issues found.") and stop.
46
+ - **Exit 0 and `summary.warn > 0`** — no errors but warnings exist. Continue to step 4; report the warnings. The CLI only exits 1 on errors, so warn-only runs still need to be surfaced to the user.
47
+
48
+ ### Step 4: Summarize results
49
+
50
+ Group the `checks` array from the JSON by `category`. For each category:
51
+
52
+ - Show errors first, then warnings.
53
+ - Skip passes unless `--verbose` was passed.
54
+ - Always include the `check.id` so the user can reference a specific issue in follow-up.
55
+
56
+ Format each issue like:
57
+
58
+ ```
59
+ [category] check.id — title
60
+ detail line
61
+ affected: path (truncate long lists)
62
+ fix: remediation.suggestion
63
+ ```
64
+
65
+ ### Step 5: Establish your write boundary (before offering any edit)
66
+
67
+ Doctor reports issues from anywhere under `~/.syntaur/`. You are NOT allowed to edit most of those files. Before offering any remediation edit, compute your current write boundary:
68
+
69
+ 1. Read `.syntaur/context.json` in the current working directory (the same `cwd` you ran the CLI from).
70
+ 2. If the file does not exist, or exists but has no assignment fields (`projectSlug`, `assignmentSlug`, `projectDir`, `assignmentDir`):
71
+ - You have NO assignment context.
72
+ - Your only permitted edit target is the literal file `<cwd>/.syntaur/context.json` itself.
73
+ - For every other issue, show the `suggestion` text verbatim and do NOT offer to edit.
74
+ 3. If the file has assignment fields, record these paths:
75
+ - `assignmentDir` — your per-assignment write zone.
76
+ - `workspaceRoot` — your code write zone (may be absent).
77
+ - `<cwd>/.syntaur/context.json` — always editable.
78
+
79
+ ### Step 6: Offer remediation (issue by issue)
80
+
81
+ For each error or warning, determine what kind of offer is appropriate.
82
+
83
+ **First, use `remediation.kind`:**
84
+
85
+ - **`auto-safe`** — offer to run `syntaur doctor --fix --only <id>`. Ask the user to confirm before running. (v1 has no auto-safe remediations yet — this is a placeholder for future versions.)
86
+ - **`auto-destructive`** — never auto-run. Describe the impact and wait for the user.
87
+ - **`manual`** — apply the path check below before offering an edit.
88
+
89
+ **For `manual` remediations, compare each path in `affected[]` against your boundary from Step 5:**
90
+
91
+ 1. Let `allowed = [assignmentDir, workspaceRoot, <cwd>/.syntaur/context.json]` (dropping any undefined entries).
92
+ 2. A path is within boundary if and only if it equals `<cwd>/.syntaur/context.json` OR it is a strict path-prefix descendant of `assignmentDir` or `workspaceRoot`. Use path-segment comparison, not substring matching.
93
+ 3. If **every** path in `affected[]` is within boundary, you may offer to make the edit. Show a diff first; wait for confirmation; then write.
94
+ 4. If **any** path in `affected[]` is outside your boundary, do NOT offer to edit. Show the `suggestion` text verbatim and tell the user they or another tool must apply it.
95
+
96
+ **Hard stop list — never write to these regardless of what doctor reports:**
97
+
98
+ - `project.md`, `agent.md`, `claude.md`, `manifest.md`, `_status.md`
99
+ - Any file starting with `_index-` or ending in `_index.md`
100
+ - Any file in a project's `resources/` or `memories/` directory
101
+ - Any file inside a different assignment's folder (i.e. `projects/<m>/assignments/<other>/...` where `<other> !== assignmentSlug`)
102
+
103
+ ### Step 7: Suggest a follow-up
104
+
105
+ After proposing fixes, suggest the user re-run `/doctor-syntaur --only <check-id>` (or the whole command) to verify that issues resolved.
106
+
107
+ ## Guardrails
108
+
109
+ - Always invoke `syntaur doctor --json`. Do not re-derive checks from the filesystem yourself.
110
+ - Never pass `--fix` without explicit user confirmation.
111
+ - Always show each issue's `check.id` so the user can reference it.
112
+ - If the CLI output isn't valid JSON, show the raw output and stop — something is wrong with the install.