gsd-init 1.0.9 → 1.0.11
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/README.md +66 -20
- package/bin/gsd.js +54 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -2,22 +2,81 @@
|
|
|
2
2
|
|
|
3
3
|
Set up the GSD observer/worker tmux system in your project.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Install
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
+
npm install -g gsd-init
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Commands
|
|
12
|
+
|
|
13
|
+
### `gsd init <project-name>`
|
|
14
|
+
|
|
15
|
+
Creates a project folder and installs all GSD files inside it:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
gsd init my-project
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Installs into `my-project/.gsd/` and registers the stop hook in `my-project/.claude/settings.json`.
|
|
22
|
+
|
|
23
|
+
To run inside an existing project directory:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
cd my-project
|
|
8
27
|
npx gsd-init
|
|
9
28
|
```
|
|
10
29
|
|
|
11
|
-
|
|
30
|
+
### `gsd start`
|
|
31
|
+
|
|
32
|
+
Starts the observer and worker tmux sessions for the current project. Run from inside the project directory:
|
|
33
|
+
|
|
12
34
|
```bash
|
|
13
|
-
|
|
35
|
+
cd my-project
|
|
36
|
+
gsd start
|
|
14
37
|
```
|
|
15
38
|
|
|
16
|
-
|
|
39
|
+
- Creates sessions named `gsd-observer-<project>` and `gsd-worker-<project>`
|
|
40
|
+
- Opens Terminal windows attached to each session
|
|
41
|
+
- Observer session includes a listener daemon that auto-responds to GSD phase events
|
|
42
|
+
|
|
43
|
+
### `gsd teardown`
|
|
17
44
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
45
|
+
Kills all GSD tmux sessions for the current project:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
cd my-project
|
|
49
|
+
gsd teardown
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## How it works
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
my-project/
|
|
56
|
+
├── .gsd/
|
|
57
|
+
│ ├── agents/gsd-observer.md # Observer Claude agent prompt
|
|
58
|
+
│ ├── hooks/gsd-stop-hook.sh # Fires after each Claude response in Worker
|
|
59
|
+
│ ├── scripts/
|
|
60
|
+
│ │ ├── start.sh # Start observer + worker (used by gsd start)
|
|
61
|
+
│ │ ├── start-observer.sh # Start observer tmux session
|
|
62
|
+
│ │ ├── start-worker.sh # Start worker tmux session
|
|
63
|
+
│ │ ├── listen.sh # Daemon: watches for events, wakes Observer
|
|
64
|
+
│ │ ├── notify-worker.sh # Injects Observer response into Worker pane
|
|
65
|
+
│ │ ├── wake-observer.sh # Sends event task to Observer Claude
|
|
66
|
+
│ │ ├── teardown.sh # Kill all sessions (used by gsd teardown)
|
|
67
|
+
│ │ └── verify.sh # Verify setup is working
|
|
68
|
+
│ └── schema/
|
|
69
|
+
│ ├── event.json # Event file schema
|
|
70
|
+
│ └── response.json # Response file schema
|
|
71
|
+
└── .claude/
|
|
72
|
+
└── settings.json # Stop hook registered here
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Observer session** runs two panes:
|
|
76
|
+
- Pane 0: Observer Claude — reviews GSD phase outputs and responds
|
|
77
|
+
- Pane 1: Listener daemon — polls for new events and wakes Claude automatically
|
|
78
|
+
|
|
79
|
+
**Worker session** runs Claude with `GSD_OBSERVER_ENABLED=1`, which activates the stop hook after each response.
|
|
21
80
|
|
|
22
81
|
## Requirements
|
|
23
82
|
|
|
@@ -26,16 +85,3 @@ npx gsd-init --yes
|
|
|
26
85
|
- jq
|
|
27
86
|
- Claude Code CLI (`claude`)
|
|
28
87
|
- GSD (superpowers plugin) installed in Claude Code
|
|
29
|
-
|
|
30
|
-
## After install
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
# Start Observer session first
|
|
34
|
-
~/.claude/gsd-observer/scripts/start-observer.sh
|
|
35
|
-
|
|
36
|
-
# Start Worker session in your project directory
|
|
37
|
-
~/.claude/gsd-observer/scripts/start-worker.sh /path/to/project
|
|
38
|
-
|
|
39
|
-
# Verify setup
|
|
40
|
-
~/.claude/gsd-observer/scripts/verify.sh
|
|
41
|
-
```
|
package/bin/gsd.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
var major = parseInt(process.version.slice(1).split('.')[0], 10);
|
|
4
|
+
if (major < 16) {
|
|
5
|
+
process.stderr.write('gsd requires Node.js >= 16 (found ' + process.version + ')\n');
|
|
6
|
+
process.exit(1);
|
|
7
|
+
}
|
|
8
|
+
const { execFileSync } = require('child_process');
|
|
9
|
+
const path = require('path');
|
|
10
|
+
const fs = require('fs');
|
|
11
|
+
|
|
12
|
+
const args = process.argv.slice(2);
|
|
13
|
+
const cmd = args[0];
|
|
14
|
+
|
|
15
|
+
function findScript(name) {
|
|
16
|
+
var p = path.join(process.cwd(), '.gsd', 'scripts', name);
|
|
17
|
+
if (!fs.existsSync(p)) {
|
|
18
|
+
console.error('Error: ' + p + ' not found. Run "gsd init <project-name>" first.');
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
return p;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function runScript(name) {
|
|
25
|
+
var script = findScript(name);
|
|
26
|
+
execFileSync(script, { stdio: 'inherit' });
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
switch (cmd) {
|
|
30
|
+
case 'init': {
|
|
31
|
+
var projectName = args[1];
|
|
32
|
+
if (!projectName) {
|
|
33
|
+
console.error('Usage: gsd init <project-name>');
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
var initScript = path.join(__dirname, 'gsd-init.js');
|
|
37
|
+
execFileSync(process.execPath, [initScript, projectName], { stdio: 'inherit' });
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
case 'start':
|
|
41
|
+
runScript('start.sh');
|
|
42
|
+
break;
|
|
43
|
+
case 'teardown':
|
|
44
|
+
runScript('teardown.sh');
|
|
45
|
+
break;
|
|
46
|
+
default:
|
|
47
|
+
console.log([
|
|
48
|
+
'Usage:',
|
|
49
|
+
' gsd init <project-name> Create project folder and install GSD',
|
|
50
|
+
' gsd start Start observer + worker tmux sessions',
|
|
51
|
+
' gsd teardown Kill all GSD tmux sessions',
|
|
52
|
+
].join('\n'));
|
|
53
|
+
process.exit(cmd ? 1 : 0);
|
|
54
|
+
}
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gsd-init",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.11",
|
|
4
4
|
"description": "Set up GSD observer/worker tmux system in a project",
|
|
5
5
|
"bin": {
|
|
6
|
-
"gsd-init": "bin/gsd-init.js"
|
|
6
|
+
"gsd-init": "bin/gsd-init.js",
|
|
7
|
+
"gsd": "bin/gsd.js"
|
|
7
8
|
},
|
|
8
9
|
"files": [
|
|
9
10
|
"bin",
|