You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There is no build step. No package.json. No dependencies to install to contribute.
16
+
There is no Node build step. Python 3.8+ and pytest are required to run tests.
15
17
16
18
---
17
19
@@ -31,11 +33,11 @@ If you think GraphStack is missing a role (e.g., a Security Auditor, a Performan
31
33
2. Get feedback before writing the file
32
34
3. Once approved: add `.cursor/skills/<rolename>/<ROLENAME>.md`, update `ORCHESTRATOR.md` with the transition rule, add a prompt to `docs/CURSOR_PROMPTS.md`, and register the new path in `scripts/graphstack/installer.py`'s `FILE_COPIES`.
33
35
34
-
### 3. Improve the board script
36
+
### 3. Improve the board / CLI
35
37
36
-
`scripts/board.sh` is pure bash + python3. If you find a bug or want to add a command (e.g., `board.sh reopen`, `board.sh list-done`), open a PR with:
37
-
- The change
38
-
- A manual test showing it works (paste the terminal output)
38
+
Board logic lives in `scripts/graphstack/board.py` (Python). Shell shims (`board.sh`, `board.ps1`) delegate to it.
39
+
40
+
For new CLI commands: add a module under `scripts/graphstack/`, register in `cli.py`, copy list in `installer.py`'s `PYTHON_PACKAGE_FILES`, and add tests in `scripts/graphstack/tests/`.
39
41
40
42
### 4. Add a demo
41
43
@@ -74,9 +76,10 @@ Consumer projects keep their handoff history; only this source repo resets.
74
76
75
77
-**One PR per change.** Don't bundle unrelated edits.
76
78
-**Explain the behavior change**, not just what you edited.
77
-
-**Test the board script** if you touch `board.sh`: run through `new → claim → complete → status` and paste the output.
79
+
-**Test the CLI** if you touch `scripts/graphstack/`: `pytest scripts/graphstack/tests -q`
80
+
-**Test the board** if you touch board commands: run `new → claim → complete → status`
78
81
-**Keep role files under 300 lines.** If yours is longer, it's doing too much.
79
-
-**No new dependencies.**GraphStack requires only bash + python3 + git. Keep it that way.
82
+
-**No new runtime dependencies.**The `graphstack` package uses only the Python stdlib. Optional: `graphifyy` for graph commands.
This installs GraphStack + Graphify, copies workflow files into **the current project**, refreshes the code graph, and runs `doctor`. Then describe your task in Cursor chat — rules load automatically.
18
41
19
42
---
20
43
@@ -71,6 +94,15 @@ python3 -m graphify --version
71
94
72
95
GraphStack now works natively on Windows, macOS, and Linux. The installer runs through Python (which you already have for Graphify), so no shell-specific tooling is required.
# or: python -m graphstack init . -y # any OS — install + graph refresh + doctor
104
+
```
105
+
74
106
#### macOS / Linux (bash / zsh)
75
107
76
108
```bash
@@ -306,7 +338,7 @@ GraphStack is a **workflow protocol** (markdown + handoff files), not a runtime
306
338
307
339
| Topic | Reality |
308
340
|-------|---------|
309
-
| Role automation | Prompts alone cannot guarantee discipline. v4.3 adds **`graphstack gate`**(hook-enforced) + `state set` + `validate`. Hooks block code commits/edits without a claimed board task; turn-end hooks are advisory only. |
341
+
| Role automation | Prompts alone cannot guarantee discipline. v4.3+ **`graphstack gate`**+ v4.4 Cursor **`preToolUse`**. Hooks block commits and (on Cursor/Claude) code writes without a claimed task; `afterFileEdit` on Cursor remains advisory-only backup. |
310
342
| Token savings | The table above is **estimated**, not guaranteed. Small repos or undisciplined sessions may use **more** tokens than unstructured chat. |
311
343
| Knowledge graph | Value appears on **20+ file** codebases with module boundaries. Meta-repos full of markdown produce noisy graphs — use `.graphifyignore` (included in this repo). |
312
344
| Setup | Graphify + GraphStack install + `/graphify` + Cursor — four steps, not zero-config. |
@@ -347,24 +379,42 @@ Independent Python implementation (MIT) — inspired by common agent-tooling pat
347
379
348
380
---
349
381
382
+
## Graph Queries (`graphstack graph`)
383
+
384
+
Graph-first rules mean **query the graph before opening raw files**. v4.4 wraps Graphify's CLI so agents use one consistent command:
Requires `graphify` on PATH (`pip install -r requirements.txt`). Agents should prefer `graph query` over reading full `GRAPH_REPORT.md` or grepping source for structural questions.
395
+
396
+
---
397
+
350
398
## Process Gate (`graphstack gate`)
351
399
352
-
v4.3 adds **mechanical enforcement** so Architect → Builder → Reviewer steps are harder to skip silently.
400
+
v4.3+ adds **mechanical enforcement** so Architect → Builder → Reviewer steps are harder to skip silently. v4.4 extends Cursor with `preToolUse` blocking.
353
401
354
-
| Rule | What it blocks | Platform |
355
-
|------|----------------|----------|
356
-
| R1 |`git commit` touching code while `handoff/board/doing/` is empty | Cursor + Claude Code |
357
-
| R2 | Edit/Write on code paths while `doing/` is empty | Claude Code (`PreToolUse`) |
358
-
| R3 | Commit while `BRIEF.md` is still the template and a task is in `doing/`| Both |
359
-
| R4 |*(advisory)*`STATE.json` not updated this cycle | Turn-end hooks |
GRAPHSTACK_GATE=strict # fail-closed on hook internal errors
365
415
```
366
416
367
-
**Install** writes `.cursor/hooks.json` and `.claude/settings.json` with OS-specific shim commands (`scripts/gate-hook.ps1` on Windows, `scripts/gate-hook.sh` on macOS/Linux). Hooks **fail open** if Python is missing — a crashing gate is worse than no gate.
417
+
**Install** writes `.cursor/hooks.json` and `.claude/settings.json` with OS-specific shim commands (`scripts/gate-hook.ps1` on Windows, `scripts/gate-hook.sh` on macOS/Linux). By default hooks **fail open** if Python is missing — use `GRAPHSTACK_GATE=strict` for teams that prefer blocking over availability.
368
418
369
419
> **Framework repo note:** This GitHub repo ships `handoff/` as **templates** (empty brief, no `done/` tasks). Your installed project fills those files during real work. Before contributing here, reset handoff — see [CONTRIBUTING.md](CONTRIBUTING.md).
0 commit comments