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,13 +23,13 @@ Optional notes from the user: $ARGUMENTS
23
23
 
24
24
  Read `.syntaur/context.json` from the current working directory.
25
25
 
26
- If the file does not exist, tell the user: "No active assignment found. Run `/grab-assignment <mission-slug>` first to claim an assignment."
26
+ If the file does not exist, tell the user: "No active assignment found. Run `/grab-assignment <project-slug>` first to claim an assignment."
27
27
 
28
28
  Extract from the context file:
29
- - `missionSlug` -- the mission slug
29
+ - `projectSlug` -- the project slug
30
30
  - `assignmentSlug` -- the assignment slug
31
31
  - `assignmentDir` -- absolute path to the assignment folder
32
- - `missionDir` -- absolute path to the mission folder
32
+ - `projectDir` -- absolute path to the project folder
33
33
  - `workspaceRoot` -- absolute path to the workspace (may be null)
34
34
 
35
35
  ## Step 1.5: Load Playbooks
@@ -47,12 +47,12 @@ For each file found, read it and follow its directives. Playbooks may contain ru
47
47
  Read the following files to understand the assignment:
48
48
 
49
49
  1. Read `<assignmentDir>/assignment.md` -- extract the objective, acceptance criteria, context section, and any Q&A
50
- 2. Read `<missionDir>/agent.md` -- extract conventions and boundaries
51
- 3. Read `<missionDir>/claude.md` if it exists -- extract Claude-specific instructions
52
- 4. Read `<missionDir>/mission.md` -- extract the mission goal for broader context
50
+ 2. Read `<projectDir>/agent.md` -- extract conventions and boundaries
51
+ 3. Read `<projectDir>/claude.md` if it exists -- extract Claude-specific instructions
52
+ 4. Read `<projectDir>/project.md` -- extract the project goal for broader context
53
53
 
54
54
  If the assignment has dependencies (`dependsOn` in frontmatter), read the handoff.md from each dependency's assignment folder for integration context:
55
- - `<missionDir>/assignments/<dep-slug>/handoff.md`
55
+ - `<projectDir>/assignments/<dep-slug>/handoff.md`
56
56
 
57
57
  ## Step 3: Explore Workspace (if set)
58
58
 
@@ -72,9 +72,32 @@ If `workspaceRoot` is null, skip this step and note in the plan that no workspac
72
72
 
73
73
  ## Step 4: Write the Plan
74
74
 
75
- Read the existing `<assignmentDir>/plan.md` to see its current frontmatter structure. Preserve the YAML frontmatter fields (`assignment`, `status`, `created`, `updated`) and update the `updated` timestamp. Change the `status` field from `draft` to `in_progress` if it is still `draft`.
75
+ Plans are versioned. The first plan for an assignment is `plan.md`; subsequent plans are `plan-v2.md`, `plan-v3.md`, etc. Each plan gets a linked entry in the `## Todos` section of `assignment.md`, and any prior active plan todo is marked superseded (never deleted).
76
76
 
77
- Replace the markdown body with a detailed implementation plan. The plan should include:
77
+ ### 4a. Determine the next plan filename
78
+
79
+ Use Glob to list `<assignmentDir>/plan*.md`. Then:
80
+
81
+ - If no plan files exist, the target is `plan.md` and the version label is "plan".
82
+ - If `plan.md` exists but no `plan-v<N>.md`, the target is `plan-v2.md` and the version label is "plan v2".
83
+ - Otherwise, pick the smallest `N >= 2` such that `plan-v<N>.md` does not exist. The version label is `plan v<N>`.
84
+
85
+ Remember this `planFilename` and `versionLabel` for the remaining substeps.
86
+
87
+ ### 4b. Write the plan file
88
+
89
+ Write `<assignmentDir>/<planFilename>` with standard plan frontmatter:
90
+
91
+ ```yaml
92
+ ---
93
+ assignment: <assignmentSlug>
94
+ status: draft
95
+ created: "<nowTimestamp>"
96
+ updated: "<nowTimestamp>"
97
+ ---
98
+ ```
99
+
100
+ Then the markdown body should include:
78
101
 
79
102
  1. **Overview** -- one paragraph summarizing the approach
80
103
  2. **Tasks** -- numbered list of implementation tasks, each with:
@@ -86,7 +109,31 @@ Replace the markdown body with a detailed implementation plan. The plan should i
86
109
  4. **Risks and Open Questions** -- anything that might block or complicate implementation
87
110
  5. **Testing Strategy** -- how to verify the implementation works
88
111
 
