syntaur 0.1.14 → 0.3.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 (134) hide show
  1. package/README.md +5 -0
  2. package/dashboard/dist/assets/{_basePickBy-eih-KlEh.js → _basePickBy-BhaCV7eH.js} +1 -1
  3. package/dashboard/dist/assets/{_baseUniq-M21wg9ZQ.js → _baseUniq-CDPcqrs2.js} +1 -1
  4. package/dashboard/dist/assets/{arc-uKZMelpQ.js → arc-BP0RxLwl.js} +1 -1
  5. package/dashboard/dist/assets/{architectureDiagram-2XIMDMQ5-CpMG5exj.js → architectureDiagram-2XIMDMQ5-BDzvaeJp.js} +1 -1
  6. package/dashboard/dist/assets/{blockDiagram-WCTKOSBZ-BHnCCKl_.js → blockDiagram-WCTKOSBZ-ZeL9mROo.js} +1 -1
  7. package/dashboard/dist/assets/{c4Diagram-IC4MRINW-B-n3zU9i.js → c4Diagram-IC4MRINW-7S5bvFLp.js} +1 -1
  8. package/dashboard/dist/assets/channel-CcB_wcgb.js +1 -0
  9. package/dashboard/dist/assets/{chunk-4BX2VUAB-ChD9Iuih.js → chunk-4BX2VUAB-Ca7R4nv5.js} +1 -1
  10. package/dashboard/dist/assets/{chunk-55IACEB6-B3vP9Psg.js → chunk-55IACEB6-flEv13FB.js} +1 -1
  11. package/dashboard/dist/assets/{chunk-FMBD7UC4-CIhWgxPS.js → chunk-FMBD7UC4-CfcYWBM6.js} +1 -1
  12. package/dashboard/dist/assets/{chunk-JSJVCQXG-DiGIV_cB.js → chunk-JSJVCQXG-Dw4yL0VS.js} +1 -1
  13. package/dashboard/dist/assets/{chunk-KX2RTZJC-DnGsx5jo.js → chunk-KX2RTZJC-B2cDe40G.js} +1 -1
  14. package/dashboard/dist/assets/{chunk-NQ4KR5QH-BFBu1fmg.js → chunk-NQ4KR5QH-LZVm0IWg.js} +1 -1
  15. package/dashboard/dist/assets/{chunk-QZHKN3VN-DYtumHth.js → chunk-QZHKN3VN-Dg0EeHNI.js} +1 -1
  16. package/dashboard/dist/assets/{chunk-WL4C6EOR-BzCrQPuw.js → chunk-WL4C6EOR-v3rXNwXc.js} +1 -1
  17. package/dashboard/dist/assets/classDiagram-VBA2DB6C-BJr38z2g.js +1 -0
  18. package/dashboard/dist/assets/classDiagram-v2-RAHNMMFH-BJr38z2g.js +1 -0
  19. package/dashboard/dist/assets/clone-Cfs2GUGt.js +1 -0
  20. package/dashboard/dist/assets/{cose-bilkent-S5V4N54A-Bl8mb5eY.js → cose-bilkent-S5V4N54A-D-3JzLoS.js} +1 -1
  21. package/dashboard/dist/assets/{dagre-KLK3FWXG-BHffcOgo.js → dagre-KLK3FWXG-d_mbczhU.js} +1 -1
  22. package/dashboard/dist/assets/{diagram-E7M64L7V-Ib83qzT_.js → diagram-E7M64L7V-BUyAp8pW.js} +1 -1
  23. package/dashboard/dist/assets/{diagram-IFDJBPK2-hOdh63_T.js → diagram-IFDJBPK2-C8doXcyQ.js} +1 -1
  24. package/dashboard/dist/assets/{diagram-P4PSJMXO-D4ocLmc5.js → diagram-P4PSJMXO-BUSmHa55.js} +1 -1
  25. package/dashboard/dist/assets/{erDiagram-INFDFZHY-CHJ6zqnJ.js → erDiagram-INFDFZHY-Bn5_0LPU.js} +1 -1
  26. package/dashboard/dist/assets/{flowDiagram-PKNHOUZH-DEz5g2Ye.js → flowDiagram-PKNHOUZH-CnEjerQM.js} +1 -1
  27. package/dashboard/dist/assets/{ganttDiagram-A5KZAMGK-BSftxDHA.js → ganttDiagram-A5KZAMGK-CL94fbyy.js} +1 -1
  28. package/dashboard/dist/assets/{gitGraphDiagram-K3NZZRJ6-Cr3vGf07.js → gitGraphDiagram-K3NZZRJ6-4i_PeG8V.js} +1 -1
  29. package/dashboard/dist/assets/{graph-D4us8trI.js → graph-BtoFhoAd.js} +1 -1
  30. package/dashboard/dist/assets/index-DZUGYrvE.css +1 -0
  31. package/dashboard/dist/assets/index-Dv_-SxuL.js +481 -0
  32. package/dashboard/dist/assets/{infoDiagram-LFFYTUFH-CH_jVfru.js → infoDiagram-LFFYTUFH-CdUsuNgZ.js} +1 -1
  33. package/dashboard/dist/assets/{ishikawaDiagram-PHBUUO56-BdKLa5GC.js → ishikawaDiagram-PHBUUO56-BjggRlUx.js} +1 -1
  34. package/dashboard/dist/assets/{journeyDiagram-4ABVD52K-C_SMzNGF.js → journeyDiagram-4ABVD52K-V4AgexlR.js} +1 -1
  35. package/dashboard/dist/assets/{kanban-definition-K7BYSVSG-BeA-egRW.js → kanban-definition-K7BYSVSG-ChlylQRf.js} +1 -1
  36. package/dashboard/dist/assets/{layout-B8tDmL4j.js → layout-DLcz9AmA.js} +1 -1
  37. package/dashboard/dist/assets/{linear-CeGJyrHS.js → linear-l2xnSHze.js} +1 -1
  38. package/dashboard/dist/assets/{mermaid.core-DyEs-LPd.js → mermaid.core-DKO1ytRW.js} +4 -4
  39. package/dashboard/dist/assets/{mindmap-definition-YRQLILUH-DCxzAr8m.js → mindmap-definition-YRQLILUH-DTmTPHrT.js} +1 -1
  40. package/dashboard/dist/assets/{pieDiagram-SKSYHLDU-CEj5dRDi.js → pieDiagram-SKSYHLDU-CwK80y8Y.js} +1 -1
  41. package/dashboard/dist/assets/{quadrantDiagram-337W2JSQ-CKfvAEQg.js → quadrantDiagram-337W2JSQ-Be1xqW_w.js} +1 -1
  42. package/dashboard/dist/assets/{requirementDiagram-Z7DCOOCP-CTRqKPtJ.js → requirementDiagram-Z7DCOOCP-JcspXCs0.js} +1 -1
  43. package/dashboard/dist/assets/{sankeyDiagram-WA2Y5GQK-BlYbz8UR.js → sankeyDiagram-WA2Y5GQK-nJb1BInq.js} +1 -1
  44. package/dashboard/dist/assets/{sequenceDiagram-2WXFIKYE-PT2t7ryQ.js → sequenceDiagram-2WXFIKYE-DUrclEgA.js} +1 -1
  45. package/dashboard/dist/assets/{stateDiagram-RAJIS63D-eDX7IUuV.js → stateDiagram-RAJIS63D-CjinnNtF.js} +1 -1
  46. package/dashboard/dist/assets/stateDiagram-v2-FVOUBMTO-yfclw-nM.js +1 -0
  47. package/dashboard/dist/assets/{timeline-definition-YZTLITO2-By11B1Ow.js → timeline-definition-YZTLITO2-kM-oVLNz.js} +1 -1
  48. package/dashboard/dist/assets/{treemap-KZPCXAKY-rvdLeWWV.js → treemap-KZPCXAKY-CYziFlrQ.js} +1 -1
  49. package/dashboard/dist/assets/{vennDiagram-LZ73GAT5-Br_oZ1wv.js → vennDiagram-LZ73GAT5-DX0DbxBN.js} +1 -1
  50. package/dashboard/dist/assets/{xychartDiagram-JWTSCODW-D-MWVqrT.js → xychartDiagram-JWTSCODW-BGqM42ZM.js} +1 -1
  51. package/dashboard/dist/index.html +2 -2
  52. package/dist/dashboard/server.d.ts +6 -1
  53. package/dist/dashboard/server.js +2427 -1089
  54. package/dist/dashboard/server.js.map +1 -1
  55. package/dist/index.js +6139 -2624
  56. package/dist/index.js.map +1 -1
  57. package/examples/playbooks/keep-records-updated.md +15 -9
  58. package/examples/playbooks/read-before-plan.md +13 -10
  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 +4 -4
  63. package/examples/{sample-mission → sample-project}/assignments/design-auth-schema/assignment.md +8 -18
  64. package/examples/sample-project/assignments/design-auth-schema/comments.md +26 -0
  65. package/examples/sample-project/assignments/design-auth-schema/progress.md +20 -0
  66. package/examples/{sample-mission → sample-project}/assignments/implement-jwt-middleware/assignment.md +8 -18
  67. package/examples/sample-project/assignments/implement-jwt-middleware/comments.md +17 -0
  68. package/examples/sample-project/assignments/implement-jwt-middleware/progress.md +20 -0
  69. package/examples/{sample-mission → sample-project}/assignments/write-auth-tests/assignment.md +8 -9
  70. package/examples/sample-project/assignments/write-auth-tests/comments.md +10 -0
  71. package/examples/sample-project/assignments/write-auth-tests/progress.md +10 -0
  72. package/examples/{sample-mission → sample-project}/manifest.md +3 -3
  73. package/examples/{sample-mission → sample-project}/memories/_index.md +2 -2
  74. package/examples/{sample-mission → sample-project}/memories/postgres-connection-pooling.md +1 -1
  75. package/examples/{sample-mission → sample-project}/resources/_index.md +1 -1
  76. package/package.json +5 -3
  77. package/platforms/README.md +7 -7
  78. package/platforms/claude-code/README.md +1 -1
  79. package/platforms/claude-code/agents/syntaur-expert.md +94 -66
  80. package/platforms/claude-code/commands/doctor-syntaur/doctor-syntaur.md +112 -0
  81. package/platforms/claude-code/commands/track-session/track-session.md +8 -8
  82. package/platforms/claude-code/hooks/enforce-boundaries.sh +4 -4
  83. package/platforms/claude-code/hooks/hooks.json +1 -1
  84. package/platforms/claude-code/hooks/session-cleanup.sh +5 -5
  85. package/platforms/claude-code/references/file-ownership.md +20 -8
  86. package/platforms/claude-code/references/protocol-summary.md +24 -9
  87. package/platforms/claude-code/skills/complete-assignment/SKILL.md +35 -17
  88. package/platforms/claude-code/skills/create-assignment/SKILL.md +22 -19
  89. package/platforms/claude-code/skills/grab-assignment/SKILL.md +56 -49
  90. package/platforms/claude-code/skills/plan-assignment/SKILL.md +57 -10
  91. package/platforms/claude-code/skills/syntaur-protocol/SKILL.md +38 -24
  92. package/platforms/codex/.codex-plugin/plugin.json +3 -3
  93. package/platforms/codex/README.md +1 -1
  94. package/platforms/codex/adapters/AGENTS.md.template +3 -3
  95. package/platforms/codex/agents/openai.yaml +2 -2
  96. package/platforms/codex/agents/syntaur-operator.md +58 -43
  97. package/platforms/codex/references/file-ownership.md +19 -8
  98. package/platforms/codex/references/protocol-summary.md +28 -9
  99. package/platforms/codex/scripts/enforce-boundaries.sh +2 -2
  100. package/platforms/codex/scripts/session-cleanup.sh +2 -2
  101. package/platforms/codex/skills/complete-assignment/SKILL.md +7 -6
  102. package/platforms/codex/skills/create-assignment/SKILL.md +18 -12
  103. package/platforms/codex/skills/grab-assignment/SKILL.md +30 -20
  104. package/platforms/codex/skills/plan-assignment/SKILL.md +19 -11
  105. package/platforms/codex/skills/syntaur-protocol/SKILL.md +46 -28
  106. package/platforms/cursor/README.md +1 -1
  107. package/platforms/cursor/adapters/syntaur-protocol.mdc +1 -1
  108. package/platforms/opencode/README.md +1 -1
  109. package/platforms/opencode/adapters/opencode.json.template +1 -1
  110. package/dashboard/dist/assets/channel-DVBgSlOI.js +0 -1
  111. package/dashboard/dist/assets/classDiagram-VBA2DB6C-B7dxBacd.js +0 -1
  112. package/dashboard/dist/assets/classDiagram-v2-RAHNMMFH-B7dxBacd.js +0 -1
  113. package/dashboard/dist/assets/clone-DAOrHcCC.js +0 -1
  114. package/dashboard/dist/assets/index-AXntWS_w.css +0 -1
  115. package/dashboard/dist/assets/index-CEMjexkj.js +0 -460
  116. package/dashboard/dist/assets/stateDiagram-v2-FVOUBMTO--yuSBnLh.js +0 -1
  117. package/examples/sample-mission/agent.md +0 -33
  118. package/examples/sample-mission/claude.md +0 -13
  119. package/platforms/claude-code/skills/create-mission/SKILL.md +0 -51
  120. package/platforms/codex/skills/create-mission/SKILL.md +0 -35
  121. /package/examples/{sample-mission → sample-project}/assignments/design-auth-schema/decision-record.md +0 -0
  122. /package/examples/{sample-mission → sample-project}/assignments/design-auth-schema/handoff.md +0 -0
  123. /package/examples/{sample-mission → sample-project}/assignments/design-auth-schema/plan.md +0 -0
  124. /package/examples/{sample-mission → sample-project}/assignments/design-auth-schema/scratchpad.md +0 -0
  125. /package/examples/{sample-mission → sample-project}/assignments/implement-jwt-middleware/decision-record.md +0 -0
  126. /package/examples/{sample-mission → sample-project}/assignments/implement-jwt-middleware/handoff.md +0 -0
  127. /package/examples/{sample-mission → sample-project}/assignments/implement-jwt-middleware/plan.md +0 -0
  128. /package/examples/{sample-mission → sample-project}/assignments/implement-jwt-middleware/scratchpad.md +0 -0
  129. /package/examples/{sample-mission → sample-project}/assignments/write-auth-tests/decision-record.md +0 -0
  130. /package/examples/{sample-mission → sample-project}/assignments/write-auth-tests/handoff.md +0 -0
  131. /package/examples/{sample-mission → sample-project}/assignments/write-auth-tests/plan.md +0 -0
  132. /package/examples/{sample-mission → sample-project}/assignments/write-auth-tests/scratchpad.md +0 -0
  133. /package/examples/{sample-mission/mission.md → sample-project/project.md} +0 -0
  134. /package/examples/{sample-mission → sample-project}/resources/auth-requirements.md +0 -0
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: syntaur-protocol
3
- description: This skill should be used when the user mentions "syntaur", "assignment", "mission", works with files under ~/.syntaur/, references assignment.md, plan.md, handoff.md, or discusses the Syntaur protocol, lifecycle states, or write boundaries.
3
+ description: This skill should be used when the user mentions "syntaur", "assignment", "project", works with files under ~/.syntaur/, references assignment.md, plan.md, handoff.md, or discusses the Syntaur protocol, lifecycle states, or write boundaries.
4
4
  version: 0.1.0
