syntaur 0.7.1 → 0.8.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 +23 -0
- package/README.md +64 -24
- package/dist/index.js +632 -254
- package/dist/index.js.map +1 -1
- package/package.json +6 -8
- package/platforms/claude-code/.claude-plugin/plugin.json +15 -2
- package/{vendor/syntaur-skills → platforms/claude-code}/skills/complete-assignment/SKILL.md +0 -2
- package/{vendor/syntaur-skills → platforms/claude-code}/skills/grab-assignment/SKILL.md +2 -7
- package/{vendor/syntaur-skills → platforms/claude-code}/skills/plan-assignment/SKILL.md +1 -3
- package/{vendor/syntaur-skills → platforms/claude-code}/skills/syntaur-protocol/SKILL.md +4 -23
- package/{vendor/syntaur-skills → platforms/claude-code}/skills/syntaur-protocol/references/file-ownership.md +1 -2
- package/{vendor/syntaur-skills → platforms/claude-code}/skills/syntaur-protocol/references/protocol-summary.md +1 -6
- package/platforms/claude-code/skills/track-server/SKILL.md +49 -0
- package/platforms/codex/.codex-plugin/plugin.json +2 -2
- package/platforms/codex/skills/clear-assignment/SKILL.md +111 -0
- package/platforms/codex/skills/complete-assignment/SKILL.md +146 -0
- package/platforms/codex/skills/create-assignment/SKILL.md +73 -0
- package/platforms/codex/skills/create-project/SKILL.md +56 -0
- package/platforms/codex/skills/grab-assignment/SKILL.md +158 -0
- package/platforms/codex/skills/manage-statuses/SKILL.md +72 -0
- package/platforms/codex/skills/plan-assignment/SKILL.md +137 -0
- package/platforms/codex/skills/save-session-summary/SKILL.md +113 -0
- package/platforms/codex/skills/syntaur-protocol/SKILL.md +119 -0
- package/platforms/codex/skills/syntaur-protocol/references/file-ownership.md +67 -0
- package/platforms/codex/skills/syntaur-protocol/references/protocol-summary.md +82 -0
- package/platforms/codex/skills/track-server/SKILL.md +49 -0
- package/platforms/codex/skills/track-session/SKILL.md +63 -26
- package/skills/clear-assignment/SKILL.md +111 -0
- package/skills/complete-assignment/SKILL.md +146 -0
- package/skills/create-assignment/SKILL.md +73 -0
- package/skills/create-project/SKILL.md +56 -0
- package/skills/grab-assignment/SKILL.md +158 -0
- package/skills/manage-statuses/SKILL.md +72 -0
- package/skills/plan-assignment/SKILL.md +137 -0
- package/skills/save-session-summary/SKILL.md +113 -0
- package/skills/syntaur-protocol/SKILL.md +119 -0
- package/skills/syntaur-protocol/references/file-ownership.md +67 -0
- package/skills/syntaur-protocol/references/protocol-summary.md +82 -0
- package/skills/track-server/SKILL.md +49 -0
- package/skills/track-session/SKILL.md +86 -0
- package/scripts/postinstall-submodules.mjs +0 -40
- package/vendor/syntaur-skills/LICENSE +0 -21
- package/vendor/syntaur-skills/README.md +0 -57
- /package/{vendor/syntaur-skills → platforms/claude-code}/skills/clear-assignment/SKILL.md +0 -0
- /package/{vendor/syntaur-skills → platforms/claude-code}/skills/create-assignment/SKILL.md +0 -0
- /package/{vendor/syntaur-skills → platforms/claude-code}/skills/create-project/SKILL.md +0 -0
- /package/{vendor/syntaur-skills → platforms/claude-code}/skills/manage-statuses/SKILL.md +0 -0
- /package/{vendor/syntaur-skills → platforms/claude-code}/skills/save-session-summary/SKILL.md +0 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# File Ownership Rules (protocol v2.0)
|
|
2
|
+
|
|
3
|
+
## Human-Authored (READ-ONLY for agents)
|
|
4
|
+
|
|
5
|
+
Agents must NEVER modify these files:
|
|
6
|
+
|
|
7
|
+
| File | Location |
|
|
8
|
+
|------|----------|
|
|
9
|
+
| `project.md` | `<project>/project.md` |
|
|
10
|
+
| `CLAUDE.md` / `AGENTS.md` | Repo root (live outside `~/.syntaur/`) |
|
|
11
|
+
| `<slug>.md` | `~/.syntaur/playbooks/<slug>.md` |
|
|
12
|
+
|
|
13
|
+
Per-project `agent.md` / `claude.md` were removed in protocol v2.0. Agent-level conventions live at the repo root in `CLAUDE.md` / `AGENTS.md`, and user-defined behavioral rules live in `~/.syntaur/playbooks/`.
|
|
14
|
+
|
|
15
|
+
## Agent-Writable (YOUR assignment folder ONLY)
|
|
16
|
+
|
|
17
|
+
You may only write to files inside your currently-claimed assignment folder:
|
|
18
|
+
|
|
19
|
+
| File | Purpose |
|
|
20
|
+
|------|---------|
|
|
21
|
+
| `assignment.md` | Assignment record; source of truth for state. Includes `## Todos` checklist. |
|
|
22
|
+
| `plan*.md` | Versioned implementation plans (`plan.md`, `plan-v2.md`, ...). When superseded, the old plan's todo is marked superseded but the file itself is never deleted. |
|
|
23
|
+
| `progress.md` | Append-only, timestamped progress log (newest first). |
|
|
24
|
+
| `scratchpad.md` | Working notes. |
|
|
25
|
+
| `handoff.md` | Append-only handoff log. |
|
|
26
|
+
| `decision-record.md` | Append-only decision log (Status / Context / Decision / Consequences). |
|
|
27
|
+
|
|
28
|
+
Path patterns:
|
|
29
|
+
- Project-nested: `~/.syntaur/projects/<project>/assignments/<your-assignment-slug>/`
|
|
30
|
+
- Standalone: `~/.syntaur/assignments/<your-assignment-uuid>/` (folder name is the UUID; `slug` is display-only)
|
|
31
|
+
|
|
32
|
+
## CLI-Mediated (any agent via the `syntaur` CLI)
|
|
33
|
+
|
|
34
|
+
These files are never edited directly — write to them only through the CLI so derived indexes and dashboards stay consistent.
|
|
35
|
+
|
|
36
|
+
| Target | Command |
|
|
37
|
+
|--------|---------|
|
|
38
|
+
| `comments.md` (any assignment) | `syntaur comment <slug-or-uuid> "body" --type question\|note\|feedback [--reply-to <id>]` |
|
|
39
|
+
| Another assignment's `## Todos` | `syntaur request <target> "text" [--from <source>]` |
|
|
40
|
+
|
|
41
|
+
## Shared-Writable (any agent or human)
|
|
42
|
+
|
|
43
|
+
| Location | Purpose |
|
|
44
|
+
|----------|---------|
|
|
45
|
+
| `<project>/resources/<slug>.md` | Reference material |
|
|
46
|
+
| `<project>/memories/<slug>.md` | Learnings and patterns |
|
|
47
|
+
|
|
48
|
+
## Derived (NEVER edit)
|
|
49
|
+
|
|
50
|
+
All files prefixed with `_` are derived and rebuilt by tooling:
|
|
51
|
+
|
|
52
|
+
- `manifest.md`
|
|
53
|
+
- `_index-assignments.md`
|
|
54
|
+
- `_index-plans.md`
|
|
55
|
+
- `_index-decisions.md`
|
|
56
|
+
- `_status.md`
|
|
57
|
+
- `resources/_index.md`
|
|
58
|
+
- `memories/_index.md`
|
|
59
|
+
- `~/.syntaur/playbooks/manifest.md`
|
|
60
|
+
|
|
61
|
+
## Workspace Files
|
|
62
|
+
|
|
63
|
+
When working on code (not protocol files), you may write to files within the workspace defined in your assignment frontmatter:
|
|
64
|
+
|
|
65
|
+
- `workspace.worktreePath` or `workspace.repository` defines your code root.
|
|
66
|
+
- You may create and edit source files within that workspace.
|
|
67
|
+
- The `.syntaur/context.json` context file in your working directory is also writable (merge, don't overwrite — the platform SessionStart hook may have populated `sessionId` and `transcriptPath`).
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Syntaur Protocol Summary
|
|
2
|
+
|
|
3
|
+
Protocol version: **2.0**
|
|
4
|
+
|
|
5
|
+
## Directory Structure
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
~/.syntaur/
|
|
9
|
+
config.md
|
|
10
|
+
projects/
|
|
11
|
+
<project-slug>/
|
|
12
|
+
manifest.md # Derived: root navigation (read-only)
|
|
13
|
+
project.md # Human-authored: project overview (read-only)
|
|
14
|
+
_index-assignments.md # Derived (read-only)
|
|
15
|
+
_index-plans.md # Derived (read-only)
|
|
16
|
+
_index-decisions.md # Derived (read-only)
|
|
17
|
+
_status.md # Derived: status rollup (read-only)
|
|
18
|
+
assignments/
|
|
19
|
+
<assignment-slug>/
|
|
20
|
+
assignment.md # Agent-writable: source of truth for state (## Todos checklist)
|
|
21
|
+
plan*.md # Agent-writable: versioned plans (plan.md, plan-v2.md, ...)
|
|
22
|
+
progress.md # Agent-writable, append-only: timestamped progress log
|
|
23
|
+
comments.md # CLI-mediated: threaded questions/notes/feedback (via `syntaur comment`)
|
|
24
|
+
scratchpad.md # Agent-writable: working notes
|
|
25
|
+
handoff.md # Agent-writable, append-only: handoff log
|
|
26
|
+
decision-record.md # Agent-writable, append-only: decision log
|
|
27
|
+
resources/
|
|
28
|
+
_index.md # Derived (read-only)
|
|
29
|
+
<resource-slug>.md # Shared-writable
|
|
30
|
+
memories/
|
|
31
|
+
_index.md # Derived (read-only)
|
|
32
|
+
<memory-slug>.md # Shared-writable
|
|
33
|
+
assignments/
|
|
34
|
+
<assignment-uuid>/ # Standalone assignments: folder = UUID, `project: null`, slug display-only
|
|
35
|
+
assignment.md # Same schema as project-nested
|
|
36
|
+
plan*.md, progress.md, comments.md, scratchpad.md, handoff.md, decision-record.md
|
|
37
|
+
playbooks/
|
|
38
|
+
manifest.md # Derived: playbook listing (read-only)
|
|
39
|
+
<slug>.md # User-authored: behavioral rules for agents
|
|
40
|
+
syntaur.db # SQLite: agent session registry keyed on real session_id
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Assignment Lifecycle
|
|
44
|
+
|
|
45
|
+
| Status | Meaning |
|
|
46
|
+
|--------|---------|
|
|
47
|
+
| `pending` | Not yet started |
|
|
48
|
+
| `in_progress` | Actively being worked on |
|
|
49
|
+
| `blocked` | Manually blocked (requires `blockedReason`) |
|
|
50
|
+
| `review` | Work complete, awaiting review |
|
|
51
|
+
| `completed` | Done |
|
|
52
|
+
| `failed` | Could not be completed |
|
|
53
|
+
|
|
54
|
+
## Valid State Transitions
|
|
55
|
+
|
|
56
|
+
| From | Command | To |
|
|
57
|
+
|------|---------|-----|
|
|
58
|
+
| pending | start | in_progress |
|
|
59
|
+
| pending | block | blocked |
|
|
60
|
+
| in_progress | block | blocked |
|
|
61
|
+
| in_progress | review | review |
|
|
62
|
+
| in_progress | complete | completed |
|
|
63
|
+
| in_progress | fail | failed |
|
|
64
|
+
| blocked | unblock | in_progress |
|
|
65
|
+
| review | start | in_progress |
|
|
66
|
+
| review | complete | completed |
|
|
67
|
+
| review | fail | failed |
|
|
68
|
+
|
|
69
|
+
## Key Rules
|
|
70
|
+
|
|
71
|
+
1. **Assignment frontmatter is the single source of truth** for all assignment state.
|
|
72
|
+
2. **Project-nested assignments** live at `projects/<slug>/assignments/<aslug>/` (folder name = slug). **Standalone assignments** live at `assignments/<uuid>/` (folder name = UUID, `project: null`, slug display-only).
|
|
73
|
+
3. **Derived files** (underscore-prefixed, plus `manifest.md`) are never edited manually.
|
|
74
|
+
4. **Slugs** are lowercase, hyphen-separated.
|
|
75
|
+
5. **Dependencies** are declared via `dependsOn` in assignment frontmatter. Only valid within the same project — standalone assignments cannot declare `dependsOn`.
|
|
76
|
+
6. An assignment cannot transition from `pending` to `in_progress` while any dependency is not `completed`.
|
|
77
|
+
7. **Playbooks** in `~/.syntaur/playbooks/` define behavioral rules agents must follow. Read them before starting work.
|
|
78
|
+
8. **Todos** in `## Todos` of `assignment.md` is an informal markdown checklist. Items may be simple tasks or markdown links to plan files. When a plan is superseded, mark the old todo `- [x] ~~Execute [plan](./plan.md)~~ (superseded by plan-v2)` — never delete. `## Todos` is also the landing spot for cross-assignment `syntaur request` entries.
|
|
79
|
+
9. **Progress** is appended to `progress.md` as timestamped entries (newest first). Do NOT add a `## Progress` section to `assignment.md` — protocol v2.0 moved progress to its own file.
|
|
80
|
+
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 toggled in the dashboard.
|
|
81
|
+
11. **Cross-assignment work** is requested via `syntaur request <target> "text"` — appends to the target's `## Todos` annotated `(from: <source>)`.
|
|
82
|
+
12. **Agent sessions** in `syntaur.db` must use real agent-runtime session IDs. Synthesized UUIDs are rejected. Plugins for Claude Code / Codex populate `.syntaur/context.json` with the real id via a SessionStart hook; other agents should source it from their runtime and pass `--session-id` explicitly.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: track-server
|
|
3
|
+
description: Use when the user wants to register, refresh, remove, or list tracked tmux dev-server sessions for the Syntaur dashboard. Triggers on "/track-server", "track this server", "register this dev server", or similar — distinct from /track-session which registers Claude Code agent sessions.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Track Server
|
|
7
|
+
|
|
8
|
+
Track tmux sessions so their development servers show up in the Syntaur dashboard. Distinct from `/track-session`, which registers Claude Code agent sessions.
|
|
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.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: track-session
|
|
3
|
+
description: Use when the user asks to track, register, or log this Claude Code session in the Syntaur dashboard — standalone or linked to a project/assignment. Triggers on "/track-session", "track this session", "register this session in syntaur", or similar.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Track Session
|
|
7
|
+
|
|
8
|
+
Register the current Claude Code session as an agent session in the Syntaur dashboard. Works standalone or linked to a project/assignment.
|
|
9
|
+
|
|
10
|
+
Only real Claude Code session IDs are accepted — no synthesis. The real id is written to `.syntaur/context.json` by the SessionStart hook, with `~/.claude/sessions/<pid>.json` as the fallback source.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
User arguments: `$ARGUMENTS`
|
|
15
|
+
|
|
16
|
+
- (no args) — register a standalone session
|
|
17
|
+
- `--description "<text>"` — with a description
|
|
18
|
+
- `--project <slug> --assignment <slug>` — linked to a project
|
|
19
|
+
- `--description "<text>" --project <slug> --assignment <slug>` — both
|
|
20
|
+
|
|
21
|
+
## Workflow
|
|
22
|
+
|
|
23
|
+
### Step 1: Parse arguments
|
|
24
|
+
|
|
25
|
+
Extract optional flags from the argument string:
|
|
26
|
+
- `--description "<text>"` or `--description <text>` — session description
|
|
27
|
+
- `--project <slug>` — project to link to
|
|
28
|
+
- `--assignment <slug>` — assignment to link to
|
|
29
|
+
|
|
30
|
+
### Step 2: Source the real session id + transcript path
|
|
31
|
+
|
|
32
|
+
In priority order:
|
|
33
|
+
|
|
34
|
+
1. Read `.syntaur/context.json` if present. If it contains `sessionId`, use it. Also pick up `transcriptPath` if present.
|
|
35
|
+
2. Otherwise, read the most-recently-modified file under `~/.claude/sessions/*.json` whose `cwd` matches `$(pwd)` and use its `sessionId` field. The transcript path is conventionally `~/.claude/projects/<encoded-cwd>/<sessionId>.jsonl`; include it if the file exists, otherwise omit.
|
|
36
|
+
3. If neither source yields an id, abort with: "Could not resolve a real Claude Code session id. Restart the Claude session so the SessionStart hook can populate `.syntaur/context.json`, or run `/rename <slug>` then try again."
|
|
37
|
+
|
|
38
|
+
DO NOT generate a UUID. `syntaur track-session` rejects missing session IDs.
|
|
39
|
+
|
|
40
|
+
### Step 3: Run the CLI command
|
|
41
|
+
|
|
42
|
+
Run the track-session CLI via Bash (use `dangerouslyDisableSandbox: true` since it writes to `~/.syntaur/`):
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
syntaur track-session \
|
|
46
|
+
--agent claude \
|
|
47
|
+
--session-id "$SESSION_ID" \
|
|
48
|
+
--transcript-path "$TRANSCRIPT_PATH" \
|
|
49
|
+
--path "$(pwd)" \
|
|
50
|
+
[--description "<text>"] \
|
|
51
|
+
[--project <slug>] \
|
|
52
|
+
[--assignment <slug>]
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Omit `--transcript-path` entirely (don't pass an empty string) if no transcript path could be resolved.
|
|
56
|
+
|
|
57
|
+
The CLI prints one of:
|
|
58
|
+
- `Registered standalone agent session <sessionId>.`
|
|
59
|
+
- `Registered agent session <sessionId> for <assignment> in <project>.`
|
|
60
|
+
|
|
61
|
+
Registration is idempotent — re-running the command with the same session id safely upserts project/assignment/description onto the existing row.
|
|
62
|
+
|
|
63
|
+
### Step 4: Merge context.json
|
|
64
|
+
|
|
65
|
+
Ensure `.syntaur/context.json` has the session fields (so SessionEnd and future `track-session` runs find them). Merge, don't overwrite:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
mkdir -p .syntaur
|
|
69
|
+
if [ -f .syntaur/context.json ]; then
|
|
70
|
+
jq --arg sid "$SESSION_ID" --arg tp "$TRANSCRIPT_PATH" \
|
|
71
|
+
'. + {sessionId: $sid} + (if ($tp | length) > 0 then {transcriptPath: $tp} else {} end)' \
|
|
72
|
+
.syntaur/context.json > .syntaur/context.json.tmp \
|
|
73
|
+
&& mv .syntaur/context.json.tmp .syntaur/context.json
|
|
74
|
+
else
|
|
75
|
+
jq -n --arg sid "$SESSION_ID" --arg tp "$TRANSCRIPT_PATH" \
|
|
76
|
+
'{sessionId: $sid} + (if ($tp | length) > 0 then {transcriptPath: $tp} else {} end)' \
|
|
77
|
+
> .syntaur/context.json
|
|
78
|
+
fi
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Step 5: Confirm
|
|
82
|
+
|
|
83
|
+
Tell the user:
|
|
84
|
+
- The session was registered (include the short session id).
|
|
85
|
+
- It will be auto-stopped when this conversation ends via the SessionEnd hook.
|
|
86
|
+
- If linked to a project, mention which project/assignment.
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// Lazy-init git submodules for contributor clones.
|
|
3
|
-
// Silent no-op for end-user installs (where .git/.gitmodules are absent
|
|
4
|
-
// because npm publish bundles the vendored files directly).
|
|
5
|
-
|
|
6
|
-
import { existsSync } from 'node:fs';
|
|
7
|
-
import { resolve, dirname } from 'node:path';
|
|
8
|
-
import { fileURLToPath } from 'node:url';
|
|
9
|
-
import { spawnSync } from 'node:child_process';
|
|
10
|
-
|
|
11
|
-
const here = dirname(fileURLToPath(import.meta.url));
|
|
12
|
-
const repoRoot = resolve(here, '..');
|
|
13
|
-
|
|
14
|
-
const gitDir = resolve(repoRoot, '.git');
|
|
15
|
-
const gitmodules = resolve(repoRoot, '.gitmodules');
|
|
16
|
-
const vendoredSkills = resolve(repoRoot, 'vendor', 'syntaur-skills', 'skills');
|
|
17
|
-
|
|
18
|
-
// End-user install (from npm): no .git, no .gitmodules. Nothing to do.
|
|
19
|
-
if (!existsSync(gitDir) || !existsSync(gitmodules)) {
|
|
20
|
-
process.exit(0);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
// Contributor already initialized submodules.
|
|
24
|
-
if (existsSync(vendoredSkills)) {
|
|
25
|
-
process.exit(0);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const result = spawnSync(
|
|
29
|
-
'git',
|
|
30
|
-
['submodule', 'update', '--init', '--recursive'],
|
|
31
|
-
{ cwd: repoRoot, stdio: 'inherit' },
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
if (result.status !== 0) {
|
|
35
|
-
console.warn(
|
|
36
|
-
'[postinstall-submodules] git submodule update failed — ' +
|
|
37
|
-
'run it manually before building.',
|
|
38
|
-
);
|
|
39
|
-
// Do not fail postinstall; let the build step surface the missing files.
|
|
40
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 Prong Horn
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
# syntaur-skills
|
|
2
|
-
|
|
3
|
-
Agent-agnostic skills for the [Syntaur](https://github.com/prong-horn/syntaur) coordination protocol. Works with any AI coding agent — Claude Code, Cursor, Codex, OpenCode, and more.
|
|
4
|
-
|
|
5
|
-
## Prerequisites
|
|
6
|
-
|
|
7
|
-
Install the Syntaur CLI:
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
npm install -g syntaur
|
|
11
|
-
syntaur setup
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
## Install
|
|
15
|
-
|
|
16
|
-
If you use Claude Code or Codex, install the `syntaur` package — these skills ship automatically with its plugin install flow:
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
npm install -g syntaur
|
|
20
|
-
syntaur install-plugin # Claude Code → ~/.claude/skills/
|
|
21
|
-
syntaur install-codex-plugin # Codex → ~/.codex/skills/
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
For any other AI coding agent (Cursor, OpenCode, custom runtimes), install the skills directly:
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
npx skills add prong-horn/syntaur-skills
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
Or install a specific skill:
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
npx skills add prong-horn/syntaur-skills --skill syntaur-protocol
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
> **Note:** If you install `syntaur` AND also run `npx skills add prong-horn/syntaur-skills` on the same machine, you'll get the same skills installed once — they use the same names. The `syntaur` CLI detects existing copies and skips already-current ones.
|
|
37
|
-
|
|
38
|
-
## Skills
|
|
39
|
-
|
|
40
|
-
| Skill | Description |
|
|
41
|
-
|-------|-------------|
|
|
42
|
-
| `syntaur-protocol` | Core protocol knowledge — write boundaries, lifecycle states, conventions. Auto-activates when working with Syntaur files. |
|
|
43
|
-
| `grab-assignment` | Discover and claim a pending assignment from a project. Sets up working context. |
|
|
44
|
-
| `plan-assignment` | Create a detailed implementation plan for the current assignment. |
|
|
45
|
-
| `complete-assignment` | Write a handoff and transition an assignment to review or completed. |
|
|
46
|
-
| `clear-assignment` | Drop the active assignment from session context without transitioning lifecycle state. Inverse of `grab-assignment`. |
|
|
47
|
-
| `create-project` | Create a new project with full scaffolding (manifest + indexes + resources + memories). |
|
|
48
|
-
| `create-assignment` | Create a new assignment within a project (or as a standalone one-off at `~/.syntaur/assignments/<uuid>/`). |
|
|
49
|
-
| `manage-statuses` | List / add / rename / remove / reorder custom assignment statuses (and transitions); writes to `~/.syntaur/config.md`. |
|
|
50
|
-
|
|
51
|
-
## How it works
|
|
52
|
-
|
|
53
|
-
Syntaur is a coordination protocol for AI agents built on markdown files. Projects contain assignments, assignments have lifecycle states, and agents follow write boundary rules about which files they can modify. Everything lives under `~/.syntaur/` and is managed via the `syntaur` CLI.
|
|
54
|
-
|
|
55
|
-
These skills teach your agent the protocol so it can participate in Syntaur-coordinated work — regardless of which coding agent you use.
|
|
56
|
-
|
|
57
|
-
For platform-specific integrations (hooks, commands, sandbox enforcement), see the [Syntaur plugin system](https://github.com/prong-horn/syntaur).
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/{vendor/syntaur-skills → platforms/claude-code}/skills/save-session-summary/SKILL.md
RENAMED
|
File without changes
|