89
- Write the plan using the Edit tool to update `<assignmentDir>/plan.md`. Preserve the existing frontmatter and replace only the body content.
112
+ **Decision capture:** While planning, note any meaningful choices you make (library picks, schema design, architectural calls, rejected alternatives). Record each as a numbered entry in `<assignmentDir>/decision-record.md` with the format `## Decision N: <short title>` fields: Status (proposed/accepted), Context, Decision, Consequences. Downstream assignments that depend on this one auto-load these decisions during `/grab-assignment`, so they pay off over time.
113
+
114
+ If the target file already exists (only possible for `plan.md` on first re-run against a scaffolded-but-empty plan), preserve the frontmatter and replace only the body, flipping `status` from `draft` to `in_progress` and updating `updated`.
115
+
116
+ ### 4c. Update assignment.md Todos
117
+
118
+ Read `<assignmentDir>/assignment.md` and locate the `## Todos` section.
119
+
120
+ 1. **Supersede prior plan todos.** Scan unchecked todo lines for any that match the pattern `- [ ] Execute [<label>](./plan.md)` or `- [ ] Execute [<label>](./plan-v<N>.md)`. For each match, rewrite the line as:
121
+
122
+ ```
123
+ - [x] ~~Execute [<label>](./<old-plan-filename>)~~ (superseded by <versionLabel>)
124
+ ```
125
+
126
+ Never delete the old line — preserve history.
127
+
128
+ 2. **Append the new plan todo.** Append a new line to the end of the `## Todos` section:
129
+
130
+ ```
131
+ - [ ] Execute [<versionLabel>](./<planFilename>)
132
+ ```
133
+
134
+ 3. **Missing section fallback.** If the `## Todos` section does not exist (legacy assignment predating this convention), insert it immediately after `## Acceptance Criteria` with a short guidance HTML comment followed by the new todo line. Match the template used by `/create-assignment`.
135
+
136
+ Also update the assignment frontmatter `updated` timestamp.
90
137
 
91
138
  ## Step 5: Report to User
92
139
 
@@ -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
 
@@ -14,16 +14,16 @@ You MUST respect file ownership boundaries. Violations will be blocked by the Pr
14
14
 
15
15
  ### Files you may WRITE:
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), `scratchpad.md`, `handoff.md`, `decision-record.md`
18
+ - Path: `~/.syntaur/projects/<project>/assignments/<your-assignment>/`
19
+ 2. **Shared resources and memories** at the project level:
20
+ - `~/.syntaur/projects/<project>/resources/<slug>.md`
21
+ - `~/.syntaur/projects/<project>/memories/<slug>.md`
22
22
  3. **Your workspace** -- source code files within the workspace defined in your assignment's frontmatter (`workspace.worktreePath` or `workspace.repository`)
23
23
  4. **Context file** -- `.syntaur/context.json` in the current working directory
24
24
 
25
25
  ### Files you must NEVER write:
26
- 1. `mission.md`, `agent.md`, `claude.md` -- human-authored, read-only
26
+ 1. `project.md`, `agent.md`, `claude.md` -- human-authored, read-only
27
27
  2. `manifest.md` -- derived, rebuilt by tooling
28
28
  3. Any file prefixed with `_` (`_index-*.md`, `_status.md`) -- derived
29
29
  4. Other agents' assignment folders
@@ -32,9 +32,9 @@ You MUST respect file ownership boundaries. Violations will be blocked by the Pr
32
32
  ## Current Assignment Context
33
33
 
34
34
  If `.syntaur/context.json` exists in the current working directory, read it to determine:
35
- - `missionSlug` -- which mission you are working on
35
+ - `projectSlug` -- which project you are working on
36
36
  - `assignmentSlug` -- which assignment is yours
37
- - `missionDir` -- absolute path to the mission folder
37
+ - `projectDir` -- absolute path to the project folder
38
38
  - `assignmentDir` -- absolute path to your assignment folder
39
39
  - `workspaceRoot` -- absolute path to your code workspace (if set)
40
40
 
@@ -47,13 +47,17 @@ For detailed protocol information, read these files:
47
47
  ## Lifecycle Commands
48
48
 
49
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
50
+ - `syntaur assign <slug> --agent <name> --project <project>` -- set assignee
51
+ - `syntaur start <slug> --project <project>` -- pending -> in_progress
52
+ - `syntaur review <slug> --project <project>` -- in_progress -> review
53
+ - `syntaur complete <slug> --project <project>` -- in_progress/review -> completed
54
+ - `syntaur block <slug> --project <project> --reason <text>` -- block an assignment
55
+ - `syntaur unblock <slug> --project <project>` -- unblock
56
+ - `syntaur fail <slug> --project <project>` -- mark as failed
57
+
58
+ ## Troubleshooting
59
+
60
+ 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
61
 
