@pmelab/gtd 15.4.0 → 15.6.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pmelab/gtd",
3
- "version": "15.4.0",
3
+ "version": "15.6.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": {
@@ -106,7 +106,8 @@
106
106
  "tailwindcss": "^4.3.3",
107
107
  "tsdown": "^0.22.8",
108
108
  "turbo": "^2.10.9",
109
- "vitest": "^3.2.0"
109
+ "vitest": "^3.2.0",
110
+ "zustand": "^5.0.15"
110
111
  },
111
112
  "peerDependencies": {
112
113
  "typescript": "^5"
@@ -25,6 +25,7 @@ describe("the bundled workflow's steps declare skills", () => {
25
25
  expect(agentSkills(await capture(() => steps.author()))).toEqual([
26
26
  "api-and-interface-design",
27
27
  "documentation-and-adrs",
28
+ "ponytail",
28
29
  ])
29
30
  })
30
31
 
@@ -2,6 +2,7 @@ import { describe, expect, it } from "vitest"
2
2
  import {
3
3
  agentWithSkills,
4
4
  architectureAuthorPrompt,
5
+ buildFixQualityPrompt,
5
6
  designTriagePrompt,
6
7
  splitSkills,
7
8
  summaryPrompt,
@@ -103,6 +104,21 @@ describe("the shared open-question instruction", () => {
103
104
  })
104
105
  })
105
106
 
107
+ describe("architectureAuthorPrompt", () => {
108
+ it("qualifies the PERMISSIVE default with a settled-requirements exception", () => {
109
+ const prompt = renderText(() => architectureAuthorPrompt())
110
+ expect(prompt).toContain("is an open question, not a")
111
+ })
112
+ })
113
+
114
+ describe("buildFixQualityPrompt", () => {
115
+ it("states the missing-test-signal-beats-line-count tiebreak", () => {
116
+ const prompt = renderText(() => buildFixQualityPrompt())
117
+ expect(prompt).toContain("missing test signal beats line count")
118
+ expect(prompt).toContain("a test is never deleted to satisfy a simplification finding")
119
+ })
120
+ })
121
+
106
122
  describe("summaryPrompt", () => {
107
123
  it("puts the total and every model's cost on a line of its own", () => {
108
124
  const prompt = summaryPrompt({
@@ -267,6 +267,9 @@ ${footnoteFoldIn}
267
267
  the product ones, one phase earlier. PERMISSIVE: answer it
268
268
  yourself unless you genuinely cannot defend a default; a wrong
269
269
  technical call is still caught at spec review
270
+ - The narrow exception: a simplification that drops something
271
+ \`.gtd/REQUIREMENTS.md\` mentions is an open question, not a
272
+ silent default
270
273
 
271
274
  ${questionBar}
272
275
  ## Return lap
@@ -485,6 +488,8 @@ export const buildFixQualityPrompt = (): string =>
485
488
  - Read \`.gtd/QUALITY.md\` — one \`## \` chunk per quality dimension
486
489
  that found something blocking. Merge duplicate findings across
487
490
  dimensions FIRST, then fix every chunk
491
+ - When findings conflict, missing test signal beats line count —
492
+ a test is never deleted to satisfy a simplification finding
488
493
  - Delete \`.gtd/QUALITY.md\` once every finding is resolved
489
494
  - Leave everything else uncommitted and finish your turn
490
495
  `
@@ -11,7 +11,7 @@ export const defaults: Readonly<Record<string, string>> = {
11
11
  reviewNoteActionable: "0.7",
12
12
  architectureSkipMinP: "0.85",
13
13
  triageSkills: "spec-driven-development, planning-and-task-breakdown",
14
- architectureSkills: "api-and-interface-design, documentation-and-adrs",
14
+ architectureSkills: "api-and-interface-design, documentation-and-adrs, ponytail",
15
15
  decomposeSkills: "incremental-implementation, planning-and-task-breakdown",
16
16
  buildSkills: "test-driven-development, incremental-implementation",
17
17
  fixSkills: "debugging-and-error-recovery",
@@ -19,5 +19,5 @@ export const defaults: Readonly<Record<string, string>> = {
19
19
  reviewSkills: "code-review-and-quality",
20
20
  specReviewSkills: "code-review-and-quality, spec-driven-development",
21
21
  escalateSkills: "debugging-and-error-recovery",
22
- qualityReviews: "owasp-security, code-simplification",
22
+ qualityReviews: "owasp-security, ponytail-review, test-audit",
23
23
  }