@pmelab/gtd 6.13.0 → 7.0.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/docs/cli.md CHANGED
@@ -4,12 +4,12 @@
4
4
  Usage: gtd [command] [options]
5
5
 
6
6
  Commands:
7
- init Scaffold a .gtdrc.json for this repo with the bundled
8
- unified workflow; its agent prompts are written as editable
9
- Markdown under gtd-prompts/ and referenced from the config.
10
- Takes no argument. Run once per repo; refuses if a gtd
11
- config already exists. Leaves the files uncommitted for you
12
- to review and commit
7
+ init Scaffold a minimal .gtdrc.json for this repo, seeding a
8
+ testCommand var (npm test) and a ready-to-edit Prettier
9
+ formatting suggestion under modes:. Writes no workflow — gtd
10
+ runs the bundled unified workflow as its built-in default.
11
+ Takes no argument. Refuses if a gtd config already exists.
12
+ Leaves the file uncommitted for you to review and commit
13
13
  step <actor> Authenticate as <actor>, match the resolved rest's
14
14
  declared patterns against the pending changes, and commit
15
15
  (or squash) the one resulting transition. Pass
@@ -65,31 +65,34 @@ mistyped flag can never degrade a JSON caller to plain-text mode. A bare
65
65
 
66
66
  ## `gtd init`
67
67
 