5
5
  ---
6
6
 
@@ -12,29 +12,34 @@ You are working within the Syntaur protocol. Follow these rules at all times.
12
12
 
13
13
  You MUST respect file ownership boundaries. Violations will be blocked by the PreToolUse hook.
14
14
 
15
- ### Files you may WRITE:
15
+ ### Files you may WRITE directly:
16
16
  1. **Your assignment folder** -- only the assignment you are currently working on:
17
- - `assignment.md`, `plan.md`, `scratchpad.md`, `handoff.md`, `decision-record.md`
18
- - Path: `~/.syntaur/missions/<mission>/assignments/<your-assignment>/`
19
- 2. **Shared resources and memories** at the mission level:
20
- - `~/.syntaur/missions/<mission>/resources/<slug>.md`
21
- - `~/.syntaur/missions/<mission>/memories/<slug>.md`
17
+ - `assignment.md`, `plan*.md` (0 or more versioned plan files), `progress.md`, `scratchpad.md`, `handoff.md`, `decision-record.md`
18
+ - Path (project-nested): `~/.syntaur/projects/<project>/assignments/<your-assignment>/`
19
+ - Path (standalone): `~/.syntaur/assignments/<your-assignment-uuid>/` folder named by UUID, `project: null`, `slug` display-only
20
+ 2. **Shared resources and memories** at the project level:
21
+ - `~/.syntaur/projects/<project>/resources/<slug>.md`
22
+ - `~/.syntaur/projects/<project>/memories/<slug>.md`
22
23
  3. **Your workspace** -- source code files within the workspace defined in your assignment's frontmatter (`workspace.worktreePath` or `workspace.repository`)