58
62
  ## Playbooks
59
63
 
@@ -67,6 +71,6 @@ ls ~/.syntaur/playbooks/*.md 2>/dev/null
67
71
 
68
72
  - Assignment frontmatter is the single source of truth for state
69
73
  - Slugs are lowercase, hyphen-separated
70
- - Always read `agent.md` and `claude.md` at the mission level before starting work
74
+ - Always read `agent.md` and `claude.md` at the project level before starting work
71
75
  - Add unanswered questions to the Q&A section of assignment.md (do not set status to blocked for questions)
72
76
  - 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,9 @@ 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 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`, ...), and `handoff.md` accurate during execution
15
15
  - Track Codex sessions for the Syntaur dashboard
16
16
  - Set up Codex adapter instructions in the active workspace
17
17
  - Enforce Syntaur write boundaries and lifecycle rules
@@ -20,15 +20,15 @@ Your job is to work fluently within the Syntaur protocol without breaking owners
20
20
 
21
21
  When a task involves Syntaur:
22
22
 
23
- 1. Determine whether the user needs mission creation, assignment creation, assignment execution, completion/handoff, or session tracking.
23
+ 1. Determine whether the user needs project creation, assignment creation, assignment execution, completion/handoff, or session tracking.
24
24
  2. If `.syntaur/context.json` exists in the current working directory, read it first.
25
25
  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
26
+ - `<projectDir>/manifest.md`
27
+ - `<projectDir>/agent.md`
28
+ - `<projectDir>/project.md`
29
+ - `<projectDir>/claude.md` if it exists
30
30
  - `<assignmentDir>/assignment.md`
31
- - `<assignmentDir>/plan.md`
31
+ - any `<assignmentDir>/plan*.md` files linked from active todos in the `## Todos` section
32
32
  - `<assignmentDir>/handoff.md`
33
33
  4. Resolve the workspace boundary from `.syntaur/context.json` or `assignment.md` frontmatter before editing code.
34
34
 
@@ -36,7 +36,7 @@ When a task involves Syntaur:
36
36
 
37
37
  ### Never write
38
38
 
39
- - `mission.md`
39
+ - `project.md`
40
40
  - `agent.md`
41
41
  - `claude.md`
42
42
  - `manifest.md`
@@ -47,12 +47,12 @@ When a task involves Syntaur:
47
47
 
48
48
  - the current assignment folder only:
49
49
  - `assignment.md`
50
- - `plan.md`
50
+ - `plan*.md` (0 or more versioned plan files, e.g., `plan.md`, `plan-v2.md`)
51
51
  - `scratchpad.md`
52
52
  - `handoff.md`
53
53
  - `decision-record.md`
54
- - mission `resources/*.md`
55
- - mission `memories/*.md`
54
+ - project `resources/*.md`
55
+ - project `memories/*.md`
56
56
  - `.syntaur/context.json` in the current working directory
57
57
  - source files inside the assignment workspace boundary
58
58
 
@@ -61,7 +61,8 @@ When a task involves Syntaur:
61
61
  - Assignment frontmatter is the single source of truth for assignment state.
62
62
  - Slugs are lowercase and hyphen-separated.
63
63
  - `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.
64
+ - Update acceptance criteria and `## Todos` checkboxes as work lands.
65
+ - When requirements shift, supersede the prior plan todo instead of rewriting the old plan file.
65
66
  - Keep the `## Progress` section in `assignment.md` current after meaningful milestones.
66
67
  - Append handoffs instead of replacing previous handoff entries.
67
68
 
@@ -69,38 +70,40 @@ When a task involves Syntaur:
69
70
 
70
71
  Use these commands directly when needed:
71
72
 
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>]`
73
+ - `syntaur create-project "<title>" [--slug <slug>] [--dir <path>]`
74
+ - `syntaur create-assignment "<title>" --project <slug> [--slug <slug>] [--priority <level>] [--depends-on <slugs>] [--dir <path>]`
74
75
  - `syntaur create-assignment "<title>" --one-off [--slug <slug>] [--priority <level>] [--dir <path>]`
75
76
  - `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>`
77
+ - `syntaur assign <assignment-slug> --agent codex --project <project-slug>`
78
+ - `syntaur start <assignment-slug> --project <project-slug>`
79
+ - `syntaur review <assignment-slug> --project <project-slug>`
80
+ - `syntaur complete <assignment-slug> --project <project-slug>`
81
+ - `syntaur block <assignment-slug> --project <project-slug> --reason <text>`
82
+ - `syntaur unblock <assignment-slug> --project <project-slug>`
83
+ - `syntaur fail <assignment-slug> --project <project-slug>`
83
84
  - `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>`
85
+ - `syntaur track-session --project <project-slug> --assignment <assignment-slug> --agent codex --session-id <id> --path <cwd>`
86
+ - `syntaur setup-adapter codex --project <project-slug> --assignment <assignment-slug>`
86
87
 
87
88
  ## Standard Workflows
88
89
 
89
90
  ### Claim an assignment
90
91
 
91
- 1. Discover the mission and pending assignments.
92
+ 1. Discover the project and pending assignments.
92
93
  2. Run `syntaur assign ... --agent codex`.
93
94
  3. Run `syntaur start ...`.
94
95
  4. Create `.syntaur/context.json` in the working directory.
95
96
  5. Register the session with `syntaur track-session`.
96
- 6. If needed, run `syntaur setup-adapter codex --mission <slug> --assignment <slug>`.
97
+ 6. If needed, run `syntaur setup-adapter codex --project <slug> --assignment <slug>`.
97
98
 
98
99
  ### Plan an assignment
99
100
 
100
- 1. Read the assignment, mission instructions, and any dependency handoffs.
101
+ 1. Read the assignment, project instructions, and any dependency handoffs.
101
102
  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.
103
+ 3. Determine the next plan filename: `plan.md` if no `plan*.md` exists, otherwise the smallest unused `plan-v<N>.md` (N >= 2).
104
+ 4. Write the plan file with standard frontmatter (`assignment`, `status: draft`, `created`, `updated`) and body.
105
+ 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.
106
+ 6. Keep `assignment.md` in sync with what is now known.
104
107
 
105
108
  ### Complete an assignment
106
109
 
@@ -6,9 +6,9 @@ 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` |
10
+ | `agent.md` | `<project>/agent.md` |
11
+ | `claude.md` | `<project>/claude.md` |
12
12
 
13
13
  ## Agent-Writable (Your Assignment Folder Only)
14
14
 
@@ -16,20 +16,20 @@ You may only write to files inside your assigned assignment folder:
16
16
 
17
17
  | File | Purpose |
18
18
  |------|---------|
19
- | `assignment.md` | Assignment record and source of truth for state |
20
- | `plan.md` | Your implementation plan |
19
+ | `assignment.md` | Assignment record and source of truth for state (includes `## Todos` checklist) |
20
+ | `plan*.md` | Versioned implementation plans (optional, 0 or more: `plan.md`, `plan-v2.md`, ...) — each linked from a todo in `assignment.md` |
21
21
  | `scratchpad.md` | Working notes |
22
22
  | `handoff.md` | Append-only handoff log |
23
23
  | `decision-record.md` | Append-only decision log |
24
24
 
25
- Path pattern: `~/.syntaur/missions/<mission>/assignments/<your-assignment>/`
25
+ Path pattern: `~/.syntaur/projects/<project>/assignments/<your-assignment>/`
26
26
 
27
27
  ## Shared-Writable
28
28
 
29
29
  | Location | Purpose |
30
30
  |----------|---------|
31
- | `<mission>/resources/<slug>.md` | Reference material |
32
- | `<mission>/memories/<slug>.md` | Learnings and reusable patterns |
31
+ | `<project>/resources/<slug>.md` | Reference material |
32
+ | `<project>/memories/<slug>.md` | Learnings and reusable patterns |
33
33
 
34
34
  ## Derived (Never Edit)
35
35
 
@@ -5,10 +5,10 @@
5
5
  ```
6
6
  ~/.syntaur/
7
7
  config.md
8
- missions/
9
- <mission-slug>/
8
+ projects/
9
+ <project-slug>/
10
10
  manifest.md # Derived: root navigation (read-only)
11
- mission.md # Human-authored: mission overview (read-only)
11
+ project.md # Human-authored: project overview (read-only)
12
12
  _index-assignments.md # Derived (read-only)
13
13
  _index-plans.md # Derived (read-only)
14
14
  _index-decisions.md # Derived (read-only)
@@ -17,8 +17,8 @@
17
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
22
  scratchpad.md # Agent-writable: working notes
23
23
  handoff.md # Agent-writable: append-only handoff log
24
24
  decision-record.md # Agent-writable: append-only decision log
@@ -28,6 +28,9 @@
28
28
  memories/
29
29
  _index.md # Derived (read-only)
30
30
  <memory-slug>.md # Shared-writable
31
+ playbooks/
32
+ manifest.md # Derived: playbook listing (read-only)
33
+ <slug>.md # User-authored: behavioral rules for agents
31
34
  ```
32
35
 
33
36
  ## Assignment Lifecycle
@@ -59,8 +62,10 @@
59
62
  ## Key Rules
60
63
 
61
64
  1. Assignment frontmatter is the single source of truth for assignment state.
62
- 2. One folder per mission and one subfolder per assignment.
65
+ 2. One folder per project and one subfolder per assignment.
63
66
  3. Derived files are never edited manually.
64
67
  4. Slugs are lowercase and hyphen-separated.
65
68
  5. Dependencies are declared via `dependsOn` in assignment frontmatter.
66
69
  6. An assignment cannot transition from `pending` to `in_progress` while any dependency is not `completed`.
70
+ 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.
71
+ 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.
@@ -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,12 @@ 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
20
  3. Read `<assignmentDir>/handoff.md` and append a new handoff entry using the protocol format:
21
21
 
22
22
  ```markdown
@@ -44,18 +44,18 @@ If the user passed `--complete`, transition directly to `completed` only when al
44
44
  4. Update the handoff frontmatter:
45
45
  - set `updated` to the current timestamp
46
46
  - increment `handoffCount`
47
- 5. Update acceptance criteria checkboxes in `assignment.md` to match reality.
47
+ 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
48
  6. If `.syntaur/context.json` includes `sessionId`, mark that session as completed through the dashboard API:
49
49
 
50
50
  ```bash
51
51
  curl -s -X PATCH "http://localhost:$(cat ~/.syntaur/dashboard-port 2>/dev/null || echo 4800)/api/agent-sessions/<session-id>/status" \
52
52
  -H "Content-Type: application/json" \
53
- -d '{"status":"completed","missionSlug":"<mission-slug>"}'
53
+ -d '{"status":"completed","projectSlug":"<project-slug>"}'
54
54
  ```
55
55
 
56
56
  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>`
57
+ - `syntaur complete <assignment-slug> --project <project-slug>` when `--complete` is allowed
58
+ - otherwise `syntaur review <assignment-slug> --project <project-slug>`
59
59
  8. Delete `.syntaur/context.json`.
60
60
  9. Summarize:
61
61
  - 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,7 +14,7 @@ User arguments: `$ARGUMENTS`
14
14
  Parse:
15
15
 
16
16
  - First positional argument: assignment title
17
- - `--mission <slug>` required unless `--one-off`
17
+ - `--project <slug>` required unless `--one-off`
18
18
  - `--one-off` optional
19
19
  - `--slug <slug>` optional
20
20
  - `--priority <level>` optional, default `medium`
@@ -23,21 +23,22 @@ Parse:
23
23
 
24
24
  If no title was provided, ask the user for it.
25
25
 
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.
26
+ 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
27
 
28
28
  ## Workflow
29
29
 
30
30
  1. Run one of:
31
- - `syntaur create-assignment "<title>" --mission <slug> [--slug <slug>] [--priority <level>] [--depends-on <slugs>] [--dir <path>]`
31
+ - `syntaur create-assignment "<title>" --project <slug> [--slug <slug>] [--priority <level>] [--depends-on <slugs>] [--dir <path>]`
32
32
  - `syntaur create-assignment "<title>" --one-off [--slug <slug>] [--priority <level>] [--dir <path>]`
33
33
  2. If the command fails, report the error and stop.
34
34
  3. Read the generated `assignment.md`.
35
35
  4. Summarize:
36
36
  - assignment slug
37
- - mission slug
37
+ - project slug
38
38
  - priority
39
39
  - location
40
- - created files: `assignment.md`, `plan.md`, `scratchpad.md`, `handoff.md`, `decision-record.md`
40
+ - created files: `assignment.md`, `scratchpad.md`, `handoff.md`, `decision-record.md` (plan files are NOT scaffolded — they are created on demand by `plan-assignment`)
41
41
  5. Suggest next steps:
42
- - fill in the objective, context, and acceptance criteria
42
+ - fill in the objective, context, acceptance criteria, and any initial todos in the `## Todos` section
43
+ - or run `plan-assignment` to create a plan file and auto-append a linked todo to `## Todos`
43
44
  - run `grab-assignment` to claim it if work should begin now