68
- Scaffolds a `.gtdrc.json` at the repository root with the bundled **unified**
69
- workflow template inline under a `workflow:` key, plus a `$schema` link. It
70
- takes **no argument** — passing one is a usage error
71
- (`gtd init: too many arguments — init takes no argument`). gtd ships **no**
72
- default workflow, so this is the one-time setup step for a repo; a state command
73
- run before it fails with `gtd: no workflow configured — run \`gtd init\` to
74
- create .gtdrc.json`.
75
-
76
- The unified template has four entry points — each behind a green-baseline gate
68
+ Scaffolds a **minimal** `.gtdrc.json` at the repository root, plus a `$schema`
69
+ link. It writes **no** `workflow:` key — gtd runs the bundled **unified**
70
+ workflow as its built-in default, so a state command works out of the box with
71
+ no config and no init at all. What `gtd init` seeds is the two things most
72
+ projects tune: a `vars: { "testCommand": "npm test" }` entry (the var the
73
+ bundled workflow's check script reads) and a ready-to-edit `modes:` block
74
+ suggesting a Prettier `format:` for each built-in steering-file mode
75
+ (`qa`/`review`). It takes **no argument** — passing one is a usage error
76
+ (`gtd init: too many arguments — init takes no argument`).
77
+
78
+ The bundled default has four entry points — each behind a green-baseline gate
77
79
  that runs the suite before starting — into one shared review/squash tail (see
78
80
  [STATES.md §10](../STATES.md#10-the-bundled-workflow-templates)): creating
79
- `.gtd/TODO.md` starts the simple flow (grilling → building → checking), creating
81
+ `.gtd/TODO.md` starts the simple flow (planning → building → checking), creating
80
82
  `.gtd/REQUIREMENTS.md` starts the advanced flow (two-phase Q&A planning,
81
83
  per-package parallel build, agentic spec-review), `gtd review <commitish>`
82
84
  enters review directly, and `gtd fix` goes straight into repairing failing
83
85
  tests. A red baseline halts at a `*-start-blocked` gate rather than starting new
84
- work.
86
+ work. To CUSTOMIZE that machine, add your own `workflow:` key (a full definition
87
+ — there is no `extends`/merge); see
88
+ [Configuration](configuration.md#the-workflow-key).
85
89
 
86
90
  The file is written **uncommitted**; review and commit it before your first
87
91
  `gtd step` (an uncommitted `.gtdrc.json` is a pending change the initial state
88
92
  would otherwise capture). `gtd init` refuses if the repo root already has its
89
- own gtd config (a global/ancestor config, e.g. `~/.gtdrc`, does not count),
90
- requires the repository root, and — with `gtd lsp` — is one of the two commands
91
- that run with no workflow configured. `--json` prints
92
- `{"written":".gtdrc.json","workflow":"unified","prompts":[…]}`. See
93
+ own gtd config (a global/ancestor config, e.g. `~/.gtdrc`, does not count) and
94
+ requires the repository root (or a directory outside any repo). `--json` prints
95
+ `{"written":".gtdrc.json","inRepo":true}`. See
93
96
  [Configuration](configuration.md#gtd-init).
94
97
 
95
98
  ## `gtd step <actor> [--cost=<n>] [--model=<name>]`
@@ -126,7 +129,7 @@ to `--json`.
126
129
  Plain-mode output is one line:
127
130
 
128
131
  ```
129
- committed: gtd(human): idle → grilling
132
+ committed: gtd(human): idle → planning
130
133
  ```
131
134
 
132
135
  or, at a no-op:
@@ -142,7 +145,7 @@ not passed):
142
145
  ```json
143
146
  {
144
147
  "state": "idle",
145
- "subject": "gtd(human): idle → grilling",
148
+ "subject": "gtd(human): idle → planning",
146
149
  "cost": 1450,
147
150
  "model": "claude-opus-4-8"
148
151
  }
@@ -385,7 +388,7 @@ agent or human:
385
388
  declares `file:`+`mode:` formats that file in place and validates it first
386
389
  (with the very same mode commands), and **refuses the step** (committing
387
390
  nothing) when it is invalid — so a human's edit at a gate (answering at
388
- `grilling-answer`, reviewing at `await-review`) is formatted and checked
391
+ `adv-grilling-answer`, reviewing at `await-review`) is formatted and checked
389
392
  exactly like an agent's draft, and a malformed steering file is never
390
393
  committed.
391
394
 
@@ -409,10 +412,10 @@ output is identical regardless of the current process/branch state.
409
412
  $ gtd mermaid
410
413
  stateDiagram-v2
411
414
  state "idle" as idle
412
- state "grilling" as grilling
415
+ state "planning" as planning
413
416
  ...
414
417
  [*] --> idle
415
- idle --> grilling : * **
418
+ idle --> planning : * **
416
419
  ...
417
420
  note right of idle : human · message
418
421
  ...
@@ -425,7 +428,7 @@ Mermaid-aware renderer (GitHub, GitLab, VS Code, Obsidian, the
425
428
 
426
429
  State names are aliased to Mermaid-safe identifiers (non-word characters fold to
427
430
  `_`; a digit-led name gets an `s_` prefix) via a `state "<name>" as <alias>`
428
- declaration up front, so a hyphenated name like `grilling-answer` still displays
431
+ declaration up front, so a hyphenated name like `plan-review` still displays
429
432
  with its exact declared spelling. Rejects `--json` (exit 1,
430
433
  `gtd mermaid does not accept --json`) — there is no structured shape to emit
431
434
  beyond the Mermaid source itself — and takes no arguments (extra positional args
@@ -460,11 +463,11 @@ naming the state instead — bind it to an editor keybinding for a "jump to the
460
463
  active steering file" command.
461
464
 
462
465
  Dispatched before the repository-root guard and the config-reading path — the
463
- server needs no git/workflow state of its own (like `gtd init`, it runs with no
464
- workflow configured). Rejects `--json` (exit 1,
465
- `gtd lsp does not accept --json`) and extra positional arguments — it's a
466
- long-running server, not a state command. Runs until the client disconnects (the
467
- LSP `exit` notification), then exits cleanly.
466
+ server needs no git/workflow state of its own (like `gtd init`, it needs no
467
+ config to run). Rejects `--json` (exit 1, `gtd lsp does not accept --json`) and
468
+ extra positional arguments — it's a long-running server, not a state command.
469
+ Runs until the client disconnects (the LSP `exit` notification), then exits
470
+ cleanly.
468
471
 
469
472
  ## Error envelope
470
473
 
@@ -1,12 +1,15 @@
1
1
  # Configuration
2
2
 
3
- gtd reads a required `.gtdrc` config file via
4
- [cosmiconfig](https://github.com/cosmiconfig/cosmiconfig). gtd ships **no**
5
- default workflow: scaffold one for the repo with [`gtd init`](#gtd-init) (once),
6
- which writes a `.gtdrc.json` for a bundled workflow template (with its agent
7
- prompts as editable Markdown under `gtd-prompts/`). A state command run with no
8
- `workflow:` configured fails, pointing you at `gtd init`. Supported filenames
9
- (searched in this order):
3
+ gtd reads an optional `.gtdrc` config file via
4
+ [cosmiconfig](https://github.com/cosmiconfig/cosmiconfig). gtd ships the bundled
5
+ **unified** workflow as its **built-in default**: with no `workflow:` configured
6
+ anywhere in the cwd→home config chain, that default is used automatically, so a
7
+ state command works out of the box with no config at all.
8
+ [`gtd init`](#gtd-init) is optional — it seeds a minimal `.gtdrc.json` with the
9
+ two things most projects tune (a `testCommand` var and a Prettier formatting
10
+ suggestion), not the workflow. To CUSTOMIZE the machine itself, add your own
11
+ [`workflow:`](#the-workflow-key) key. Supported filenames (searched in this
12
+ order):
10
13
 
11
14
  - `.gtdrc`
12
15
  - `.gtdrc.json`
@@ -19,10 +22,11 @@ prompts as editable Markdown under `gtd-prompts/`). A state command run with no
19
22
 
20
23
  v3's `.gtdrc` has exactly three blessed top-level keys:
21
24
 
22
- - **`workflow`** (object, **required**) — the whole machine definition (its
23
- states, plus its own `vars:` defaults and `modes:`), compiled by
24
- `src/PatternConfig.ts`. Absent = a hard error pointing at
25
- [`gtd init`](#gtd-init); there is no bundled default. See
25
+ - **`workflow`** (object, optional) — the whole machine definition (its states,
26
+ plus its own `vars:` defaults and `modes:`), compiled by
27
+ `src/PatternConfig.ts`. Absent = gtd's built-in default (the bundled unified
28
+ workflow) is used. Declare it to fully REPLACE that default with your own
29
+ machine (there is no `extends`/merge). See
26
30
  ["The `workflow:` key" below](#the-workflow-key) for its schema.
27
31
  - **`vars`** (object, optional) — a flat `name -> scalar` map, one layer of the
28
32
  merged `it.vars` every template sees — see ["Variables"](#variables) below.
@@ -52,11 +56,12 @@ interprets.
52
56
  > verify a change compiles. This section is the exhaustive schema reference
53
57
  > behind it.
54
58
 
55
- The `workflow:` key is the **only** definition source — there is no `extends`,
56
- no merge-over-a-built-in. The bundled template `gtd init` scaffolds is itself a
57
- YAML asset (`src/workflows/unified.yaml`) compiled through the exact same
58
- compiler (`compileWorkflowConfig`); `gtd init` just writes it, inline, under
59
- this key. Its shape:
59
+ A declared `workflow:` key fully REPLACES gtd's built-in default — there is no
60
+ `extends`, no merge-over-a-built-in. The built-in default is itself a YAML asset
61
+ (`src/workflows/unified.yaml`) compiled through the exact same compiler
62
+ (`compileWorkflowConfig`) your own `workflow:` value goes through — no
63
+ privileged code path — so you can materialize it into config form as a starting
64
+ point to edit (`renderInitConfig` in `src/workflows/templates.ts`). Its shape:
60
65
 
61
66
  ```yaml
62
67
  workflow:
@@ -107,8 +112,8 @@ root, discovers the parent `.gtdrc` by walking up the directory chain (see
107
112
  level's `./`-relative references against that level's own directory. When
108
113
  workflows are layered across levels, every reference resolves against the file
109
114
  that wrote it, so a parent's `./gtd-prompts/x.md` and a child's never collide.
110
- You can scaffold such a shared config by running [`gtd init`](#gtd-init) from
111
- that parent directory — it need not be a git repository.
115
+ (This is a capability of a `.gtdrc` you write yourself — `gtd init` seeds only
116
+ `vars:`/`modes:`, not a `workflow:` with file references.)
112
117
 
113
118
  ```yaml
114
119
  workflow:
@@ -156,7 +161,7 @@ workflow:
156
161
  "Delete `.gtd/REVIEW.md` to approve the whole cycle and rest at
157
162
  idle."
158
163
  "* **":
159
- to: grilling
164
+ to: planning
160
165
  describe:
161
166
  "Change any source file to leave feedback and start another round."
162
167
  ```
@@ -214,18 +219,18 @@ Forbidden on a commit state (never at rest):
214
219
  ```yaml
215
220
  workflow:
216
221
  states:
217
- grilling:
222
+ planning:
218
223
  actor: agent
219
224
  memory: plan
220
- prompt: develop the plan; ask open questions
225
+ prompt: develop the sketch into a concrete plan
221
226
  on:
222
- "* **": grilling-answer
223
- grilling-answer:
227
+ "* **": plan-review
228
+ plan-review:
224
229
  actor: human
225
- message: answer the open questions
230
+ message: accept the plan, or edit it to iterate
226
231
  on:
227
232
  "C": building
228
- "* **": grilling
233
+ "* **": planning
229
234
  building:
230
235
  actor: agent
231
236
  memory: build # a different scope — implementation starts fresh
@@ -236,7 +241,7 @@ workflow:
236
241
  commit: "feat: done"
237
242
  ```
238
243
 
239
- Because `grilling` re-enters itself around the answer loop, every lap emits
244
+ Because `planning` re-enters itself around the review loop, every lap emits
240
245
  `memory: plan` and the planner keeps its accumulated exploration; the move to
241
246
  `building` emits a different label (`build`), which is where the driver clears
242
247
  memory for a fresh implementation turn. A loop of same-labelled turns retains; a
@@ -282,10 +287,10 @@ workflow:
282
287
  **steering-file mode**. Two names are BUILT IN, each carrying a VALIDATOR gtd
283
288
  implements itself:
284
289
 
285
- | `mode` | Format |
286
- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
287
- | `qa` | The open-questions format (`## Open Questions` near the top and `## Answered Questions` at the bottom, one `###` sub-heading per question with a free-form body; status is positional, no marker line). |
288
- | `review` | The checkbox review format (`# Review: <hash>` header, `<!-- base: <hash> -->` comment, `##` chunks, `- [ ]` pointers). |
290
+ | `mode` | Format |
291
+ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
292
+ | `qa` | The open-questions format (`## Open Questions` near the top and `## Answered Questions` at the bottom, one `###` sub-heading per question with a free-form body; status is positional, no marker line). The bundled advanced flow additionally writes each open question as a checkbox list (candidate answers + a `- [ ] _your answer_` slot) and gates the human's answer step with `answerGate` (exactly one tick per question) — but that convention + gate live in the workflow/edge, not in this validator, which only checks the structure above. |
293
+ | `review` | The checkbox review format (`# Review: <hash>` header, `<!-- base: <hash> -->` comment, `##` chunks, `- [ ]` pointers). |
289
294
 
290
295
  Any other name must be declared in a `modes:` map (next section) — as must a
291
296
  `format:` command for these two, since gtd ships no formatter. A `mode:` naming
@@ -380,16 +385,17 @@ So for a state declaring `mode: qa`:
380
385
  | both | its `format:` | its `validate:` |
381
386
 
382
387
  That is what makes the built-in modes extensible rather than all-or-nothing —
383
- and the top-level key means a project can plug its formatter into the workflow
384
- it scaffolded (`gtd init`) without re-declaring a `modes:` block on the workflow
385
- itself. **`gtd init` seeds exactly this block by default** (the Prettier
386
- suggestion below), so a fresh repo already formats its steering files — edit or
387
- drop it to taste. It sits alongside the `workflow:` key in your `.gtdrc.json`:
388
+ and the top-level key means a project can plug its formatter into the built-in
389
+ default workflow (or its own) without re-declaring a `modes:` block on the
390
+ workflow itself. **`gtd init` seeds exactly this block by default** (the
391
+ Prettier suggestion below), so a fresh repo already formats its steering files —
392
+ edit or drop it to taste. It is what a scaffolded `.gtdrc.json` contains
393
+ (`gtd init` writes no `workflow:` key — the built-in default is used):
388
394
 
389
395
  ```jsonc
390
- // .gtdrc.json — the workflow from `gtd init`, plus your own markdown formatter
396
+ // .gtdrc.json — as scaffolded by `gtd init`: a testCommand var and the markdown formatter
391
397
  {
392
- "workflow": { "...": "..." },
398
+ "vars": { "testCommand": "npm test" },
393
399
  "modes": {
394
400
  "qa": { "format": "npx prettier --write <%= it.file %>" },
395
401
  "review": { "format": "npx prettier --write <%= it.file %>" },
@@ -702,24 +708,21 @@ can still override with its own `.gtdrc`.
702
708
 
703
709
  ## `gtd init`
704
710
 
705
- gtd ships **no** default workflow, so a repo must scaffold one before any state
706
- command works:
711
+ gtd ships the bundled unified workflow as its **built-in default**, so a state
712
+ command works out of the box with **no** config and no init at all. `gtd init`
713
+ is therefore optional — it just seeds the two things most projects tune:
707
714
 
708
715
  ```bash
709
716
  gtd init # takes no argument
710
717
  ```
711
718
 
712
- `gtd init` writes a `.gtdrc.json` at the repository root with the bundled
713
- unified template's workflow under a `workflow:` key, plus a `$schema` link (so
714
- editors pick up completion/validation). It takes **no argument** — passing one
715
- is a usage error (`gtd init: too many arguments — init takes no argument`). Each
716
- **agent state's prompt** is written as a standalone Markdown file under
717
- `gtd-prompts/<state>.md` and the config references it via a
718
- `./gtd-prompts/<state>.md`
719
- [file reference](#content-values-inline-or-a-file-reference) — gtd inlines it at
720
- load time, so a prompt is editable Markdown and editing it changes the workflow
721
- with no config edit. Human `message:` blocks and check `script:` bodies stay
722
- inline in the config (they are workflow mechanics, not prompts).
719
+ `gtd init` writes a **minimal** `.gtdrc.json` at the repository root — a
720
+ `$schema` link (so editors pick up completion/validation), a
721
+ `vars: { "testCommand": "npm test" }` entry (the var the built-in workflow's
722
+ check script reads), and a ready-to-edit `modes:` formatting suggestion (below).
723
+ It writes **no** `workflow:` key — the built-in default is used until you
724
+ declare your own. It takes **no argument** — passing one is a usage error
725
+ (`gtd init: too many arguments — init takes no argument`).
723
726
 
724
727
  `gtd init` writes only config — it derives no git state — so it need not run in
725
728
  a git repository. It runs at a **repository root** or in a directory **outside
@@ -731,9 +734,9 @@ only to write into a repository **subdirectory**, where the upward config walk
731
734
  would never find the file. Either way, it will not overwrite an existing config
732
735
  at that directory (remove it first to re-scaffold).
733
736
 
734
- It also seeds a top-level [`modes:`](#modes--pluggable-steering-file-modes)
735
- block as a ready-to-edit suggestion — a Prettier `format:` for each built-in
736
- steering-file mode the template uses:
737
+ The [`modes:`](#modes--pluggable-steering-file-modes) block it seeds is a
738
+ ready-to-edit suggestion — a Prettier `format:` for each built-in steering-file
739
+ mode the default workflow uses:
737
740
 
738
741
  ```jsonc
739
742
  "modes": {
@@ -748,12 +751,12 @@ this is the one default it suggests: a fresh repo auto-formats its steering
748
751
  files out of the box, and you edit or drop the block freely (swap Prettier for
749
752
  dprint, point at a script, or delete the key).
750
753
 
751
- The one bundled template has three entry points into a shared review/squash tail
752
- (all walked through in
754
+ The built-in default workflow has three entry points into a shared review/squash
755
+ tail (all walked through in
753
756
  [STATES.md §10](../STATES.md#10-the-bundled-workflow-templates)):
754
757
 
755
- - **the simple flow** — creating `.gtd/TODO.md` starts idle → grilling ⇄
756
- grilling-answer → building → checking ⇄ fixing (→ escalate) → reviewing →
758
+ - **the simple flow** — creating `.gtd/TODO.md` starts idle → planning ⇄
759
+ plan-review → building → checking ⇄ fixing (→ escalate) → reviewing →
757
760
  await-review.
758
761
  - **the advanced flow** — creating `.gtd/REQUIREMENTS.md` starts the fuller
759
762
  machine: two-phase Q&A planning (product then architecture), package
@@ -763,20 +766,15 @@ The one bundled template has three entry points into a shared review/squash tail
763
766
  review a foreign branch.
764
767
 
765
768
  Both file-created flows converge on `reviewing` → `await-review`, and a full
766
- sign-off squashes the whole cycle into one commit.
767
-
768
- The files are written **uncommitted** — review them, then commit `.gtdrc.json`
769
- and `gtd-prompts/` before your first `gtd step` (an uncommitted file is a
770
- pending change the initial state's `* **` edge would otherwise capture).
771
- `gtd init` refuses if the repo root already has its OWN gtd config (remove it
772
- first to re-init; a global/ancestor config such as `~/.gtdrc` does not count),
773
- requires the repository root, and is one of the two commands (with `gtd lsp`)
774
- that run with no workflow configured. A state command run before `gtd init`
775
- fails with:
776
-
777
- ```
778
- gtd: no workflow configured — run `gtd init` to create .gtdrc.json
779
- ```
769
+ sign-off squashes the whole cycle into one commit. To CUSTOMIZE any of this, add
770
+ a [`workflow:`](#the-workflow-key) key that fully replaces the default.
771
+
772
+ The file is written **uncommitted** — review it, then commit `.gtdrc.json`
773
+ before your first `gtd step` (an uncommitted file is a pending change the
774
+ initial state's `* **` edge would otherwise capture). `gtd init` refuses if the
775
+ repo root already has its OWN gtd config (remove it first to re-init; a
776
+ global/ancestor config such as `~/.gtdrc` does not count) and requires the
777
+ repository root (or a directory outside any repo).
780
778
 
781
779
  ## A complete example
782
780
 
@@ -31,7 +31,8 @@ registry to keep in sync: a workflow's content strings are either inline in its
31
31
  YAML/`.gtdrc` or a `./`-relative file reference auto-inlined at config load
32
32
  (`src/PatternConfig.ts`) — see
33
33
  [Configuration](configuration.md#content-values-inline-or-a-file-reference). The
34
- bundled workflow template (`src/workflows/unified.yaml`) `gtd init` scaffolds is
34
+ bundled workflow template (`src/workflows/unified.yaml`) gtd runs as its
35
+ built-in default (and materializes into config form via `renderInitConfig`) is
35
36
  imported as raw text via tsdown's `.yaml`-as-text loader (`tsdown.config.ts`)
36
37
  and compiled through the same path a `.gtdrc` `workflow:` key goes through
37
38
  (`src/workflows/templates.ts`) — no privileged code path.
package/docs/upgrading.md CHANGED
@@ -122,29 +122,25 @@ upgrading.
122
122
 
123
123
  ## How to adopt
124
124
 
125
- `workflow:` is now **required** — gtd ships no default workflow, so after
126
- upgrading each repo must scaffold one **once**:
125
+ `workflow:` is **optional** — gtd ships the bundled **unified** workflow as its
126
+ built-in default, so after upgrading a repo works with **no** config and no init
127
+ at all. The default forks on which steering file you create: `.gtd/TODO.md`
128
+ starts the **simple flow** (a `planning` ⇄ `plan-review` plan-iteration loop,
129
+ direct `building`, a `checking`/`fixing` loop), while `.gtd/REQUIREMENTS.md`
130
+ starts the **advanced flow** (two-phase grilling ⇄ grilling-answer /
131
+ architecting ⇄ architecting-answer / decompose / picking / per-package build
132
+ with an agentic spec-review gate). Both converge on the same `reviewing` →
133
+ `await-review` tail, and a full sign-off squashes the whole cycle into one
134
+ commit (see [STATES.md §10](../STATES.md#10-the-bundled-workflow-templates)).
135
+
136
+ `gtd init` is now optional and no longer writes a workflow — it seeds only a
137
+ minimal `.gtdrc.json` (a `testCommand` var and a Prettier formatting
138
+ suggestion). Run it if you want to tune those; otherwise nothing is required:
127
139
 
128
140
  ```bash
129
- gtd init # takes no argument
141
+ gtd init # optional — seeds testCommand + a formatting suggestion
130
142
  ```
131
143
 
132
- `gtd init` (no argument) writes a `.gtdrc.json` for the single bundled
133
- **unified** template (its agent prompts extracted to editable `gtd-prompts/*.md`
134
- files the config references). The template forks on which steering file you
135
- create: `.gtd/TODO.md` starts the **simple flow** (a single-shot `grilling`
136
- plan, direct `building`, a `checking`/`fixing` loop), while
137
- `.gtd/REQUIREMENTS.md` starts the **advanced flow** (two-phase grilling ⇄
138
- grilling-answer / architecting ⇄ architecting-answer / decompose / picking /
139
- per-package build with an agentic spec-review gate). Both converge on the same
140
- `reviewing` → `await-review` tail, and a full sign-off squashes the whole cycle
141
- into one commit (see
142
- [STATES.md §10](../STATES.md#10-the-bundled-workflow-templates)). Review and
143
- commit the generated `.gtdrc.json` (and its `gtd-prompts/` directory), then
144
- continue from a settled `idle` boundary. **Note:** a repo relying on earlier
145
- gtd's auto-created `.gtdrc.json` `$schema` stub (which carried no `workflow:`)
146
- will now fail until you `gtd init` — the stub alone is no longer enough.
147
-
148
144
  A repo that customized v2's `workflow:` key (actors, gates, guard vocabulary,
149
145
  ladders) needs to rewrite it from scratch in the v3 schema — see
150
146
  [Configuration](configuration.md) for the schema and a complete worked example.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pmelab/gtd",
3
- "version": "6.13.0",
3
+ "version": "7.0.0",
4
4
  "private": false,
5
5
  "description": "Git-aware CLI that emits the next prompt for an autonomous coding agent based on the current repository state",
6
6
  "bin": {