23
24
  4. **Context file** -- `.syntaur/context.json` in the current working directory
24
25
 
26
+ ### Files written only via CLI (never edit directly):
27
+ - `comments.md` (any assignment) — use `syntaur comment <slug-or-uuid> "body" --type question|note|feedback [--reply-to <id>]`. Never edit directly. Questions carry a `resolved` flag toggled in the dashboard.
28
+ - Another assignment's `## Todos` section — use `syntaur request <target> "text"` to append a todo annotated `(from: <source>)`.
29
+
25
30
  ### Files you must NEVER write:
26
- 1. `mission.md`, `agent.md`, `claude.md` -- human-authored, read-only
31
+ 1. `project.md` -- human-authored, read-only
27
32
  2. `manifest.md` -- derived, rebuilt by tooling
28
33
  3. Any file prefixed with `_` (`_index-*.md`, `_status.md`) -- derived
29
- 4. Other agents' assignment folders
34
+ 4. Other agents' assignment folders (except via the CLI-mediated channels above)
30
35
  5. Any files outside your workspace boundary
31
36
 
32
37
  ## Current Assignment Context
33
38
 
34
39
  If `.syntaur/context.json` exists in the current working directory, read it to determine:
35
- - `missionSlug` -- which mission you are working on
40
+ - `projectSlug` -- which project you are working on
36
41
  - `assignmentSlug` -- which assignment is yours
37
- - `missionDir` -- absolute path to the mission folder
42
+ - `projectDir` -- absolute path to the project folder
38
43
  - `assignmentDir` -- absolute path to your assignment folder
39
44
  - `workspaceRoot` -- absolute path to your code workspace (if set)
40
45
 
@@ -46,14 +51,21 @@ For detailed protocol information, read these files:
46
51
 
47
52
  ## Lifecycle Commands
48
53
 
49
- Use the `syntaur` CLI for state transitions. Available commands:
50
- - `syntaur assign <slug> --agent <name> --mission <mission>` -- set assignee
51
- - `syntaur start <slug> --mission <mission>` -- pending -> in_progress
52
- - `syntaur review <slug> --mission <mission>` -- in_progress -> review
53
- - `syntaur complete <slug> --mission <mission>` -- in_progress/review -> completed
54
- - `syntaur block <slug> --mission <mission> --reason <text>` -- block an assignment
55
- - `syntaur unblock <slug> --mission <mission>` -- unblock
56
- - `syntaur fail <slug> --mission <mission>` -- mark as failed
54
+ Use the `syntaur` CLI for state transitions and coordination:
55
+ - `syntaur assign <slug> --agent <name> --project <project>` -- set assignee
56
+ - `syntaur start <slug> --project <project>` -- pending -> in_progress
57
+ - `syntaur review <slug> --project <project>` -- in_progress -> review
58
+ - `syntaur complete <slug> --project <project>` -- in_progress/review -> completed
59
+ - `syntaur block <slug> --project <project> --reason <text>` -- block an assignment
60
+ - `syntaur unblock <slug> --project <project>` -- unblock
61
+ - `syntaur fail <slug> --project <project>` -- mark as failed
62
+ - `syntaur create-assignment "<title>" [--type <type>] [--project <slug> | --one-off]` -- create project-nested or standalone assignment
63
+ - `syntaur comment <slug-or-uuid> "body" --type question|note|feedback [--reply-to <id>]` -- append to `comments.md`
64
+ - `syntaur request <target> "text" [--from <source>]` -- append a todo to another assignment's `## Todos`
65
+
66
+ ## Troubleshooting
67
+
68
+ If Syntaur state looks inconsistent (missing files, stale manifests, unexpected hook blocks), run `syntaur doctor` to diagnose. The `/doctor-syntaur` slash command wraps it and helps interpret results.
57
69
 
