syntaur 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/plugins/marketplace.json +20 -0
- package/bin/syntaur.js +2 -0
- package/dashboard/dist/assets/_basePickBy-C-VS6QEr.js +1 -0
- package/dashboard/dist/assets/_baseUniq-Dfp0h_kE.js +1 -0
- package/dashboard/dist/assets/arc-DMAuseMg.js +1 -0
- package/dashboard/dist/assets/architectureDiagram-2XIMDMQ5-DERw9YH7.js +36 -0
- package/dashboard/dist/assets/blockDiagram-WCTKOSBZ-CVhoUGyp.js +132 -0
- package/dashboard/dist/assets/c4Diagram-IC4MRINW-B97ce7q3.js +10 -0
- package/dashboard/dist/assets/channel-BFnz84Fk.js +1 -0
- package/dashboard/dist/assets/chunk-4BX2VUAB-C-Tm8s7l.js +1 -0
- package/dashboard/dist/assets/chunk-55IACEB6-DTLywdgN.js +1 -0
- package/dashboard/dist/assets/chunk-FMBD7UC4-CZe3jJBW.js +15 -0
- package/dashboard/dist/assets/chunk-JSJVCQXG-DCDIzNBU.js +1 -0
- package/dashboard/dist/assets/chunk-KX2RTZJC-Dny_iTMP.js +1 -0
- package/dashboard/dist/assets/chunk-NQ4KR5QH-BVkniaFi.js +220 -0
- package/dashboard/dist/assets/chunk-QZHKN3VN-Yiy-DBy_.js +1 -0
- package/dashboard/dist/assets/chunk-WL4C6EOR-BZ6Aii8B.js +189 -0
- package/dashboard/dist/assets/classDiagram-VBA2DB6C-9i4eMNgh.js +1 -0
- package/dashboard/dist/assets/classDiagram-v2-RAHNMMFH-9i4eMNgh.js +1 -0
- package/dashboard/dist/assets/clone-BQWw0UR0.js +1 -0
- package/dashboard/dist/assets/cose-bilkent-S5V4N54A-p-FSX7Hd.js +1 -0
- package/dashboard/dist/assets/cytoscape.esm-BQaXIfA_.js +331 -0
- package/dashboard/dist/assets/dagre-KLK3FWXG-JGHXC_Z-.js +4 -0
- package/dashboard/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/dashboard/dist/assets/diagram-E7M64L7V-BMj79nA2.js +24 -0
- package/dashboard/dist/assets/diagram-IFDJBPK2-DvE6Hc7-.js +43 -0
- package/dashboard/dist/assets/diagram-P4PSJMXO-xVL3uMJs.js +24 -0
- package/dashboard/dist/assets/erDiagram-INFDFZHY-HAM6d8j_.js +70 -0
- package/dashboard/dist/assets/flowDiagram-PKNHOUZH-DPorMsV0.js +162 -0
- package/dashboard/dist/assets/ganttDiagram-A5KZAMGK-BxesGLxK.js +292 -0
- package/dashboard/dist/assets/gitGraphDiagram-K3NZZRJ6-tjaHpiMU.js +65 -0
- package/dashboard/dist/assets/graph-DAyh4Dby.js +1 -0
- package/dashboard/dist/assets/index-BnqH-RIk.css +1 -0
- package/dashboard/dist/assets/index-C1augJ5N.js +440 -0
- package/dashboard/dist/assets/infoDiagram-LFFYTUFH-MekJE5ZF.js +2 -0
- package/dashboard/dist/assets/init-Gi6I4Gst.js +1 -0
- package/dashboard/dist/assets/ishikawaDiagram-PHBUUO56-DovIBmaF.js +70 -0
- package/dashboard/dist/assets/journeyDiagram-4ABVD52K-CZw0QfY4.js +139 -0
- package/dashboard/dist/assets/kanban-definition-K7BYSVSG-Bl-d4Lb6.js +89 -0
- package/dashboard/dist/assets/katex-B1X10hvy.js +261 -0
- package/dashboard/dist/assets/layout-Ds5A52wn.js +1 -0
- package/dashboard/dist/assets/linear-FqOeAEKI.js +1 -0
- package/dashboard/dist/assets/mermaid.core-C7JSt2gc.js +255 -0
- package/dashboard/dist/assets/mindmap-definition-YRQLILUH-D6x3mID9.js +68 -0
- package/dashboard/dist/assets/ordinal-Cboi1Yqb.js +1 -0
- package/dashboard/dist/assets/pieDiagram-SKSYHLDU-CnElBd0K.js +30 -0
- package/dashboard/dist/assets/quadrantDiagram-337W2JSQ-Q08fuvGB.js +7 -0
- package/dashboard/dist/assets/requirementDiagram-Z7DCOOCP-BImzzV5r.js +73 -0
- package/dashboard/dist/assets/sankeyDiagram-WA2Y5GQK-BIfD481p.js +10 -0
- package/dashboard/dist/assets/sequenceDiagram-2WXFIKYE-BS_1aSDE.js +145 -0
- package/dashboard/dist/assets/stateDiagram-RAJIS63D-Br1E8nkw.js +1 -0
- package/dashboard/dist/assets/stateDiagram-v2-FVOUBMTO-rZTWN-vQ.js +1 -0
- package/dashboard/dist/assets/timeline-definition-YZTLITO2-DQJ_O-WU.js +61 -0
- package/dashboard/dist/assets/treemap-KZPCXAKY-BmmUp0Cf.js +162 -0
- package/dashboard/dist/assets/vennDiagram-LZ73GAT5-DzQooghy.js +34 -0
- package/dashboard/dist/assets/xychartDiagram-JWTSCODW-W9j8X9K6.js +7 -0
- package/dashboard/dist/index.html +17 -0
- package/dist/dashboard/server.d.ts +15 -0
- package/dist/dashboard/server.js +5873 -0
- package/dist/dashboard/server.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +8892 -0
- package/dist/index.js.map +1 -0
- package/examples/playbooks/commit-discipline.md +20 -0
- package/examples/playbooks/keep-records-updated.md +30 -0
- package/examples/playbooks/plan-versioning.md +36 -0
- package/examples/playbooks/read-before-plan.md +27 -0
- package/examples/playbooks/test-before-done.md +24 -0
- package/examples/playbooks/workspace-before-code.md +30 -0
- package/examples/sample-mission/_index-assignments.md +20 -0
- package/examples/sample-mission/_index-decisions.md +11 -0
- package/examples/sample-mission/_index-plans.md +12 -0
- package/examples/sample-mission/_status.md +47 -0
- package/examples/sample-mission/agent.md +33 -0
- package/examples/sample-mission/assignments/design-auth-schema/assignment.md +61 -0
- package/examples/sample-mission/assignments/design-auth-schema/decision-record.md +15 -0
- package/examples/sample-mission/assignments/design-auth-schema/handoff.md +31 -0
- package/examples/sample-mission/assignments/design-auth-schema/plan.md +31 -0
- package/examples/sample-mission/assignments/design-auth-schema/scratchpad.md +40 -0
- package/examples/sample-mission/assignments/implement-jwt-middleware/assignment.md +65 -0
- package/examples/sample-mission/assignments/implement-jwt-middleware/decision-record.md +15 -0
- package/examples/sample-mission/assignments/implement-jwt-middleware/handoff.md +9 -0
- package/examples/sample-mission/assignments/implement-jwt-middleware/plan.md +33 -0
- package/examples/sample-mission/assignments/implement-jwt-middleware/scratchpad.md +48 -0
- package/examples/sample-mission/assignments/write-auth-tests/assignment.md +54 -0
- package/examples/sample-mission/assignments/write-auth-tests/decision-record.md +9 -0
- package/examples/sample-mission/assignments/write-auth-tests/handoff.md +9 -0
- package/examples/sample-mission/assignments/write-auth-tests/plan.md +34 -0
- package/examples/sample-mission/assignments/write-auth-tests/scratchpad.md +8 -0
- package/examples/sample-mission/claude.md +13 -0
- package/examples/sample-mission/manifest.md +22 -0
- package/examples/sample-mission/memories/_index.md +11 -0
- package/examples/sample-mission/memories/postgres-connection-pooling.md +35 -0
- package/examples/sample-mission/mission.md +34 -0
- package/examples/sample-mission/resources/_index.md +11 -0
- package/examples/sample-mission/resources/auth-requirements.md +44 -0
- package/package.json +57 -0
- package/plugin/.claude-plugin/plugin.json +9 -0
- package/plugin/agents/syntaur-expert.md +393 -0
- package/plugin/commands/track-server/track-server.md +56 -0
- package/plugin/commands/track-session/track-session.md +65 -0
- package/plugin/hooks/enforce-boundaries.sh +135 -0
- package/plugin/hooks/hooks.json +27 -0
- package/plugin/hooks/session-cleanup.sh +74 -0
- package/plugin/references/file-ownership.md +51 -0
- package/plugin/references/protocol-summary.md +70 -0
- package/plugin/skills/complete-assignment/SKILL.md +137 -0
- package/plugin/skills/create-assignment/SKILL.md +64 -0
- package/plugin/skills/create-mission/SKILL.md +51 -0
- package/plugin/skills/grab-assignment/SKILL.md +180 -0
- package/plugin/skills/plan-assignment/SKILL.md +101 -0
- package/plugin/skills/syntaur-protocol/SKILL.md +72 -0
- package/plugins/syntaur/.codex-plugin/plugin.json +28 -0
- package/plugins/syntaur/agents/openai.yaml +7 -0
- package/plugins/syntaur/agents/syntaur-operator.md +127 -0
- package/plugins/syntaur/commands/track-session.md +27 -0
- package/plugins/syntaur/hooks.json +27 -0
- package/plugins/syntaur/references/file-ownership.md +51 -0
- package/plugins/syntaur/references/protocol-summary.md +66 -0
- package/plugins/syntaur/scripts/enforce-boundaries.sh +103 -0
- package/plugins/syntaur/scripts/session-cleanup.sh +39 -0
- package/plugins/syntaur/skills/complete-assignment/SKILL.md +63 -0
- package/plugins/syntaur/skills/create-assignment/SKILL.md +43 -0
- package/plugins/syntaur/skills/create-mission/SKILL.md +35 -0
- package/plugins/syntaur/skills/grab-assignment/SKILL.md +61 -0
- package/plugins/syntaur/skills/plan-assignment/SKILL.md +49 -0
- package/plugins/syntaur/skills/syntaur-protocol/SKILL.md +84 -0
- package/plugins/syntaur/skills/track-session/SKILL.md +49 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: complete-assignment
|
|
3
|
+
description: Use when the user wants to write a Syntaur handoff, close the current session, and transition the assignment to review or completed.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Complete Assignment
|
|
7
|
+
|
|
8
|
+
Write a handoff for the current Syntaur assignment and transition it to `review` or `completed`.
|
|
9
|
+
|
|
10
|
+
## Arguments
|
|
11
|
+
|
|
12
|
+
User arguments: `$ARGUMENTS`
|
|
13
|
+
|
|
14
|
+
If the user passed `--complete`, transition directly to `completed` only when all acceptance criteria are met. Otherwise transition to `review`.
|
|
15
|
+
|
|
16
|
+
## Workflow
|
|
17
|
+
|
|
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.
|
|
20
|
+
3. Read `<assignmentDir>/handoff.md` and append a new handoff entry using the protocol format:
|
|
21
|
+
|
|
22
|
+
```markdown
|
|
23
|
+
## Handoff <N>: <ISO 8601 timestamp>
|
|
24
|
+
|
|
25
|
+
**From:** codex
|
|
26
|
+
**To:** human
|
|
27
|
+
**Reason:** <Why this handoff is happening>
|
|
28
|
+
|
|
29
|
+
### Summary
|
|
30
|
+
<One paragraph>
|
|
31
|
+
|
|
32
|
+
### Current State
|
|
33
|
+
- <What is working>
|
|
34
|
+
- <What is not working or still partial>
|
|
35
|
+
- <Acceptance criteria status: N of M met>
|
|
36
|
+
|
|
37
|
+
### Next Steps
|
|
38
|
+
- <Recommended follow-up actions>
|
|
39
|
+
|
|
40
|
+
### Important Context
|
|
41
|
+
- <Anything the next person needs to know>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
4. Update the handoff frontmatter:
|
|
45
|
+
- set `updated` to the current timestamp
|
|
46
|
+
- increment `handoffCount`
|
|
47
|
+
5. Update acceptance criteria checkboxes in `assignment.md` to match reality.
|
|
48
|
+
6. If `.syntaur/context.json` includes `sessionId`, mark that session as completed through the dashboard API:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
curl -s -X PATCH "http://localhost:$(cat ~/.syntaur/dashboard-port 2>/dev/null || echo 4800)/api/agent-sessions/<session-id>/status" \
|
|
52
|
+
-H "Content-Type: application/json" \
|
|
53
|
+
-d '{"status":"completed","missionSlug":"<mission-slug>"}'
|
|
54
|
+
```
|
|
55
|
+
|
|
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>`
|
|
59
|
+
8. Delete `.syntaur/context.json`.
|
|
60
|
+
9. Summarize:
|
|
61
|
+
- new status
|
|
62
|
+
- acceptance criteria met vs total
|
|
63
|
+
- any criteria still unmet or follow-up risk
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
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.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Create Assignment
|
|
7
|
+
|
|
8
|
+
Create a new Syntaur assignment from Codex.
|
|
9
|
+
|
|
10
|
+
## Arguments
|
|
11
|
+
|
|
12
|
+
User arguments: `$ARGUMENTS`
|
|
13
|
+
|
|
14
|
+
Parse:
|
|
15
|
+
|
|
16
|
+
- First positional argument: assignment title
|
|
17
|
+
- `--mission <slug>` required unless `--one-off`
|
|
18
|
+
- `--one-off` optional
|
|
19
|
+
- `--slug <slug>` optional
|
|
20
|
+
- `--priority <level>` optional, default `medium`
|
|
21
|
+
- `--depends-on <slug[,slug...]>` optional
|
|
22
|
+
- `--dir <path>` optional
|
|
23
|
+
|
|
24
|
+
If no title was provided, ask the user for it.
|
|
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.
|
|
27
|
+
|
|
28
|
+
## Workflow
|
|
29
|
+
|
|
30
|
+
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>]`
|
|
33
|
+
2. If the command fails, report the error and stop.
|
|
34
|
+
3. Read the generated `assignment.md`.
|
|
35
|
+
4. Summarize:
|
|
36
|
+
- assignment slug
|
|
37
|
+
- mission slug
|
|
38
|
+
- priority
|
|
39
|
+
- 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
|
|
43
|
+
- run `grab-assignment` to claim it if work should begin now
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: create-mission
|
|
3
|
+
description: Use when the user wants to create a new Syntaur mission and scaffold its mission.md, agent.md, claude.md, indexes, and manifest files.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Create Mission
|
|
7
|
+
|
|
8
|
+
Create a new Syntaur mission from Codex.
|
|
9
|
+
|
|
10
|
+
## Arguments
|
|
11
|
+
|
|
12
|
+
User arguments: `$ARGUMENTS`
|
|
13
|
+
|
|
14
|
+
Parse:
|
|
15
|
+
|
|
16
|
+
- First positional argument: mission title
|
|
17
|
+
- `--slug <slug>` optional
|
|
18
|
+
- `--dir <path>` optional
|
|
19
|
+
- `--workspace <workspace>` optional: workspace grouping label (e.g., `syntaur`, `reeva`)
|
|
20
|
+
|
|
21
|
+
If no title was provided, ask the user for it.
|
|
22
|
+
|
|
23
|
+
## Workflow
|
|
24
|
+
|
|
25
|
+
1. Run `syntaur create-mission "<title>" [--slug <slug>] [--dir <path>] [--workspace <workspace>]`.
|
|
26
|
+
2. If the command fails, report the error and stop.
|
|
27
|
+
3. Read the generated `mission.md` to confirm the mission path and scaffold.
|
|
28
|
+
4. Summarize:
|
|
29
|
+
- mission slug
|
|
30
|
+
- mission directory
|
|
31
|
+
- key files created: `manifest.md`, `mission.md`, `agent.md`, `claude.md`
|
|
32
|
+
5. Suggest next steps:
|
|
33
|
+
- fill in `mission.md`
|
|
34
|
+
- add mission-wide guidance to `agent.md`
|
|
35
|
+
- run `create-assignment` for the first task
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: grab-assignment
|
|
3
|
+
description: Use when the user wants to discover, claim, and start a pending Syntaur assignment, create .syntaur/context.json, and register a Codex session.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Grab Assignment
|
|
7
|
+
|
|
8
|
+
Claim a pending Syntaur assignment and set up the current workspace.
|
|
9
|
+
|
|
10
|
+
## Arguments
|
|
11
|
+
|
|
12
|
+
User arguments: `$ARGUMENTS`
|
|
13
|
+
|
|
14
|
+
Parse:
|
|
15
|
+
|
|
16
|
+
- First positional argument: mission slug
|
|
17
|
+
- Second positional argument: optional assignment slug
|
|
18
|
+
|
|
19
|
+
## Workflow
|
|
20
|
+
|
|
21
|
+
1. If `.syntaur/context.json` already exists in the current working directory, read it and warn that claiming another assignment will replace the active context.
|
|
22
|
+
2. Read the mission entry files:
|
|
23
|
+
- `~/.syntaur/missions/<mission-slug>/manifest.md`
|
|
24
|
+
- `~/.syntaur/missions/<mission-slug>/mission.md`
|
|
25
|
+
- `~/.syntaur/missions/<mission-slug>/agent.md`
|
|
26
|
+
- `~/.syntaur/missions/<mission-slug>/claude.md` if it exists
|
|
27
|
+
Note the `workspace` field in `mission.md` frontmatter if present. This indicates which project/codebase grouping the mission belongs to. When writing context to `.syntaur/context.json` (Step 8), include `"workspace": "<value>"` if the mission has a workspace.
|
|
28
|
+
3. Discover pending assignments under `~/.syntaur/missions/<mission-slug>/assignments/`.
|
|
29
|
+
4. If no assignment slug was provided:
|
|
30
|
+
- list pending assignments with title and priority
|
|
31
|
+
- ask the user to choose unless only one pending assignment exists
|
|
32
|
+
5. Claim the assignment:
|
|
33
|
+
- `syntaur assign <assignment-slug> --agent codex --mission <mission-slug>`
|
|
34
|
+
- `syntaur start <assignment-slug> --mission <mission-slug>`
|
|
35
|
+
6. Read the full assignment file.
|
|
36
|
+
7. If the assignment has no workspace configured, set `workspace.repository` and `workspace.worktreePath` to the current working directory so write boundaries are meaningful.
|
|
37
|
+
8. Create `.syntaur/context.json` in the current working directory with:
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"missionSlug": "<mission-slug>",
|
|
42
|
+
"assignmentSlug": "<assignment-slug>",
|
|
43
|
+
"missionDir": "/absolute/path/to/mission",
|
|
44
|
+
"assignmentDir": "/absolute/path/to/assignment",
|
|
45
|
+
"workspaceRoot": "/absolute/path/to/workspace",
|
|
46
|
+
"title": "<assignment title>",
|
|
47
|
+
"branch": "<workspace.branch or null>",
|
|
48
|
+
"grabbedAt": "<ISO 8601 timestamp>",
|
|
49
|
+
"sessionId": "<uuid>"
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
9. Register the agent session:
|
|
54
|
+
- generate a UUID
|
|
55
|
+
- run `syntaur track-session --mission <mission-slug> --assignment <assignment-slug> --agent codex --session-id <uuid> --path <cwd>`
|
|
56
|
+
10. Summarize:
|
|
57
|
+
- assignment slug and title
|
|
58
|
+
- objective
|
|
59
|
+
- acceptance criteria
|
|
60
|
+
- workspace path
|
|
61
|
+
11. Suggest next step: `plan-assignment`
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan-assignment
|
|
3
|
+
description: Use when the user wants a detailed implementation plan written to plan.md for the current Syntaur assignment.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Plan Assignment
|
|
7
|
+
|
|
8
|
+
Create an implementation plan for the current Syntaur assignment.
|
|
9
|
+
|
|
10
|
+
## Arguments
|
|
11
|
+
|
|
12
|
+
Optional notes from the user: `$ARGUMENTS`
|
|
13
|
+
|
|
14
|
+
## Workflow
|
|
15
|
+
|
|
16
|
+
1. Read `.syntaur/context.json` from the current working directory. If it does not exist, tell the user to claim an assignment first.
|
|
17
|
+
2. Read:
|
|
18
|
+
- `<assignmentDir>/assignment.md`
|
|
19
|
+
- `<missionDir>/agent.md`
|
|
20
|
+
- `<missionDir>/claude.md` if it exists
|
|
21
|
+
- `<missionDir>/mission.md`
|
|
22
|
+
3. If the assignment depends on other assignments, read each dependency handoff for integration context.
|
|
23
|
+
4. Explore `workspaceRoot` when it exists:
|
|
24
|
+
- inspect project structure
|
|
25
|
+
- find likely implementation files
|
|
26
|
+
- note conventions and architecture
|
|
27
|
+
5. Update `<assignmentDir>/plan.md`:
|
|
28
|
+
- preserve the existing YAML frontmatter
|
|
29
|
+
- set `status` to `in_progress` if it is still `draft`
|
|
30
|
+
- refresh the `updated` timestamp
|
|
31
|
+
- replace the body with a concrete plan
|
|
32
|
+
|
|
33
|
+
## Plan Contents
|
|
34
|
+
|
|
35
|
+
Write these sections:
|
|
36
|
+
|
|
37
|
+
1. Overview
|
|
38
|
+
2. Tasks
|
|
39
|
+
3. Acceptance Criteria Mapping
|
|
40
|
+
4. Risks and Open Questions
|
|
41
|
+
5. Testing Strategy
|
|
42
|
+
|
|
43
|
+
## Reporting
|
|
44
|
+
|
|
45
|
+
After writing the plan:
|
|
46
|
+
|
|
47
|
+
- summarize the number of tasks and key decisions
|
|
48
|
+
- call out open questions or risks
|
|
49
|
+
- remind yourself to keep `assignment.md` progress and acceptance criteria current during implementation
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: syntaur-protocol
|
|
3
|
+
description: Use when the user mentions Syntaur, missions, assignments, files under ~/.syntaur/, assignment.md, plan.md, handoff.md, .syntaur/context.json, lifecycle states, or write boundaries.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Syntaur Protocol
|
|
7
|
+
|
|
8
|
+
You are working within the Syntaur protocol. Follow these rules at all times.
|
|
9
|
+
|
|
10
|
+
## Write Boundary Rules
|
|
11
|
+
|
|
12
|
+
Respect file ownership boundaries.
|
|
13
|
+
|
|
14
|
+
### Files you may write
|
|
15
|
+
|
|
16
|
+
1. Your assignment folder only:
|
|
17
|
+
- `assignment.md`
|
|
18
|
+
- `plan.md`
|
|
19
|
+
- `scratchpad.md`
|
|
20
|
+
- `handoff.md`
|
|
21
|
+
- `decision-record.md`
|
|
22
|
+
2. Mission-level shared files:
|
|
23
|
+
- `~/.syntaur/missions/<mission>/resources/<slug>.md`
|
|
24
|
+
- `~/.syntaur/missions/<mission>/memories/<slug>.md`
|
|
25
|
+
3. Workspace files inside the assignment's configured workspace root
|
|
26
|
+
4. `.syntaur/context.json` in the current working directory
|
|
27
|
+
|
|
28
|
+
### Files you must never write
|
|
29
|
+
|
|
30
|
+
1. `mission.md`, `agent.md`, `claude.md`
|
|
31
|
+
2. `manifest.md`
|
|
32
|
+
3. Any file prefixed with `_`
|
|
33
|
+
4. Other agents' assignment folders
|
|
34
|
+
5. Anything outside the current workspace boundary
|
|
35
|
+
|
|
36
|
+
## Current Assignment Context
|
|
37
|
+
|
|
38
|
+
If `.syntaur/context.json` exists in the current working directory, read it before making changes. Use it to determine:
|
|
39
|
+
|
|
40
|
+
- `missionSlug`
|
|
41
|
+
- `assignmentSlug`
|
|
42
|
+
- `missionDir`
|
|
43
|
+
- `assignmentDir`
|
|
44
|
+
- `workspaceRoot`
|
|
45
|
+
- `sessionId` if present
|
|
46
|
+
|
|
47
|
+
## Required Reading Order
|
|
48
|
+
|
|
49
|
+
When you are working on an existing assignment, read these in order:
|
|
50
|
+
|
|
51
|
+
1. `<missionDir>/manifest.md`
|
|
52
|
+
2. `<missionDir>/agent.md`
|
|
53
|
+
3. `<missionDir>/mission.md`
|
|
54
|
+
4. `<missionDir>/claude.md` if it exists
|
|
55
|
+
5. `<assignmentDir>/assignment.md`
|
|
56
|
+
6. `<assignmentDir>/plan.md`
|
|
57
|
+
7. `<assignmentDir>/handoff.md`
|
|
58
|
+
|
|
59
|
+
## Lifecycle Commands
|
|
60
|
+
|
|
61
|
+
Use the `syntaur` CLI for state transitions:
|
|
62
|
+
|
|
63
|
+
- `syntaur assign <slug> --agent <name> --mission <mission>`
|
|
64
|
+
- `syntaur start <slug> --mission <mission>`
|
|
65
|
+
- `syntaur review <slug> --mission <mission>`
|
|
66
|
+
- `syntaur complete <slug> --mission <mission>`
|
|
67
|
+
- `syntaur block <slug> --mission <mission> --reason <text>`
|
|
68
|
+
- `syntaur unblock <slug> --mission <mission>`
|
|
69
|
+
- `syntaur fail <slug> --mission <mission>`
|
|
70
|
+
|
|
71
|
+
## Conventions
|
|
72
|
+
|
|
73
|
+
- Assignment frontmatter is the single source of truth.
|
|
74
|
+
- Slugs are lowercase and hyphen-separated.
|
|
75
|
+
- Update acceptance criteria checkboxes as work lands, not only at the end.
|
|
76
|
+
- Keep the `## Progress` section in `assignment.md` current after meaningful milestones.
|
|
77
|
+
- Write handoffs with enough context for another agent or human to continue cleanly.
|
|
78
|
+
|
|
79
|
+
## References
|
|
80
|
+
|
|
81
|
+
Read these only when you need the detailed rules or directory layout:
|
|
82
|
+
|
|
83
|
+
- `../../references/protocol-summary.md`
|
|
84
|
+
- `../../references/file-ownership.md`
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: track-session
|
|
3
|
+
description: Use when the user wants to register, refresh, remove, or list tracked tmux sessions for the Syntaur dashboard.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Track Session
|
|
7
|
+
|
|
8
|
+
Track tmux sessions so their development servers show up in the Syntaur dashboard.
|
|
9
|
+
|
|
10
|
+
## Arguments
|
|
11
|
+
|
|
12
|
+
User arguments: `$ARGUMENTS`
|
|
13
|
+
|
|
14
|
+
Supported forms:
|
|
15
|
+
|
|
16
|
+
- `<session-name>`
|
|
17
|
+
- `--refresh [session-name]`
|
|
18
|
+
- `--remove <session-name>`
|
|
19
|
+
- `--list`
|
|
20
|
+
|
|
21
|
+
## Workflow
|
|
22
|
+
|
|
23
|
+
### Register
|
|
24
|
+
|
|
25
|
+
1. Verify the tmux session exists with `tmux has-session -t <name>`.
|
|
26
|
+
2. If it does not exist, list available sessions with `tmux list-sessions -F '#{session_name}'`.
|
|
27
|
+
3. Create `~/.syntaur/servers/<sanitized-name>.md` with frontmatter:
|
|
28
|
+
|
|
29
|
+
```yaml
|
|
30
|
+
---
|
|
31
|
+
session: <original-name>
|
|
32
|
+
registered: <ISO timestamp>
|
|
33
|
+
last_refreshed: <ISO timestamp>
|
|
34
|
+
---
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
4. Tell the user the session is now tracked.
|
|
38
|
+
|
|
39
|
+
### Refresh
|
|
40
|
+
|
|
41
|
+
1. Update `last_refreshed` for the named session, or for every file in `~/.syntaur/servers/` when no name was provided.
|
|
42
|
+
|
|
43
|
+
### Remove
|
|
44
|
+
|
|
45
|
+
1. Delete `~/.syntaur/servers/<sanitized-name>.md`.
|
|
46
|
+
|
|
47
|
+
### List
|
|
48
|
+
|
|
49
|
+
1. List all tracked session markdown files and show the `session` field from each.
|