syntaur 0.8.0 → 0.12.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/.claude-plugin/plugin.json +9 -1
- package/dashboard/dist/assets/{_basePickBy-CIZortGD.js → _basePickBy-XOV2F7dX.js} +1 -1
- package/dashboard/dist/assets/{_baseUniq-BHP5NBQ7.js → _baseUniq-Dccfk3fK.js} +1 -1
- package/dashboard/dist/assets/{arc-BLtQy7Cl.js → arc-TwJ5RF-H.js} +1 -1
- package/dashboard/dist/assets/{architectureDiagram-2XIMDMQ5-0mhIBjWy.js → architectureDiagram-2XIMDMQ5-CpkVJudw.js} +1 -1
- package/dashboard/dist/assets/{blockDiagram-WCTKOSBZ-CM7K5Tf5.js → blockDiagram-WCTKOSBZ-Ck6VQ4Fh.js} +1 -1
- package/dashboard/dist/assets/{c4Diagram-IC4MRINW-gsbeygvS.js → c4Diagram-IC4MRINW-B5V7YG03.js} +1 -1
- package/dashboard/dist/assets/channel-AEMTX70R.js +1 -0
- package/dashboard/dist/assets/{chunk-4BX2VUAB-CneRz9Nd.js → chunk-4BX2VUAB-rBdyOxAe.js} +1 -1
- package/dashboard/dist/assets/{chunk-55IACEB6-uetANWHd.js → chunk-55IACEB6-DKlNXjYt.js} +1 -1
- package/dashboard/dist/assets/{chunk-FMBD7UC4-3-tNszoF.js → chunk-FMBD7UC4-Cqm0PtUI.js} +1 -1
- package/dashboard/dist/assets/{chunk-JSJVCQXG-DOO88rZD.js → chunk-JSJVCQXG-CQyXQcG3.js} +1 -1
- package/dashboard/dist/assets/{chunk-KX2RTZJC-Bnc1CFy2.js → chunk-KX2RTZJC-DmqjHPpJ.js} +1 -1
- package/dashboard/dist/assets/{chunk-NQ4KR5QH-BfViC1Ms.js → chunk-NQ4KR5QH-CHXoBcYa.js} +1 -1
- package/dashboard/dist/assets/{chunk-QZHKN3VN-CgjyAt2l.js → chunk-QZHKN3VN-Dd4sChBS.js} +1 -1
- package/dashboard/dist/assets/{chunk-WL4C6EOR-BYFermSR.js → chunk-WL4C6EOR-D-QLnkY8.js} +1 -1
- package/dashboard/dist/assets/classDiagram-VBA2DB6C-LzuOAGzu.js +1 -0
- package/dashboard/dist/assets/classDiagram-v2-RAHNMMFH-LzuOAGzu.js +1 -0
- package/dashboard/dist/assets/clone-Cw63QGUJ.js +1 -0
- package/dashboard/dist/assets/{cose-bilkent-S5V4N54A-CE-k5SLv.js → cose-bilkent-S5V4N54A-VZi6uV56.js} +1 -1
- package/dashboard/dist/assets/{dagre-KLK3FWXG-CX7Br8LQ.js → dagre-KLK3FWXG-CtT97Qhx.js} +1 -1
- package/dashboard/dist/assets/{diagram-E7M64L7V-t-xhWjCU.js → diagram-E7M64L7V-BjYTNNHb.js} +1 -1
- package/dashboard/dist/assets/{diagram-IFDJBPK2-BVhcTXsJ.js → diagram-IFDJBPK2-qj8_r6fb.js} +1 -1
- package/dashboard/dist/assets/{diagram-P4PSJMXO-fxt8ZSca.js → diagram-P4PSJMXO-DlfWo7Vt.js} +1 -1
- package/dashboard/dist/assets/{erDiagram-INFDFZHY-C20k2bxX.js → erDiagram-INFDFZHY-Ch_nApTv.js} +1 -1
- package/dashboard/dist/assets/{flowDiagram-PKNHOUZH-CdeygexM.js → flowDiagram-PKNHOUZH-EOVsqNyi.js} +1 -1
- package/dashboard/dist/assets/{ganttDiagram-A5KZAMGK-CPsoOAV-.js → ganttDiagram-A5KZAMGK-CS-lx0B-.js} +1 -1
- package/dashboard/dist/assets/{gitGraphDiagram-K3NZZRJ6-t0tCTIZy.js → gitGraphDiagram-K3NZZRJ6-Ba6RDzPy.js} +1 -1
- package/dashboard/dist/assets/{graph-Bcqd31wL.js → graph-BKaAyLk-.js} +1 -1
- package/dashboard/dist/assets/index-BTWPZaIA.css +1 -0
- package/dashboard/dist/assets/index-Dk9PBm5B.js +510 -0
- package/dashboard/dist/assets/{infoDiagram-LFFYTUFH-DgoKvH3N.js → infoDiagram-LFFYTUFH-Cr20xEsd.js} +1 -1
- package/dashboard/dist/assets/{ishikawaDiagram-PHBUUO56-CGr4P8do.js → ishikawaDiagram-PHBUUO56-CuILV9ph.js} +1 -1
- package/dashboard/dist/assets/{journeyDiagram-4ABVD52K-CHYRi6wF.js → journeyDiagram-4ABVD52K-CO-l7Mpm.js} +1 -1
- package/dashboard/dist/assets/{kanban-definition-K7BYSVSG-kwzqrFcW.js → kanban-definition-K7BYSVSG-CcirPw_S.js} +1 -1
- package/dashboard/dist/assets/{layout-wud47qGs.js → layout-BXvr8dMw.js} +1 -1
- package/dashboard/dist/assets/{linear-DG5js90X.js → linear-B85hgYnX.js} +1 -1
- package/dashboard/dist/assets/{mermaid.core-BDw69uC2.js → mermaid.core-DcZN9Xp2.js} +4 -4
- package/dashboard/dist/assets/{mindmap-definition-YRQLILUH-Dw_uyg1-.js → mindmap-definition-YRQLILUH-Bxi6p5_3.js} +1 -1
- package/dashboard/dist/assets/{pieDiagram-SKSYHLDU-C7NBi6tK.js → pieDiagram-SKSYHLDU-DOSvU0UD.js} +1 -1
- package/dashboard/dist/assets/{quadrantDiagram-337W2JSQ-_N_BSBd4.js → quadrantDiagram-337W2JSQ-Cmo-5tW9.js} +1 -1
- package/dashboard/dist/assets/{requirementDiagram-Z7DCOOCP-BqUiqfP1.js → requirementDiagram-Z7DCOOCP-Dw8alwuI.js} +1 -1
- package/dashboard/dist/assets/{sankeyDiagram-WA2Y5GQK-C2Qq5ULW.js → sankeyDiagram-WA2Y5GQK-ZPB-rzOg.js} +1 -1
- package/dashboard/dist/assets/{sequenceDiagram-2WXFIKYE-BOCF2z8f.js → sequenceDiagram-2WXFIKYE-Ct8bkK2h.js} +1 -1
- package/dashboard/dist/assets/{stateDiagram-RAJIS63D-BvDyTxC5.js → stateDiagram-RAJIS63D-DnGOXlmx.js} +1 -1
- package/dashboard/dist/assets/stateDiagram-v2-FVOUBMTO-COGzlZxn.js +1 -0
- package/dashboard/dist/assets/{timeline-definition-YZTLITO2-DNNZxSrG.js → timeline-definition-YZTLITO2-AUFmbJjr.js} +1 -1
- package/dashboard/dist/assets/{treemap-KZPCXAKY-C6hOdiGH.js → treemap-KZPCXAKY-Dw5FDFAV.js} +1 -1
- package/dashboard/dist/assets/{vennDiagram-LZ73GAT5-FmXl6puP.js → vennDiagram-LZ73GAT5-DfxicU4N.js} +1 -1
- package/dashboard/dist/assets/{xychartDiagram-JWTSCODW-Bjav12WG.js → xychartDiagram-JWTSCODW--9N0V1r_.js} +1 -1
- package/dashboard/dist/index.html +2 -2
- package/dashboard/dist/syntaur-logo.svg +5 -13
- package/dist/dashboard/server.js +363 -3
- package/dist/dashboard/server.js.map +1 -1
- package/dist/index.js +2140 -153
- package/dist/index.js.map +1 -1
- package/examples/playbooks/keep-records-updated.md +2 -1
- package/package.json +1 -1
- package/platforms/claude-code/.claude-plugin/plugin.json +9 -1
- package/platforms/claude-code/agents/syntaur-expert.md +1 -1
- package/platforms/claude-code/commands/add-memory/add-memory.md +18 -0
- package/platforms/claude-code/commands/add-resource/add-resource.md +16 -0
- package/platforms/claude-code/commands/list-assignments/list-assignments.md +16 -0
- package/platforms/claude-code/commands/log-progress/log-progress.md +16 -0
- package/platforms/claude-code/commands/replan/replan.md +16 -0
- package/platforms/claude-code/commands/resume-session/resume-session.md +16 -0
- package/platforms/claude-code/commands/set-workspace/set-workspace.md +16 -0
- package/platforms/claude-code/commands/syntaur-worktree/syntaur-worktree.md +16 -0
- package/platforms/claude-code/references/protocol-summary.md +8 -0
- package/platforms/claude-code/skills/add-memory/SKILL.md +96 -0
- package/platforms/claude-code/skills/add-resource/SKILL.md +85 -0
- package/platforms/claude-code/skills/capture-artifacts/SKILL.md +84 -0
- package/platforms/claude-code/skills/complete-assignment/SKILL.md +2 -1
- package/platforms/claude-code/skills/list-assignments/SKILL.md +73 -0
- package/platforms/claude-code/skills/log-progress/SKILL.md +128 -0
- package/platforms/claude-code/skills/plan-assignment/SKILL.md +29 -8
- package/platforms/claude-code/skills/replan/SKILL.md +113 -0
- package/platforms/claude-code/skills/resume-session/SKILL.md +83 -0
- package/platforms/claude-code/skills/set-workspace/SKILL.md +109 -0
- package/platforms/claude-code/skills/syntaur-protocol/SKILL.md +4 -0
- package/platforms/claude-code/skills/syntaur-protocol/references/protocol-summary.md +8 -0
- package/platforms/claude-code/skills/syntaur-worktree/SKILL.md +117 -0
- package/platforms/codex/README.md +2 -2
- package/platforms/codex/agents/syntaur-operator.md +7 -0
- package/platforms/codex/commands/add-memory.md +16 -0
- package/platforms/codex/commands/add-resource.md +14 -0
- package/platforms/codex/commands/list-assignments.md +13 -0
- package/platforms/codex/commands/log-progress.md +14 -0
- package/platforms/codex/commands/replan.md +15 -0
- package/platforms/codex/commands/resume-session.md +15 -0
- package/platforms/codex/commands/set-workspace.md +15 -0
- package/platforms/codex/commands/syntaur-worktree.md +15 -0
- package/platforms/codex/references/protocol-summary.md +8 -0
- package/platforms/codex/skills/add-memory/SKILL.md +96 -0
- package/platforms/codex/skills/add-resource/SKILL.md +85 -0
- package/platforms/codex/skills/capture-artifacts/SKILL.md +84 -0
- package/platforms/codex/skills/complete-assignment/SKILL.md +2 -1
- package/platforms/codex/skills/list-assignments/SKILL.md +73 -0
- package/platforms/codex/skills/log-progress/SKILL.md +128 -0
- package/platforms/codex/skills/plan-assignment/SKILL.md +29 -8
- package/platforms/codex/skills/replan/SKILL.md +113 -0
- package/platforms/codex/skills/resume-session/SKILL.md +83 -0
- package/platforms/codex/skills/set-workspace/SKILL.md +109 -0
- package/platforms/codex/skills/syntaur-protocol/SKILL.md +4 -0
- package/platforms/codex/skills/syntaur-protocol/references/protocol-summary.md +8 -0
- package/platforms/codex/skills/syntaur-worktree/SKILL.md +117 -0
- package/skills/add-memory/SKILL.md +96 -0
- package/skills/add-resource/SKILL.md +85 -0
- package/skills/capture-artifacts/SKILL.md +84 -0
- package/skills/complete-assignment/SKILL.md +2 -1
- package/skills/list-assignments/SKILL.md +73 -0
- package/skills/log-progress/SKILL.md +128 -0
- package/skills/plan-assignment/SKILL.md +29 -8
- package/skills/replan/SKILL.md +113 -0
- package/skills/resume-session/SKILL.md +83 -0
- package/skills/set-workspace/SKILL.md +109 -0
- package/skills/syntaur-protocol/SKILL.md +4 -0
- package/skills/syntaur-protocol/references/protocol-summary.md +8 -0
- package/skills/syntaur-worktree/SKILL.md +117 -0
- package/dashboard/dist/assets/channel-FWLgstBg.js +0 -1
- package/dashboard/dist/assets/classDiagram-VBA2DB6C-BAvQTSn_.js +0 -1
- package/dashboard/dist/assets/classDiagram-v2-RAHNMMFH-BAvQTSn_.js +0 -1
- package/dashboard/dist/assets/clone-rSEllQ1P.js +0 -1
- package/dashboard/dist/assets/index-bLWoSCLL.css +0 -1
- package/dashboard/dist/assets/index-eS0wtDO0.js +0 -500
- package/dashboard/dist/assets/stateDiagram-v2-FVOUBMTO-TaLLhLWD.js +0 -1
|
@@ -4,7 +4,7 @@ slug: keep-records-updated
|
|
|
4
4
|
description: "Agents must keep assignment.md criteria, progress.md, and related records current in real-time"
|
|
5
5
|
when_to_use: "After every meaningful action, when completing acceptance criteria, when starting or stopping work"
|
|
6
6
|
created: "2026-04-02T00:00:00Z"
|
|
7
|
-
updated: "2026-
|
|
7
|
+
updated: "2026-05-08T00:00:00Z"
|
|
8
8
|
tags:
|
|
9
9
|
- protocol
|
|
10
10
|
- recordkeeping
|
|
@@ -16,6 +16,7 @@ tags:
|
|
|
16
16
|
- Append a new entry to `progress.md` with what you did
|
|
17
17
|
- Progress entries live in `progress.md` (reverse-chronological order, newest first with a `## <ISO 8601 timestamp>` heading). Do NOT add a `## Progress` section to `assignment.md` — that section is removed as of protocol v2.0.
|
|
18
18
|
- Bump `entryCount` and `updated` in `progress.md`'s frontmatter.
|
|
19
|
+
- If the change is visually or behaviorally observable, run `syntaur capture --kind <screenshot|video|asciinema|http|text> [--file <path>] [--criterion <index>] [--note <text>]` to attach a proof artifact. Linkage to a specific criterion is optional.
|
|
19
20
|
|
|
20
21
|
## When you complete an acceptance criterion:
|
|
21
22
|
- Check it off in the `## Acceptance Criteria` section of `assignment.md` immediately
|
package/package.json
CHANGED
|
@@ -17,6 +17,14 @@
|
|
|
17
17
|
"./skills/clear-assignment",
|
|
18
18
|
"./skills/save-session-summary",
|
|
19
19
|
"./skills/track-session",
|
|
20
|
-
"./skills/track-server"
|
|
20
|
+
"./skills/track-server",
|
|
21
|
+
"./skills/replan",
|
|
22
|
+
"./skills/resume-session",
|
|
23
|
+
"./skills/syntaur-worktree",
|
|
24
|
+
"./skills/add-resource",
|
|
25
|
+
"./skills/add-memory",
|
|
26
|
+
"./skills/list-assignments",
|
|
27
|
+
"./skills/log-progress",
|
|
28
|
+
"./skills/set-workspace"
|
|
21
29
|
]
|
|
22
30
|
}
|
|
@@ -15,7 +15,7 @@ When answering questions, read the actual source files rather than relying solel
|
|
|
15
15
|
- **Protocol summary:** `${CLAUDE_PLUGIN_ROOT}/references/protocol-summary.md` (or `~/.claude/skills/syntaur-protocol/references/protocol-summary.md` for the installed skill version)
|
|
16
16
|
- **File ownership:** `${CLAUDE_PLUGIN_ROOT}/references/file-ownership.md`
|
|
17
17
|
- **Plugin manifest:** `${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json`
|
|
18
|
-
- **Protocol skills (installed by `syntaur install-plugin`):** `~/.claude/skills/{syntaur-protocol,grab-assignment,plan-assignment,complete-assignment,create-assignment,create-project}/`
|
|
18
|
+
- **Protocol skills (installed by `syntaur install-plugin`):** `~/.claude/skills/{syntaur-protocol,grab-assignment,plan-assignment,complete-assignment,create-assignment,create-project,manage-statuses,clear-assignment,save-session-summary,track-session,track-server,replan,resume-session,syntaur-worktree,add-resource,add-memory,list-assignments,log-progress,set-workspace}/`
|
|
19
19
|
- **Protocol skills source (vendored via submodule):** `<syntaur-repo>/vendor/syntaur-skills/skills/` — standalone repo at https://github.com/prong-horn/syntaur-skills
|
|
20
20
|
- **Slash commands (ship in plugin):** `${CLAUDE_PLUGIN_ROOT}/commands/` — thin wrappers that invoke the corresponding installed skill
|
|
21
21
|
- **Hooks:** `${CLAUDE_PLUGIN_ROOT}/hooks/`
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: add-memory
|
|
3
|
+
description: Capture a project-level Syntaur memory under <projectDir>/memories/ via the CLI (distinct from Claude auto-memory)
|
|
4
|
+
arguments:
|
|
5
|
+
- name: args
|
|
6
|
+
description: "--project <slug> --name <name> --source <text> [--scope <scope>] [--source-assignment <slug>] [--related-assignments <slug,slug>]"
|
|
7
|
+
required: false
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# /add-memory
|
|
11
|
+
|
|
12
|
+
Thin wrapper that invokes the `add-memory` skill via the Skill tool. The skill calls `syntaur memory add` and the CLI regenerates `_index.md` server-side.
|
|
13
|
+
|
|
14
|
+
Distinct from the user-global Claude Code auto-memory at `~/.claude/projects/<...>/memory/MEMORY.md`. This is project-scoped Syntaur memory.
|
|
15
|
+
|
|
16
|
+
Arguments: $ARGUMENTS
|
|
17
|
+
|
|
18
|
+
If the skill is not installed, tell the user to run `syntaur install-plugin`.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: add-resource
|
|
3
|
+
description: Register a project-level resource (link to dashboard, doc, ticket) under a Syntaur project
|
|
4
|
+
arguments:
|
|
5
|
+
- name: args
|
|
6
|
+
description: "--project <slug> --name <name> --source <url-or-path> [--category <name>] [--related-assignments <slug,slug>] [--slug <slug>]"
|
|
7
|
+
required: false
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# /add-resource
|
|
11
|
+
|
|
12
|
+
Thin wrapper that invokes the `add-resource` skill via the Skill tool. The skill calls `syntaur resource add` and lets the CLI regenerate `_index.md`.
|
|
13
|
+
|
|
14
|
+
Arguments: $ARGUMENTS
|
|
15
|
+
|
|
16
|
+
If the skill is not installed, tell the user to run `syntaur install-plugin`.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: list-assignments
|
|
3
|
+
description: List Syntaur assignments across projects with filters by status, project, tag, age (scriptable; not the interactive browse TUI)
|
|
4
|
+
arguments:
|
|
5
|
+
- name: args
|
|
6
|
+
description: "[--status <list>] [--project <slug>] [--tag <list>] [--age <duration>] [--json]"
|
|
7
|
+
required: false
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# /list-assignments
|
|
11
|
+
|
|
12
|
+
Thin wrapper that invokes the `list-assignments` skill via the Skill tool. The skill maps user prose to `syntaur ls` flags and presents the table or JSON output.
|
|
13
|
+
|
|
14
|
+
Arguments: $ARGUMENTS
|
|
15
|
+
|
|
16
|
+
If the skill is not installed, tell the user to run `syntaur install-plugin`.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: log-progress
|
|
3
|
+
description: Append a timestamped entry to the active assignment's progress.md and bump frontmatter (Keep Records Updated playbook)
|
|
4
|
+
arguments:
|
|
5
|
+
- name: args
|
|
6
|
+
description: "Optional one-line summary. The skill prompts for a body if no args given."
|
|
7
|
+
required: false
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# /log-progress
|
|
11
|
+
|
|
12
|
+
Thin wrapper that invokes the `log-progress` skill via the Skill tool. Markdown-only — no CLI verb. Appends a structured timestamped entry to `<assignmentDir>/progress.md` and bumps `entryCount` + `updated`.
|
|
13
|
+
|
|
14
|
+
Arguments: $ARGUMENTS
|
|
15
|
+
|
|
16
|
+
If the skill is not installed, tell the user to run `syntaur install-plugin`.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: replan
|
|
3
|
+
description: Bump the active Syntaur assignment to a new plan version (plan-vN.md) per the Plan Versioning playbook
|
|
4
|
+
arguments:
|
|
5
|
+
- name: args
|
|
6
|
+
description: "Optional --assignment <slug> --project <slug>. Defaults to active assignment."
|
|
7
|
+
required: false
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# /replan
|
|
11
|
+
|
|
12
|
+
Thin wrapper that invokes the `replan` skill via the Skill tool. The skill drives `syntaur plan version` (deterministic file ops) and writes the new plan body.
|
|
13
|
+
|
|
14
|
+
Arguments: $ARGUMENTS
|
|
15
|
+
|
|
16
|
+
If the skill is not installed, tell the user to run `syntaur install-plugin`.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: resume-session
|
|
3
|
+
description: Re-orient a fresh Claude Code session on the active Syntaur assignment without re-reading the full transcript
|
|
4
|
+
arguments:
|
|
5
|
+
- name: args
|
|
6
|
+
description: "No arguments. Reads .syntaur/context.json and the latest sessions/<sid>/summary.md."
|
|
7
|
+
required: false
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# /resume-session
|
|
11
|
+
|
|
12
|
+
Thin wrapper that invokes the `resume-session` skill via the Skill tool. The skill calls `syntaur session resume`, reads the latest session summary and any open handoff, and reports the active context. Idempotent.
|
|
13
|
+
|
|
14
|
+
Arguments: $ARGUMENTS
|
|
15
|
+
|
|
16
|
+
If the skill is not installed, tell the user to run `syntaur install-plugin`.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: set-workspace
|
|
3
|
+
description: Populate the four workspace.* fields in the active assignment.md per the Workspace Before Code playbook (validates via doctor first)
|
|
4
|
+
arguments:
|
|
5
|
+
- name: args
|
|
6
|
+
description: "[--repository <path>] [--worktree-path <path>] [--branch <name>] [--parent-branch <name>] — auto-detects defaults from git when omitted"
|
|
7
|
+
required: false
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# /set-workspace
|
|
11
|
+
|
|
12
|
+
Thin wrapper that invokes the `set-workspace` skill via the Skill tool. The skill validates the assignment.md via `syntaur doctor --assignment <path> --json` first; refuses to write on errors. Auto-detects `repository` and `branch` from `git rev-parse` when not supplied.
|
|
13
|
+
|
|
14
|
+
Arguments: $ARGUMENTS
|
|
15
|
+
|
|
16
|
+
If the skill is not installed, tell the user to run `syntaur install-plugin`.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: syntaur-worktree
|
|
3
|
+
description: Create a repo-local worktree for the active Syntaur assignment and bind the session to it (atomic create + grab)
|
|
4
|
+
arguments:
|
|
5
|
+
- name: args
|
|
6
|
+
description: "--branch <name> [--repository <path>] [--parent-branch <name>] [--project <slug>] [--assignment <slug>]"
|
|
7
|
+
required: false
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# /syntaur-worktree
|
|
11
|
+
|
|
12
|
+
Thin wrapper that invokes the `syntaur-worktree` skill via the Skill tool. The skill composes `syntaur worktree create` + `syntaur assign` + `syntaur start` + writes `.syntaur/context.json`. Worktree path is always `<repository>/.worktrees/<branch>`.
|
|
13
|
+
|
|
14
|
+
Arguments: $ARGUMENTS
|
|
15
|
+
|
|
16
|
+
If the skill is not installed, tell the user to run `syntaur install-plugin`.
|
|
@@ -88,3 +88,11 @@ Protocol version: **2.0**
|
|
|
88
88
|
10. **Comments** are appended to `comments.md` via `syntaur comment <slug> "body" [--type question|note|feedback] [--reply-to <id>]`. Never edit `comments.md` directly. Questions carry a `resolved` flag.
|
|
89
89
|
11. **Cross-assignment work** is requested via `syntaur request <source> <target> "text"` — appends to the target's `## Todos` annotated `(from: <source>)`.
|
|
90
90
|
12. **Session continuity** (mid-assignment) lives at `sessions/<session-id>/summary.md` inside the assignment dir — one document per session id, overwritten on every save (via `/save-session-summary`). On resume, pick the latest by `summary.md` file mtime; the Claude Code SessionStart hook also stashes the absolute path in `.syntaur/context.json` as `latestSessionSummaryPath`. Older summaries accumulate as immutable history; never delete them. Distinct from `handoff.md`, which is the assignment-level cross-ticket outbound at completion. `syntaur doctor` intentionally ignores `sessions/`. The Claude Code `PreCompact` hook reminds the agent to invoke `/save-session-summary` before context is compacted.
|
|
91
|
+
|
|
92
|
+
## Proof artifacts (opt-in)
|
|
93
|
+
|
|
94
|
+
Agents can attach typed evidence to an assignment so a human reviewer can verify the work in seconds without re-running it.
|
|
95
|
+
|
|
96
|
+
- `syntaur capture --kind <screenshot|video|asciinema|http|text> [--file <path>] [--criterion <index>] [--note <text>] [target]` — record an artifact for the active assignment. Criterion linkage is optional (0-based index into the `## Acceptance Criteria` checklist). For `--kind=text`, supply `--note` and omit `--file`.
|
|
97
|
+
- `syntaur proof build [target]` — render `proof.html` and `proof.md` at the assignment dir, walking the `## Acceptance Criteria` list and embedding tagged artifacts inline beneath each criterion. Untagged or stale (out-of-range) captures land in a final "Other artifacts" section. Atomic overwrite — safe to re-run.
|
|
98
|
+
- Artifacts are stored under `<assignmentDir>/proof/<criterion|untagged>/<id>.<ext>`. The DB row lives in `~/.syntaur/syntaur.db` alongside session tracking. No completion gate — proof is purely opt-in for v1.
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: add-memory
|
|
3
|
+
description: >-
|
|
4
|
+
Capture a project-level Syntaur memory (durable context like a convention,
|
|
5
|
+
decision rationale, or constraint) under a project's `memories/` directory.
|
|
6
|
+
Use when the user wants to "save this to memory", "remember for the project",
|
|
7
|
+
"capture this decision", "add a project memory", or pin reusable context that
|
|
8
|
+
should outlive any single assignment. Writes via the CLI so the
|
|
9
|
+
CLI-managed `_index.md` is never touched directly.
|
|
10
|
+
license: MIT
|
|
11
|
+
metadata:
|
|
12
|
+
author: prong-horn
|
|
13
|
+
version: "1.0.0"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Add Memory
|
|
17
|
+
|
|
18
|
+
Add a memory entry to a Syntaur project. Writes
|
|
19
|
+
`<projectDir>/memories/<slug>.md` and regenerates `_index.md` server-side via
|
|
20
|
+
`syntaur memory add` — the agent never edits `_index.md` directly per the
|
|
21
|
+
file-ownership protocol.
|
|
22
|
+
|
|
23
|
+
## When NOT to use this skill
|
|
24
|
+
|
|
25
|
+
- The information is a **pointer to an external system** (URL, dashboard,
|
|
26
|
+
ticket) — use `add-resource` instead.
|
|
27
|
+
- The information is the user-global Claude Code memory at
|
|
28
|
+
`~/.claude/projects/<...>/memory/MEMORY.md` — that's a different system
|
|
29
|
+
managed by the auto-memory feature, NOT Syntaur project memories.
|
|
30
|
+
- The information is single-assignment scratch — put it in the assignment's
|
|
31
|
+
`scratchpad.md`.
|
|
32
|
+
|
|
33
|
+
## Step 1: Resolve project
|
|
34
|
+
|
|
35
|
+
If `.syntaur/context.json` is present and has `projectSlug`, default to that.
|
|
36
|
+
Otherwise ask the user which project to add the memory to.
|
|
37
|
+
|
|
38
|
+
## Step 2: Gather inputs
|
|
39
|
+
|
|
40
|
+
Required:
|
|
41
|
+
|
|
42
|
+
- `--name <human readable>` — display name for the memory.
|
|
43
|
+
- `--source <text>` — where this memory came from (e.g. "conversation
|
|
44
|
+
2026-05-08", a decision-record reference, a doc URL).
|
|
45
|
+
|
|
46
|
+
Optional:
|
|
47
|
+
|
|
48
|
+
- `--scope <scope>` — defaults to `project`. Common values: `project`,
|
|
49
|
+
`architecture`, `policy`.
|
|
50
|
+
- `--source-assignment <slug>` — assignment slug this memory was captured
|
|
51
|
+
during (helps trace the origin).
|
|
52
|
+
- `--related-assignments <slug,slug,...>` — comma-separated assignment slugs
|
|
53
|
+
this memory is relevant to.
|
|
54
|
+
- `--slug <slug>` — override the auto-generated kebab-case slug.
|
|
55
|
+
|
|
56
|
+
## Step 3: Run `syntaur memory add`
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
syntaur memory add \
|
|
60
|
+
--project <project-slug> \
|
|
61
|
+
--name "<name>" \
|
|
62
|
+
--source "<text>" \
|
|
63
|
+
[--scope <scope>] \
|
|
64
|
+
[--source-assignment <slug>] \
|
|
65
|
+
[--related-assignments <slug,slug>] \
|
|
66
|
+
[--slug <slug>] \
|
|
67
|
+
[--force]
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The CLI:
|
|
71
|
+
|
|
72
|
+
1. Validates the project exists.
|
|
73
|
+
2. Writes `<projectDir>/memories/<slug>.md` with the canonical frontmatter
|
|
74
|
+
(`name`, `source`, `scope`, `sourceAssignment`, `relatedAssignments`,
|
|
75
|
+
`created`, `updated`).
|
|
76
|
+
3. Regenerates `<projectDir>/memories/_index.md` from the directory contents.
|
|
77
|
+
4. Refuses to overwrite an existing memory without `--force`.
|
|
78
|
+
|
|
79
|
+
**Do not write to `_index.md` directly under any circumstances** — that file
|
|
80
|
+
is owned by the CLI per the file-ownership protocol.
|
|
81
|
+
|
|
82
|
+
## Step 4: Open the new memory file (optional)
|
|
83
|
+
|
|
84
|
+
If the user wants to flesh out the body content beyond the placeholder, open
|
|
85
|
+
`<projectDir>/memories/<slug>.md` and edit the body. The frontmatter is
|
|
86
|
+
already correct; only edit content below the second `---`.
|
|
87
|
+
|
|
88
|
+
## Step 5: Report to User
|
|
89
|
+
|
|
90
|
+
Summarize:
|
|
91
|
+
|
|
92
|
+
- Memory slug and absolute path.
|
|
93
|
+
- Project that received the memory.
|
|
94
|
+
- Index regenerated (with the new total).
|
|
95
|
+
- Suggested next step: edit the body to capture load-bearing context, or
|
|
96
|
+
open the dashboard to see the new entry.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: add-resource
|
|
3
|
+
description: >-
|
|
4
|
+
Register a project-level resource (link to a dashboard, doc, ticket, or
|
|
5
|
+
external system) under a Syntaur project. Use when the user wants to "add a
|
|
6
|
+
resource", "save this link to the project", "track this dashboard", "add a
|
|
7
|
+
reference doc", or otherwise capture a pointer to an external system the
|
|
8
|
+
project depends on.
|
|
9
|
+
license: MIT
|
|
10
|
+
metadata:
|
|
11
|
+
author: prong-horn
|
|
12
|
+
version: "1.0.0"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Add Resource
|
|
16
|
+
|
|
17
|
+
Add a resource entry to a Syntaur project. Writes
|
|
18
|
+
`<projectDir>/resources/<slug>.md` and regenerates `<projectDir>/resources/_index.md`
|
|
19
|
+
via the CLI — the agent never edits `_index.md` directly (it is a
|
|
20
|
+
CLI-managed file per the file-ownership protocol).
|
|
21
|
+
|
|
22
|
+
## When NOT to use this skill
|
|
23
|
+
|
|
24
|
+
- The information is **session-scoped knowledge**, not a pointer to an
|
|
25
|
+
external system — use `add-memory` instead.
|
|
26
|
+
- The link is specific to a single assignment (assignment-level scratch) —
|
|
27
|
+
put it in that assignment's `scratchpad.md`.
|
|
28
|
+
- The resource already exists. Read `<projectDir>/resources/_index.md` first
|
|
29
|
+
to check; pass `--force` only if you intend to overwrite.
|
|
30
|
+
|
|
31
|
+
## Step 1: Resolve project
|
|
32
|
+
|
|
33
|
+
If `.syntaur/context.json` is present and has `projectSlug`, default to that.
|
|
34
|
+
Otherwise ask the user which project to add the resource to.
|
|
35
|
+
|
|
36
|
+
## Step 2: Gather inputs
|
|
37
|
+
|
|
38
|
+
Required:
|
|
39
|
+
|
|
40
|
+
- `--name <human readable>` — display name for the resource.
|
|
41
|
+
- `--source <url-or-path>` — the link or path to the resource itself.
|
|
42
|
+
|
|
43
|
+
Optional:
|
|
44
|
+
|
|
45
|
+
- `--category <name>` — short category tag (e.g. `dashboard`, `doc`,
|
|
46
|
+
`ticket`, `runbook`, `repo`).
|
|
47
|
+
- `--related-assignments <slug,slug,...>` — comma-separated assignment slugs
|
|
48
|
+
this resource is relevant to.
|
|
49
|
+
- `--slug <slug>` — override the auto-generated kebab-case slug.
|
|
50
|
+
|
|
51
|
+
## Step 3: Run `syntaur resource add`
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
syntaur resource add \
|
|
55
|
+
--project <project-slug> \
|
|
56
|
+
--name "<name>" \
|
|
57
|
+
--source <url-or-path> \
|
|
58
|
+
[--category <name>] \
|
|
59
|
+
[--related-assignments <slug,slug>] \
|
|
60
|
+
[--slug <slug>] \
|
|
61
|
+
[--force]
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The CLI:
|
|
65
|
+
|
|
66
|
+
1. Validates the project exists.
|
|
67
|
+
2. Writes `<projectDir>/resources/<slug>.md` with the canonical frontmatter
|
|
68
|
+
(`name`, `category`, `source`, `relatedAssignments`, `created`,
|
|
69
|
+
`updated`).
|
|
70
|
+
3. Regenerates `<projectDir>/resources/_index.md` from the directory contents.
|
|
71
|
+
4. Refuses to overwrite an existing resource without `--force`.
|
|
72
|
+
|
|
73
|
+
## Step 4: Verify
|
|
74
|
+
|
|
75
|
+
The CLI prints the slug file path and the new index size. Read both back if
|
|
76
|
+
the user asked for confirmation.
|
|
77
|
+
|
|
78
|
+
## Step 5: Report to User
|
|
79
|
+
|
|
80
|
+
Summarize:
|
|
81
|
+
|
|
82
|
+
- Resource slug and absolute path.
|
|
83
|
+
- Project that received the resource.
|
|
84
|
+
- Index regenerated (with the new total).
|
|
85
|
+
- Suggested next step: open the dashboard or `_index.md` to see the new entry.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: capture-artifacts
|
|
3
|
+
description: >-
|
|
4
|
+
Capture typed proof artifacts (screenshot, video, asciinema, http transcript,
|
|
5
|
+
text note) for the active Syntaur assignment so a human reviewer can verify
|
|
6
|
+
the work in seconds without re-running it. Use after a meaningful change is
|
|
7
|
+
verified, especially when an acceptance criterion is now demonstrably met.
|
|
8
|
+
license: MIT
|
|
9
|
+
metadata:
|
|
10
|
+
author: prong-horn
|
|
11
|
+
version: "0.1.0"
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Capture Artifacts
|
|
15
|
+
|
|
16
|
+
Attach proof to your work. Reviewers should be able to scroll a single page (`proof.html`) and judge "yep that's what I wanted" or "nope that's not right" — without re-executing anything.
|
|
17
|
+
|
|
18
|
+
## Input
|
|
19
|
+
|
|
20
|
+
No arguments. Reads `.syntaur/context.json` from the current working directory to identify the active assignment.
|
|
21
|
+
|
|
22
|
+
## Step 1: Decide whether to capture
|
|
23
|
+
|
|
24
|
+
Capture an artifact when **any** of these is true:
|
|
25
|
+
- An acceptance criterion is now demonstrably met (most common trigger).
|
|
26
|
+
- A user-facing behavior changed in a way a screenshot, video, transcript, or short text note can show.
|
|
27
|
+
- A bug fix produces a before/after worth showing (capture the after; the diff is the before).
|
|
28
|
+
|
|
29
|
+
Skip when:
|
|
30
|
+
- The change is purely internal (refactor, type tightening) with no observable effect.
|
|
31
|
+
- The change is already covered by a passing automated test that the reviewer can run trivially.
|
|
32
|
+
|
|
33
|
+
Linkage to a specific criterion is **optional**. Untagged artifacts are fine — they land in a "Other artifacts" section on the proof page.
|
|
34
|
+
|
|
35
|
+
## Step 2: Pick the kind by work type
|
|
36
|
+
|
|
37
|
+
| Work type | Preferred kind | Notes |
|
|
38
|
+
|-----------|---------------|-------|
|
|
39
|
+
| Web UI change | `screenshot` (single state) or `video` (interaction) | Use the smallest medium that conveys the proof. Screenshots beat videos when one frame suffices. |
|
|
40
|
+
| CLI command output | `asciinema` (preferred) or `text` | Asciinema records the actual session; text is fine when output is short and static. |
|
|
41
|
+
| Backend API change | `http` (request/response transcript) | Capture the curl invocation + response body. |
|
|
42
|
+
| Migration / schema / config | `text` with a `--note` describing the before/after | Or `http` for an API verification call. |
|
|
43
|
+
| Anything ambiguous | `text` with `--note` | Always available. Written notes are better than skipped captures. |
|
|
44
|
+
|
|
45
|
+
## Step 3: Run `syntaur capture`
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# File-based (screenshot, video, asciinema, http transcript)
|
|
49
|
+
syntaur capture --kind <type> --file <path> [--criterion <index>] [--note <text>] \
|
|
50
|
+
[--project <slug> <assignment-slug>]
|
|
51
|
+
|
|
52
|
+
# Text-only (no --file)
|
|
53
|
+
syntaur capture --kind text --note "<what you verified>" [--criterion <index>] \
|
|
54
|
+
[--project <slug> <assignment-slug>]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Rules:
|
|
58
|
+
- `--kind=text` requires `--note` and forbids `--file`.
|
|
59
|
+
- `--kind=http` accepts either `--file` (a transcript) or `--note` (an inline summary). At least one is required.
|
|
60
|
+
- All other kinds (`screenshot`, `video`, `asciinema`) require `--file`. The CLI rejects nonexistent / non-file paths.
|
|
61
|
+
- `--criterion <index>` is optional — pass the **0-based** index into the `## Acceptance Criteria` checklist when you want to anchor the artifact to a specific criterion.
|
|
62
|
+
- If you have a `.syntaur/context.json` in the cwd, the positional target argument is unnecessary; otherwise pass `--project <slug> <assignment-slug>` or a bare assignment UUID.
|
|
63
|
+
|
|
64
|
+
The CLI copies the file (if any) under `<assignmentDir>/proof/<criterion|untagged>/<id>.<ext>` and inserts a row in `~/.syntaur/syntaur.db`. Output prints the artifact id and absolute path.
|
|
65
|
+
|
|
66
|
+
## Step 4: Optional — refresh the proof page
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
syntaur proof build [--project <slug> <assignment-slug>]
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
This walks `## Acceptance Criteria` and renders `proof.html` + `proof.md` at the assignment dir, embedding tagged artifacts inline beneath their criteria and untagged/stale ones in a final "Other artifacts" section. Atomic overwrite — safe to re-run after every capture, or once at completion. The rendered page works in any browser; no desktop-app dependency.
|
|
73
|
+
|
|
74
|
+
The `complete-assignment` skill mentions the proof page path in its final report so the reviewer can open it.
|
|
75
|
+
|
|
76
|
+
## Step 5: Record the capture (per `keep-records-updated` playbook)
|
|
77
|
+
|
|
78
|
+
The `keep-records-updated` playbook recommends running `syntaur capture` whenever the change is visually or behaviorally observable. Append a brief mention to `progress.md` if it adds context (e.g. "captured login-flow video against criterion 2"). Skipping a capture is fine — proof is opt-in for v1; there is no completion gate.
|
|
79
|
+
|
|
80
|
+
## Notes
|
|
81
|
+
|
|
82
|
+
- Artifacts are local-only in v1. Cloud upload is not available.
|
|
83
|
+
- Stale `criterion_index` (e.g. when a criterion is later deleted or reordered) renders under "Other artifacts" with a "(was tagged criterion N — no longer present)" annotation. The artifact is not lost.
|
|
84
|
+
- Storage stays out of git by default — `~/.syntaur/` is outside any tracked tree.
|
|
@@ -6,7 +6,7 @@ description: >-
|
|
|
6
6
|
license: MIT
|
|
7
7
|
metadata:
|
|
8
8
|
author: prong-horn
|
|
9
|
-
version: "1.
|
|
9
|
+
version: "1.2.0"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Complete Assignment
|
|
@@ -143,4 +143,5 @@ Summarize:
|
|
|
143
143
|
- Assignment slug and title
|
|
144
144
|
- New status (review or completed)
|
|
145
145
|
- Number of acceptance criteria met vs total
|
|
146
|
+
- If `<assignmentDir>/proof.html` exists, include its absolute path so the reviewer can open it directly in a browser. Mention briefly which criteria have artifacts attached. (Proof is opt-in — its absence is not a blocker.)
|
|
146
147
|
- If transitioned to `review`, a human reviewer will check the work. If any criteria were unmet, they may send it back to `in_progress`.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: list-assignments
|
|
3
|
+
description: >-
|
|
4
|
+
List Syntaur assignments across all projects with filters by status,
|
|
5
|
+
project, tag, and age. Use when the user wants to "see all assignments",
|
|
6
|
+
"list pending work", "show in_progress assignments", "what's open",
|
|
7
|
+
"find assignments tagged X", or otherwise query the cross-project board
|
|
8
|
+
non-interactively. Different from the interactive `browse` TUI — emits
|
|
9
|
+
scriptable output (table or JSON).
|
|
10
|
+
license: MIT
|
|
11
|
+
metadata:
|
|
12
|
+
author: prong-horn
|
|
13
|
+
version: "1.0.0"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# List Assignments
|
|
17
|
+
|
|
18
|
+
Cross-project assignment listing using `syntaur ls`. Supports filters by
|
|
19
|
+
status, project, tag, and age. Emits a compact aligned table by default;
|
|
20
|
+
`--json` produces machine-readable output suitable for piping into other
|
|
21
|
+
tools.
|
|
22
|
+
|
|
23
|
+
## When NOT to use this skill
|
|
24
|
+
|
|
25
|
+
- The user wants to interactively browse and act on assignments — use
|
|
26
|
+
`syntaur browse` (the Ink TUI) instead.
|
|
27
|
+
- The user wants details for a single assignment they already know — open
|
|
28
|
+
its `assignment.md` directly.
|
|
29
|
+
- The user wants project-level rollups (totals, blocked counts) — that's the
|
|
30
|
+
dashboard, not `ls`.
|
|
31
|
+
|
|
32
|
+
## Step 1: Map user prose to filters
|
|
33
|
+
|
|
34
|
+
Common requests → flags:
|
|
35
|
+
|
|
36
|
+
- "pending assignments" → `--status pending`
|
|
37
|
+
- "in-progress" / "active" → `--status in_progress`
|
|
38
|
+
- "stuff blocked" → `--status blocked`
|
|
39
|
+
- "everything in <project>" → `--project <slug>`
|
|
40
|
+
- "tagged with X" / "labeled X" → `--tag X`
|
|
41
|
+
- "must have all of X and Y" → `--tag X,Y` (AND semantics)
|
|
42
|
+
- "from this week" → `--age 7d`
|
|
43
|
+
- "last 24 hours" → `--age 24h`
|
|
44
|
+
- "this month" → `--age 30d` (or `1m`)
|
|
45
|
+
- "as JSON" / "for piping" → `--json`
|
|
46
|
+
|
|
47
|
+
Multiple filters compose (intersected).
|
|
48
|
+
|
|
49
|
+
## Step 2: Run `syntaur ls`
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
syntaur ls [--status <list>] [--project <slug>] [--tag <list>] [--age <duration>] [--json]
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Supported `--age` units: `h` (hours), `d` (days), `w` (weeks), `m` (~30 days).
|
|
56
|
+
|
|
57
|
+
## Step 3: Present results
|
|
58
|
+
|
|
59
|
+
Default output is a table with columns: PROJECT, SLUG, STATUS, PRIORITY,
|
|
60
|
+
ASSIGNEE, UPDATED, TITLE. If the user asked for a count or a follow-up
|
|
61
|
+
action ("which one is highest priority?"), parse the table or re-run with
|
|
62
|
+
`--json` and pick programmatically.
|
|
63
|
+
|
|
64
|
+
## Step 4: Report to User
|
|
65
|
+
|
|
66
|
+
If interactive:
|
|
67
|
+
|
|
68
|
+
- Summarize the count and any obvious patterns (e.g. "5 pending in
|
|
69
|
+
syntaur-meta, 3 blocked across other projects").
|
|
70
|
+
- Suggest a next action when applicable (e.g. "want to grab the top-priority
|
|
71
|
+
pending one?").
|
|
72
|
+
|
|
73
|
+
If scripted (`--json`), pass the parsed JSON downstream without re-rendering.
|