58
70
  ## Playbooks
59
71
 
@@ -65,8 +77,10 @@ ls ~/.syntaur/playbooks/*.md 2>/dev/null
65
77
 
66
78
  ## Conventions
67
79
 
68
- - Assignment frontmatter is the single source of truth for state
69
- - Slugs are lowercase, hyphen-separated
70
- - Always read `agent.md` and `claude.md` at the mission level before starting work
71
- - Add unanswered questions to the Q&A section of assignment.md (do not set status to blocked for questions)
72
- - Commit frequently with messages referencing the assignment slug
80
+ - Assignment frontmatter is the single source of truth for state. `project` is the containing project slug (`null` for standalone); `type` is a classification validated against `config.md` `types.definitions` when present.
81
+ - Slugs are lowercase, hyphen-separated. For standalone assignments, the folder is named by UUID; `slug` is display-only.
82
+ - Always read `project.md` at the project level (when project-nested) before starting work.
83
+ - Append timestamped entries to `progress.md` as work lands do NOT add a `## Progress` section to `assignment.md`.
84
+ - Record questions/notes/feedback via `syntaur comment` never edit `comments.md` directly. Do NOT set status to blocked for questions.
85
+ - Use `syntaur request` to route work to another assignment.
86
+ - Commit frequently with messages referencing the assignment slug.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "syntaur",
3
3
  "version": "0.1.7",
4
- "description": "Run Syntaur mission and assignment workflows from Codex, including claiming work, planning, completing handoffs, session tracking, and write-boundary enforcement.",
4
+ "description": "Run Syntaur project and assignment workflows from Codex, including claiming work, planning, completing handoffs, session tracking, and write-boundary enforcement.",
5
5
  "author": {
6
6
  "name": "Brennen"
7
7
  },
@@ -9,8 +9,8 @@
9
9
  "hooks": "./hooks.json",
10
10
  "interface": {
11
11
  "displayName": "Syntaur",
12
- "shortDescription": "Mission and assignment workflows for Codex",
13
- "longDescription": "Use Syntaur to create missions and assignments, claim work, keep plan and handoff records current, track Codex sessions, and enforce Syntaur write boundaries.",
12
+ "shortDescription": "Project and assignment workflows for Codex",
13
+ "longDescription": "Use Syntaur to create projects and assignments, claim work, keep plan and handoff records current, track Codex sessions, and enforce Syntaur write boundaries.",
14
14
  "developerName": "Brennen",
15
15
  "category": "Coding",
16
16
  "capabilities": [
@@ -4,7 +4,7 @@ Syntaur plugin for OpenAI Codex. Installed automatically during `syntaur setup`.
4
4
 
5
5
  ## What's included
6
6
 
7
- - **Skills:** syntaur-protocol, create-mission, create-assignment, grab-assignment, plan-assignment, complete-assignment, track-session
7
+ - **Skills:** syntaur-protocol, create-project, create-assignment, grab-assignment, plan-assignment, complete-assignment, track-session
8
8
  - **Hooks:** write boundary enforcement, session cleanup
9
9
  - **Commands:** track-session
10
10
  - **Agents:** syntaur-protocol (background)
@@ -4,7 +4,7 @@ This is a reference template for the Codex and OpenCode adapters.
4
4
 
5
5
  The `syntaur setup-adapter codex` or `syntaur setup-adapter opencode`
6
6
  command generates `AGENTS.md` dynamically in your workspace with
7
- mission and assignment context filled in.
7
+ project and assignment context filled in.
8
8
 
9
9
  The generated file now does two things:
10
10
 
@@ -12,5 +12,5 @@ The generated file now does two things:
12
12
  2. points Codex at the reusable Syntaur Codex plugin workflows (`syntaur-protocol`, `grab-assignment`, `plan-assignment`, `complete-assignment`, and related helpers) when that plugin is installed globally
13
13
 
14
14
  See the rendered output by running:
15
- syntaur setup-adapter codex --mission <slug> --assignment <slug>
16
- syntaur setup-adapter opencode --mission <slug> --assignment <slug>
15
+ syntaur setup-adapter codex --project <slug> --assignment <slug>
16
+ syntaur setup-adapter opencode --project <slug> --assignment <slug>
@@ -1,7 +1,7 @@
1
1
  interface:
2
2
  display_name: "Syntaur"
3
- short_description: "Mission and assignment workflows for Codex"
4
- default_prompt: "Use Syntaur to create missions and assignments, claim work, plan an assignment, or complete a handoff in the current workspace."
3
+ short_description: "Project and assignment workflows for Codex"
4
+ default_prompt: "Use Syntaur to create projects and assignments, claim work, plan an assignment, or complete a handoff in the current workspace."
5
5
 
6
6
  policy:
7
7
  allow_implicit_invocation: true
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: syntaur-operator
3
- description: Specializes in the Syntaur CLI and protocol: mission and assignment scaffolding, claiming work, maintaining assignment records, planning, handoffs, session tracking, adapter setup, lifecycle transitions, and write-boundary enforcement. Use when working with ~/.syntaur/, assignment.md, plan.md, handoff.md, .syntaur/context.json, or the syntaur CLI.
3
+ description: Specializes in the Syntaur CLI and protocol: project and assignment scaffolding, claiming work, maintaining assignment records, planning (versioned plan files), handoffs, session tracking, adapter setup, lifecycle transitions, and write-boundary enforcement. Use when working with ~/.syntaur/, assignment.md, plan*.md, handoff.md, .syntaur/context.json, or the syntaur CLI.
4
4
  ---
5
5
 
6
6
  You are the Syntaur Operator for Codex.
@@ -9,9 +9,10 @@ Your job is to work fluently within the Syntaur protocol without breaking owners
9
9
 
10
10
  ## Primary Responsibilities
11
11
 
12
- - Create missions and assignments with the `syntaur` CLI
12
+ - Create projects and assignments (project-nested or standalone) with the `syntaur` CLI
13
13
  - Claim assignments and establish local assignment context
14
- - Keep `assignment.md`, `plan.md`, and `handoff.md` accurate during execution
14
+ - Keep `assignment.md`, active plan files (`plan.md`, `plan-v2.md`, ...), `progress.md`, and `handoff.md` accurate during execution
15
+ - Record questions/notes/feedback via `syntaur comment` and route cross-assignment work via `syntaur request`
15
16
  - Track Codex sessions for the Syntaur dashboard
16
17
  - Set up Codex adapter instructions in the active workspace
17
18
  - Enforce Syntaur write boundaries and lifecycle rules
@@ -20,96 +21,110 @@ Your job is to work fluently within the Syntaur protocol without breaking owners
20
21
 
21
22
  When a task involves Syntaur:
22
23
 
23
- 1. Determine whether the user needs mission creation, assignment creation, assignment execution, completion/handoff, or session tracking.
24
+ 1. Determine whether the user needs project creation, assignment creation (project-nested or `--one-off` standalone), assignment execution, completion/handoff, or session tracking.
24
25
  2. If `.syntaur/context.json` exists in the current working directory, read it first.
25
26
  3. If working on a specific assignment, read these in order:
26
- - `<missionDir>/manifest.md`
27
- - `<missionDir>/agent.md`
28
- - `<missionDir>/mission.md`
29
- - `<missionDir>/claude.md` if it exists
30
- - `<assignmentDir>/assignment.md`
31
- - `<assignmentDir>/plan.md`
27
+ - `<projectDir>/manifest.md` (project-nested assignments only)
28
+ - `<projectDir>/project.md` (project-nested assignments only)
29
+ - `<assignmentDir>/assignment.md` — frontmatter now includes `project: <slug> | null` and `type: <classification> | null`
30
+ - any `<assignmentDir>/plan*.md` files linked from active todos in the `## Todos` section
31
+ - `<assignmentDir>/progress.md` (if present) — reverse-chron progress log
32
+ - `<assignmentDir>/comments.md` (if present) — threaded questions/notes/feedback
32
33
  - `<assignmentDir>/handoff.md`
33
34
  4. Resolve the workspace boundary from `.syntaur/context.json` or `assignment.md` frontmatter before editing code.
34
35
 
36
+ Project-nested assignments live at `~/.syntaur/projects/<slug>/assignments/<aslug>/`. Standalone assignments live at `~/.syntaur/assignments/<uuid>/` — folder named by UUID, `project: null`, `slug` display-only.
37
+
35
38
  ## File Ownership
36
39
 
37
40
  ### Never write
38
41
 
39
- - `mission.md`
40
- - `agent.md`
41
- - `claude.md`
42
+ - `project.md`
42
43
  - `manifest.md`
43
44
  - any underscore-prefixed derived file such as `_index-assignments.md`, `_status.md`, `resources/_index.md`, or `memories/_index.md`
44
- - other agents' assignment folders
45
+ - other agents' assignment folders, except via CLI-mediated channels
45
46
 
46
- ### You may write
47
+ ### You may write directly
47
48
 
48
49
  - the current assignment folder only:
49
50
  - `assignment.md`
50
- - `plan.md`
51
+ - `plan*.md` (0 or more versioned plan files, e.g., `plan.md`, `plan-v2.md`)
52
+ - `progress.md` (append timestamped entries, newest first — replaces the old `## Progress` section)
51
53
  - `scratchpad.md`
52
54
  - `handoff.md`
53
55
  - `decision-record.md`
54
- - mission `resources/*.md`
55
- - mission `memories/*.md`
56
+ - project `resources/*.md`
57
+ - project `memories/*.md`
56
58
  - `.syntaur/context.json` in the current working directory
57
59
  - source files inside the assignment workspace boundary
58
60
 
61
+ ### Write only via CLI (never edit directly)
62
+
63
+ - `comments.md` (any assignment) — use `syntaur comment <slug-or-uuid> "body" --type question|note|feedback [--reply-to <id>]`. Never edit directly. Questions carry a `resolved` flag toggled in the dashboard.
64
+ - Another assignment's `## Todos` section — use `syntaur request <source> <target> "text"` to append a todo annotated `(from: <source>)`.
65
+
59
66
  ## Protocol Rules
60
67
 
61
- - Assignment frontmatter is the single source of truth for assignment state.
62
- - Slugs are lowercase and hyphen-separated.
68
+ - Assignment frontmatter is the single source of truth for assignment state. `project` is the containing project slug (`null` for standalone); `type` is a classification validated against `config.md` `types.definitions` when present.
69
+ - Slugs are lowercase and hyphen-separated. Standalone assignment folders are named by UUID; `slug` is display-only in that case.
63
70
  - `pending` with unmet `dependsOn` means structural waiting. `blocked` means a real runtime obstacle and requires a `blockedReason`.
64
- - Update acceptance criteria checkboxes as work lands.
65
- - Keep the `## Progress` section in `assignment.md` current after meaningful milestones.
71
+ - `dependsOn` is only valid between assignments within the same project — standalone assignments cannot declare dependencies.
72
+ - Update acceptance criteria and `## Todos` checkboxes as work lands.
73
+ - Append timestamped entries to `progress.md` (not to `assignment.md`) after meaningful milestones.
74
+ - When requirements shift, supersede the prior plan todo instead of rewriting the old plan file.
66
75
  - Append handoffs instead of replacing previous handoff entries.
76
+ - Record questions via `syntaur comment ... --type question` — they roll up into `_status.md`'s `openQuestions` counter.
67
77
 
68
78
  ## CLI Reference
69
79
 
70
80
  Use these commands directly when needed:
71
81
 
72
- - `syntaur create-mission "<title>" [--slug <slug>] [--dir <path>]`
73
- - `syntaur create-assignment "<title>" --mission <slug> [--slug <slug>] [--priority <level>] [--depends-on <slugs>] [--dir <path>]`
74
- - `syntaur create-assignment "<title>" --one-off [--slug <slug>] [--priority <level>] [--dir <path>]`
82
+ - `syntaur create-project "<title>" [--slug <slug>] [--dir <path>]`
83
+ - `syntaur create-assignment "<title>" --project <slug> [--slug <slug>] [--priority <level>] [--depends-on <slugs>] [--type <type>] [--dir <path>]`
84
+ - `syntaur create-assignment "<title>" --one-off [--slug <slug>] [--priority <level>] [--type <type>] [--dir <path>]` — creates standalone at `~/.syntaur/assignments/<uuid>/`
75
85
  - `syntaur setup [--yes] [--claude] [--codex] [--claude-dir <path>] [--codex-dir <path>] [--codex-marketplace-path <path>] [--dashboard]`
76
- - `syntaur assign <assignment-slug> --agent codex --mission <mission-slug>`
77
- - `syntaur start <assignment-slug> --mission <mission-slug>`
78
- - `syntaur review <assignment-slug> --mission <mission-slug>`
79
- - `syntaur complete <assignment-slug> --mission <mission-slug>`
80
- - `syntaur block <assignment-slug> --mission <mission-slug> --reason <text>`
81
- - `syntaur unblock <assignment-slug> --mission <mission-slug>`
82
- - `syntaur fail <assignment-slug> --mission <mission-slug>`
86
+ - `syntaur assign <assignment-slug> --agent codex --project <project-slug>`
87
+ - `syntaur start <assignment-slug> --project <project-slug>`
88
+ - `syntaur review <assignment-slug> --project <project-slug>`
89
+ - `syntaur complete <assignment-slug> --project <project-slug>`
90
+ - `syntaur block <assignment-slug> --project <project-slug> --reason <text>`
91
+ - `syntaur unblock <assignment-slug> --project <project-slug>`
92
+ - `syntaur fail <assignment-slug> --project <project-slug>`
93
+ - `syntaur comment <assignment-slug-or-uuid> "body" --type question|note|feedback [--reply-to <id>] [--project <slug>]` — append to `comments.md`
94
+ - `syntaur request <target-slug-or-uuid> "text" [--from <source>] [--project <slug>]` — append to target's `## Todos`, annotated `(from: <source>)`
83
95
  - `syntaur uninstall [--all] [--yes]`
84
- - `syntaur track-session --mission <mission-slug> --assignment <assignment-slug> --agent codex --session-id <id> --path <cwd>`
85
- - `syntaur setup-adapter codex --mission <mission-slug> --assignment <assignment-slug>`
96
+ - `syntaur track-session --project <project-slug> --assignment <assignment-slug> --agent codex --session-id <id> --path <cwd>`
97
+ - `syntaur setup-adapter codex --project <project-slug> --assignment <assignment-slug>`
86
98
 
87
99
  ## Standard Workflows
88
100
 
89
101
  ### Claim an assignment
90
102
 
91
- 1. Discover the mission and pending assignments.
103
+ 1. Discover the project and pending assignments.
92
104
  2. Run `syntaur assign ... --agent codex`.
93
105
  3. Run `syntaur start ...`.
94
106
  4. Create `.syntaur/context.json` in the working directory.
95
107
  5. Register the session with `syntaur track-session`.
96
- 6. If needed, run `syntaur setup-adapter codex --mission <slug> --assignment <slug>`.
108
+ 6. If needed, run `syntaur setup-adapter codex --project <slug> --assignment <slug>`.
97
109
 
98
110
  ### Plan an assignment
99
111
 
100
- 1. Read the assignment, mission instructions, and any dependency handoffs.
112
+ 1. Read the assignment, project instructions, and any dependency handoffs.
101
113
  2. Explore the workspace.
102
- 3. Replace the body of `plan.md` with a concrete implementation plan.
103
- 4. Keep `assignment.md` in sync with what is now known.
114
+ 3. Determine the next plan filename: `plan.md` if no `plan*.md` exists, otherwise the smallest unused `plan-v<N>.md` (N >= 2).
115
+ 4. Write the plan file with standard frontmatter (`assignment`, `status: draft`, `created`, `updated`) and body.
116
+ 5. Update `assignment.md`'s `## Todos` section: supersede any prior active plan todo (`- [x] ~~...~~ (superseded by plan-v<N>)`), then append a new `- [ ] Execute [<label>](./<planFilename>)` todo.
117
+ 6. Keep `assignment.md` in sync with what is now known.
104
118
 
105
119
  ### Complete an assignment
106
120
 
107
121
  1. Re-check every acceptance criterion.
108
122
  2. Update any missing checkboxes in `assignment.md`.
109
- 3. Append a new structured handoff entry to `handoff.md`.
110
- 4. Mark the dashboard session completed if `sessionId` exists.
111
- 5. Transition the assignment with `syntaur review` or `syntaur complete`.
112
- 6. Remove `.syntaur/context.json` when the assignment is no longer active.
123
+ 3. Append a final timestamped entry to `progress.md` summarizing the work.
124
+ 4. Append a new structured handoff entry to `handoff.md`.
125
+ 5. Mark the dashboard session completed if `sessionId` exists.
126
+ 6. Transition the assignment with `syntaur review` or `syntaur complete`.
127
+ 7. Remove `.syntaur/context.json` when the assignment is no longer active.
113
128
 
114
129
  ## Decision Rules
115
130
 
@@ -6,9 +6,7 @@ Agents must never modify these files:
6
6
 
7
7
  | File | Location |
8
8
  |------|----------|
9
- | `mission.md` | `<mission>/mission.md` |
10
- | `agent.md` | `<mission>/agent.md` |
11
- | `claude.md` | `<mission>/claude.md` |
9
+ | `project.md` | `<project>/project.md` |
12
10
 
13
11
  ## Agent-Writable (Your Assignment Folder Only)
14
12
 
@@ -16,20 +14,33 @@ You may only write to files inside your assigned assignment folder:
16
14
 
17
15
  | File | Purpose |
18
16
  |------|---------|
19
- | `assignment.md` | Assignment record and source of truth for state |
20
- | `plan.md` | Your implementation plan |
17
+ | `assignment.md` | Assignment record and source of truth for state (includes `## Todos` checklist) |
18
+ | `plan*.md` | Versioned implementation plans (optional, 0 or more: `plan.md`, `plan-v2.md`, ...) — each linked from a todo in `assignment.md` |
19
+ | `progress.md` | Append-only timestamped progress log (newest first). Replaces the old `## Progress` body section. |
21
20
  | `scratchpad.md` | Working notes |
22
21
  | `handoff.md` | Append-only handoff log |
23
22
  | `decision-record.md` | Append-only decision log |
24
23
 
25
- Path pattern: `~/.syntaur/missions/<mission>/assignments/<your-assignment>/`
24
+ Path pattern (project-nested): `~/.syntaur/projects/<project>/assignments/<your-assignment>/`
25
+ Path pattern (standalone): `~/.syntaur/assignments/<your-assignment-uuid>/`
26
+
27
+ ## CLI-Mediated Shared-Writable
28
+
29
+ Do not edit these files directly. Use the listed CLI commands:
30
+
31
+ | File | Mediator |
32
+ |------|----------|
33
+ | `comments.md` (any assignment) | `syntaur comment <slug-or-uuid> "body" [--type question\|note\|feedback] [--reply-to <id>]` |
34
+ | `## Todos` in another assignment's `assignment.md` (cross-assignment request) | `syntaur request <source> <target> "text"` |
35
+
36
+ These are bounded exceptions to the single-writer rule.
26
37
 
27
38
  ## Shared-Writable
28
39
 
29
40
  | Location | Purpose |
30
41
  |----------|---------|
31
- | `<mission>/resources/<slug>.md` | Reference material |
32
- | `<mission>/memories/<slug>.md` | Learnings and reusable patterns |
42
+ | `<project>/resources/<slug>.md` | Reference material |
43
+ | `<project>/memories/<slug>.md` | Learnings and reusable patterns |
33
44
 
34
45
  ## Derived (Never Edit)
35
46
 
@@ -1,24 +1,26 @@
1
1
  # Syntaur Protocol Summary
2
2
 
3
+ Protocol version: **2.0**
4
+
3
5
  ## Directory Structure
4
6
 
5
7
  ```
6
8
  ~/.syntaur/
7
9
  config.md
8
- missions/
9
- <mission-slug>/
10
+ projects/
11
+ <project-slug>/
10
12
  manifest.md # Derived: root navigation (read-only)
11
- mission.md # Human-authored: mission overview (read-only)
13
+ project.md # Human-authored: project overview (read-only)
12
14
  _index-assignments.md # Derived (read-only)
13
15
  _index-plans.md # Derived (read-only)
14
16
  _index-decisions.md # Derived (read-only)
15
17
  _status.md # Derived (read-only)
16
- claude.md # Human-authored: Claude-specific instructions (read-only)
17
- agent.md # Human-authored: universal agent instructions (read-only)
18
18
  assignments/
19
19
  <assignment-slug>/
20
- assignment.md # Agent-writable: source of truth for state
21
- plan.md # Agent-writable: implementation plan
20
+ assignment.md # Agent-writable: source of truth for state (includes ## Todos checklist)
21
+ plan*.md # Agent-writable: versioned implementation plans (optional, 0 or more: plan.md, plan-v2.md, ...)
22
+ progress.md # Agent-writable, append-only: timestamped progress log
23
+ comments.md # CLI-mediated: threaded questions/notes/feedback (via `syntaur comment`)
22
24
  scratchpad.md # Agent-writable: working notes
23
25
  handoff.md # Agent-writable: append-only handoff log
24
26
  decision-record.md # Agent-writable: append-only decision log
@@ -28,6 +30,18 @@
28
30
  memories/
29
31
  _index.md # Derived (read-only)
30
32
  <memory-slug>.md # Shared-writable
33
+ assignments/
34
+ <assignment-id>/ # Standalone assignments — folder named by UUID, `project: null`
35
+ assignment.md # Same schema as project-nested, `slug` is display-only
36
+ plan*.md
37
+ progress.md
38
+ comments.md
39
+ scratchpad.md
40
+ handoff.md
41
+ decision-record.md
42
+ playbooks/
43
+ manifest.md # Derived: playbook listing (read-only)
44
+ <slug>.md # User-authored: behavioral rules for agents
31
45
  ```
32
46
 
33
47
  ## Assignment Lifecycle
@@ -59,8 +73,13 @@
59
73
  ## Key Rules
60
74
 
61
75
  1. Assignment frontmatter is the single source of truth for assignment state.
62
- 2. One folder per mission and one subfolder per assignment.
76
+ 2. Project-nested assignments live at `projects/<slug>/assignments/<aslug>/` (folder = slug). Standalone assignments live at `assignments/<uuid>/` (folder = UUID, `project: null`, slug display-only).
63
77
  3. Derived files are never edited manually.
64
78
  4. Slugs are lowercase and hyphen-separated.
65
- 5. Dependencies are declared via `dependsOn` in assignment frontmatter.
79
+ 5. Dependencies are declared via `dependsOn` in assignment frontmatter. Only valid within the same project.
66
80
  6. An assignment cannot transition from `pending` to `in_progress` while any dependency is not `completed`.
81
+ 7. The `## Todos` section in `assignment.md` is an informal markdown checklist. Items may be simple tasks or link to plan files. When a plan is superseded, mark the old todo: `- [x] ~~Execute [plan](./plan.md)~~ (superseded by plan-v2)` — never delete it. `## Todos` also receives cross-assignment requests via `syntaur request`.
82
+ 8. Playbooks in `~/.syntaur/playbooks/` define behavioral rules agents must follow. Read `manifest.md` for a summary, then read each referenced playbook before starting work.
83
+ 9. Progress is appended to `progress.md` as timestamped entries (newest first). Do not add a `## Progress` section to `assignment.md`.
84
+ 10. Comments are appended to `comments.md` via `syntaur comment <slug> "body" [--type question|note|feedback] [--reply-to <id>]`. Never edit `comments.md` directly.
85
+ 11. Cross-assignment work is requested via `syntaur request <source> <target> "text"` — appends to the target's `## Todos` annotated `(from: <source>)`.
@@ -51,7 +51,7 @@ if [ ! -f "$CONTEXT_FILE" ]; then
51
51
  fi
52
52
 
53
53
  ASSIGNMENT_DIR=$(jq -r '.assignmentDir // empty' "$CONTEXT_FILE" 2>/dev/null)
54
- MISSION_DIR=$(jq -r '.missionDir // empty' "$CONTEXT_FILE" 2>/dev/null)
54
+ MISSION_DIR=$(jq -r '.projectDir // empty' "$CONTEXT_FILE" 2>/dev/null)
55
55
  WORKSPACE_ROOT=$(jq -r '.workspaceRoot // empty' "$CONTEXT_FILE" 2>/dev/null)
56
56
 
57
57
  if [ -z "$ASSIGNMENT_DIR" ] || [ -z "$MISSION_DIR" ]; then
@@ -93,7 +93,7 @@ if [ -n "$WORKSPACE_ROOT" ] && [[ "$FILE_PATH" == "$WORKSPACE_ROOT"/* ]]; then
93
93
  allow_and_exit
94
94
  fi
95
95
 
96
- REASON="Syntaur write boundary violation: Cannot write to '$FILE_PATH'. Allowed paths: assignment dir ($ASSIGNMENT_DIR), mission resources/memories, workspace ($WORKSPACE_ROOT)."
96
+ REASON="Syntaur write boundary violation: Cannot write to '$FILE_PATH'. Allowed paths: assignment dir ($ASSIGNMENT_DIR), project resources/memories, workspace ($WORKSPACE_ROOT)."
97
97
  REASON_ESCAPED=$(echo "$REASON" | jq -Rs '.' 2>/dev/null)
98
98
  if [ -z "$REASON_ESCAPED" ]; then
99
99
  REASON_ESCAPED="\"Syntaur write boundary violation\""
@@ -24,7 +24,7 @@ if [ ! -f "$CONTEXT_FILE" ]; then
24
24
  fi
25
25
 
26
26
  SESSION_ID=$(jq -r '.sessionId // empty' "$CONTEXT_FILE" 2>/dev/null)
27
- MISSION_SLUG=$(jq -r '.missionSlug // empty' "$CONTEXT_FILE" 2>/dev/null)
27
+ MISSION_SLUG=$(jq -r '.projectSlug // empty' "$CONTEXT_FILE" 2>/dev/null)
28
28
 
29
29
  if [ -z "$SESSION_ID" ] || [ -z "$MISSION_SLUG" ]; then
30
30
  exit 0
@@ -33,7 +33,7 @@ fi
33
33
  PORT=$(cat "$HOME/.syntaur/dashboard-port" 2>/dev/null || echo "4800")
34
34
  curl -sf -X PATCH "http://localhost:${PORT}/api/agent-sessions/${SESSION_ID}/status" \
35
35
  -H "Content-Type: application/json" \
36
- -d "{\"status\": \"stopped\", \"missionSlug\": \"${MISSION_SLUG}\"}" \
36
+ -d "{\"status\": \"stopped\", \"projectSlug\": \"${MISSION_SLUG}\"}" \
37
37
  -o /dev/null 2>/dev/null || true
38
38
 
39
39
  exit 0
@@ -11,12 +11,13 @@ Write a handoff for the current Syntaur assignment and transition it to `review`
11
11
 
12
12
  User arguments: `$ARGUMENTS`
13
13
 
14
- If the user passed `--complete`, transition directly to `completed` only when all acceptance criteria are met. Otherwise transition to `review`.
14
+ If the user passed `--complete`, transition directly to `completed` only when all acceptance criteria are met AND all todos are either checked or marked superseded. Otherwise transition to `review`.
15
15
 
16
16
  ## Workflow
17
17
 
18
18
  1. Read `.syntaur/context.json`. If it does not exist, tell the user there is no active assignment.
19
- 2. Read `<assignmentDir>/assignment.md` and evaluate every item in the `## Acceptance Criteria` section.
19
+ 2. Read `<assignmentDir>/assignment.md` and evaluate every item in the `## Acceptance Criteria` section AND every item in the `## Todos` section. Superseded todos (marked `- [x] ~~...~~ (superseded by ...)`) count as resolved. If any acceptance criterion is unmet OR any todo is still `- [ ]` and not superseded, warn the user before proceeding.
20
+ 2.5. Append a final entry to `<assignmentDir>/progress.md` (reverse-chron, newest first) under a new `## <ISO 8601 timestamp>` heading summarizing the final state of the work. Bump `entryCount` and `updated` in the frontmatter. Do NOT add a `## Progress` section to `assignment.md` — progress entries live exclusively in `progress.md` as of protocol v2.0.
20
21
  3. Read `<assignmentDir>/handoff.md` and append a new handoff entry using the protocol format:
21
22
 
22
23
  ```markdown
@@ -44,18 +45,18 @@ If the user passed `--complete`, transition directly to `completed` only when al
44
45
  4. Update the handoff frontmatter:
45
46
  - set `updated` to the current timestamp
46
47
  - increment `handoffCount`
47
- 5. Update acceptance criteria checkboxes in `assignment.md` to match reality.
48
+ 5. Update acceptance criteria and todo checkboxes in `assignment.md` to match reality. Do NOT modify superseded todo lines (those matching `- [x] ~~...~~ (superseded by ...)`).
48
49
  6. If `.syntaur/context.json` includes `sessionId`, mark that session as completed through the dashboard API:
49
50
 
50
51
  ```bash
51
52
  curl -s -X PATCH "http://localhost:$(cat ~/.syntaur/dashboard-port 2>/dev/null || echo 4800)/api/agent-sessions/<session-id>/status" \
52
53
  -H "Content-Type: application/json" \
53
- -d '{"status":"completed","missionSlug":"<mission-slug>"}'
54
+ -d '{"status":"completed","projectSlug":"<project-slug>"}'
54
55
  ```
55
56
 
56
57
  7. Transition the assignment:
57
- - `syntaur complete <assignment-slug> --mission <mission-slug>` when `--complete` is allowed
58
- - otherwise `syntaur review <assignment-slug> --mission <mission-slug>`
58
+ - `syntaur complete <assignment-slug> --project <project-slug>` when `--complete` is allowed
59
+ - otherwise `syntaur review <assignment-slug> --project <project-slug>`
59
60
  8. Delete `.syntaur/context.json`.
60
61
  9. Summarize:
61
62
  - new status
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: create-assignment
3
- description: Use when the user wants to create a new Syntaur assignment inside a mission or as a one-off mission plus assignment.
3
+ description: Use when the user wants to create a new Syntaur assignment inside a project or as a one-off project plus assignment.
4
4
  ---
5
5
 
6
6
  # Create Assignment
@@ -14,30 +14,36 @@ User arguments: `$ARGUMENTS`
14
14
  Parse:
15
15
 
16
16
  - First positional argument: assignment title
17
- - `--mission <slug>` required unless `--one-off`
18
- - `--one-off` optional
17
+ - `--project <slug>` required unless `--one-off`
18
+ - `--one-off` optional — creates a **standalone** assignment at `~/.syntaur/assignments/<uuid>/` with `project: null`. Folder named by UUID; `slug` is display-only. `--depends-on` is not permitted for standalone assignments.
19
19
  - `--slug <slug>` optional
20
20
  - `--priority <level>` optional, default `medium`
21
- - `--depends-on <slug[,slug...]>` optional
21
+ - `--type <type>` optional — classification such as `feature`, `bug`, `refactor`, `research`, `chore`. Defaults to `feature`. When `~/.syntaur/config.md` defines `types.definitions`, the CLI validates against that list.
22
+ - `--depends-on <slug[,slug...]>` optional (project-nested only)
22
23
  - `--dir <path>` optional
23
24
 
24
25
  If no title was provided, ask the user for it.
25
26
 
26
- If neither `--mission` nor `--one-off` was provided, look for `.syntaur/context.json` in the current working directory. If present, default the mission to that context's `missionSlug` and tell the user you are using it.
27
+ If neither `--project` nor `--one-off` was provided, look for `.syntaur/context.json` in the current working directory. If present, default the project to that context's `projectSlug` and tell the user you are using it.
27
28
 
28
29
  ## Workflow
29
30
 
30
31
  1. Run one of:
31
- - `syntaur create-assignment "<title>" --mission <slug> [--slug <slug>] [--priority <level>] [--depends-on <slugs>] [--dir <path>]`
32
- - `syntaur create-assignment "<title>" --one-off [--slug <slug>] [--priority <level>] [--dir <path>]`
32
+ - `syntaur create-assignment "<title>" --project <slug> [--slug <slug>] [--priority <level>] [--depends-on <slugs>] [--type <type>] [--dir <path>]`
33
+ - `syntaur create-assignment "<title>" --one-off [--slug <slug>] [--priority <level>] [--type <type>] [--dir <path>]`
33
34
  2. If the command fails, report the error and stop.
34
35
  3. Read the generated `assignment.md`.
35
36
  4. Summarize:
36
- - assignment slug
37
- - mission slug
37
+ - assignment slug (for standalone assignments, also report the UUID — the folder is named by UUID, not slug)
38
+ - project slug (or `null` for standalone)
38
39
  - priority
40
+ - type
39
41
  - location
40
- - created files: `assignment.md`, `plan.md`, `scratchpad.md`, `handoff.md`, `decision-record.md`
41
- 5. Suggest next steps:
42
- - fill in the objective, context, and acceptance criteria
42
+ - created files: `assignment.md`, `progress.md`, `comments.md`, `scratchpad.md`, `handoff.md`, `decision-record.md` (plan files are NOT scaffolded — they are created on demand by `plan-assignment`)
43
+ 5. Remind the user:
44
+ - Progress entries go into `progress.md` via direct appends (not into `assignment.md`).
45
+ - Comments are appended via `syntaur comment <slug-or-uuid> "body" --type question|note|feedback` — never edit `comments.md` directly.
46
+ 6. Suggest next steps:
47
+ - fill in the objective, context, acceptance criteria, and any initial todos in the `## Todos` section
48
+ - or run `plan-assignment` to create a plan file and auto-append a linked todo to `## Todos`
43
49
  - run `grab-assignment` to claim it if work should begin now