@pmelab/gtd 15.4.0 → 15.5.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/README.md CHANGED
@@ -23,12 +23,10 @@ Or run without installing (prefix every `gtd` below with `npx`) — see
23
23
  [Configuration](https://github.com/pmelab/gtd/blob/main/docs/configuration.md)
24
24
  for the settings most projects tune.
25
25
 
26
- Also install
27
- [`addyosmani/agent-skills`](https://github.com/addyosmani/agent-skills) — the
28
- bundled workflow names skills from it at several states instead of spelling out
29
- technique in the prompt itself — the same names also ride `gtd next --json`'s
30
- `skills` key at those states, for a driver that wants to preload them; see
31
- [Setup](https://github.com/pmelab/gtd/blob/main/docs/setup.md) for the details.
26
+ Also install all three skill sources the bundled workflow names in its prompts —
27
+ none is optional. See
28
+ [Setup](https://github.com/pmelab/gtd/blob/main/docs/setup.md) for the list, the
29
+ install flags, and the never-install-the-plugin caveat.
32
30
 
33
31
  > **A repository's `gtd.config.ts` is code, and gtd runs it.** A custom workflow
34
32
  > is a TypeScript module, and every gtd command that looks at workflow state —
@@ -47920,6 +47920,9 @@ ${footnoteFoldIn}
47920
47920
  the product ones, one phase earlier. PERMISSIVE: answer it
47921
47921
  yourself unless you genuinely cannot defend a default; a wrong
47922
47922
  technical call is still caught at spec review
47923
+ - The narrow exception: a simplification that drops something
47924
+ \`.gtd/REQUIREMENTS.md\` mentions is an open question, not a
47925
+ silent default
47923
47926
 
47924
47927
  ${questionBar}
47925
47928
  ## Return lap
@@ -48095,6 +48098,8 @@ const buildFixQualityPrompt = () => `${stateFileRules}
48095
48098
  - Read \`.gtd/QUALITY.md\` — one \`## \` chunk per quality dimension
48096
48099
  that found something blocking. Merge duplicate findings across
48097
48100
  dimensions FIRST, then fix every chunk
48101
+ - When findings conflict, missing test signal beats line count —
48102
+ a test is never deleted to satisfy a simplification finding
48098
48103
  - Delete \`.gtd/QUALITY.md\` once every finding is resolved
48099
48104
  - Leave everything else uncommitted and finish your turn
48100
48105
  `;
@@ -49005,7 +49010,7 @@ const defaults = {
49005
49010
  reviewNoteActionable: "0.7",
49006
49011
  architectureSkipMinP: "0.85",
49007
49012
  triageSkills: "spec-driven-development, planning-and-task-breakdown",
49008
- architectureSkills: "api-and-interface-design, documentation-and-adrs",
49013
+ architectureSkills: "api-and-interface-design, documentation-and-adrs, ponytail",
49009
49014
  decomposeSkills: "incremental-implementation, planning-and-task-breakdown",
49010
49015
  buildSkills: "test-driven-development, incremental-implementation",
49011
49016
  fixSkills: "debugging-and-error-recovery",
@@ -49013,7 +49018,7 @@ const defaults = {
49013
49018
  reviewSkills: "code-review-and-quality",
49014
49019
  specReviewSkills: "code-review-and-quality, spec-driven-development",
49015
49020
  escalateSkills: "debugging-and-error-recovery",
49016
- qualityReviews: "owasp-security, code-simplification"
49021
+ qualityReviews: "owasp-security, ponytail-review, test-audit"
49017
49022
  };
49018
49023
  //#endregion
49019
49024
  //#region src/workflows/unified.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pmelab/gtd",
3
- "version": "15.4.0",
3
+ "version": "15.5.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": {
@@ -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
  }