fix(skill): deft-setup -- pwd path anchor + post-interview confirmation gate (#272, #269)#284
Conversation
…272, #269) - Add ! Path Resolution Anchor rule to Phase 2: resolve all paths relative to pwd at skill entry, never relative to skill file, AGENTS.md, or framework directory -- prevents silent false-positive bootstrap when deft is a subdirectory - Add Post-Interview Confirmation Gate: after completing interview questions, display summary of all captured values and require explicit yes/no before writing USER.md, PROJECT.md, or any other artifacts - Add Warp Auto-Approve Warning documenting 'Always ask' AI -> Profile Settings as recommended configuration for running deft-setup - Add anti-pattern against resolving paths relative to framework directory - Add anti-pattern against writing files without confirmation gate - Add CHANGELOG entries under [Unreleased] for both tasks Closes #272, closes #269, absorbs #271
Greptile SummaryThis PR adds two targeted fixes to Confidence Score: 5/5Safe to merge — both fixes are additive instruction rules with no breaking changes; all findings are P2 style suggestions. No P0 or P1 issues found. The path anchor and confirmation gate are correctly scoped (Phase 2 and Phase 3 for paths; all phases for the gate). The prior yolo/auto-pilot concern from the previous review has been addressed with an explicit carve-out. Remaining comments are minor: an acceptance-list gap ( No files require special attention. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[deft-setup invoked] --> B[Record pwd at skill entry]
B --> C{USER.md exists at platform path?}
C -- No --> D[Phase 1 Interview]
C -- Yes --> E[Check deft_version Freshness]
E --> F[Phase 2: Resolve paths relative to pwd]
D --> G[Post-Interview Gate: Display summary]
F --> H{PROJECT.md exists at pwd/PROJECT.md?}
H -- No --> I[Phase 2 Interview]
H -- Yes --> J[Skip Phase 2]
I --> G
J --> K[Phase 3: Resolve paths relative to pwd]
G --> L{Strategy = yolo?}
L -- Yes --> M[Johnbot self-confirms and proceeds]
L -- No --> N{User replies yes/confirmed/approve?}
N -- Vague --> O[Reject + re-display]
O --> N
N -- Yes --> P[Write artifacts]
M --> P
N -- No --> Q[Ask which values to correct]
Q --> G
P --> K
K --> R[Phase 3 Interview]
R --> G2[Post-Interview Gate Phase 3]
G2 --> S[Write SPECIFICATION.md]
Prompt To Fix All With AIThis is a comment left during a code review.
Path: skills/deft-setup/SKILL.md
Line: 524
Comment:
**Acceptance list excludes common single-character affirmatives**
The gate accepts `yes`, `confirmed`, and `approve` but not `y`, `ok`, or `sure`. A user who naturally types `y` to a yes/no prompt will have their response rejected and re-prompted — which can feel broken in a conversational flow. If the intent is to mirror `/deft:change` exactly, that's fine, but it's worth documenting that single-character shorthands are intentionally excluded so future editors don't silently add them. Consider adding a note or extending the list:
```suggestion
3. ! Accept only explicit affirmative responses (`yes`, `y`, `confirmed`, `approve`) -- reject vague responses (`proceed`, `do it`, `go ahead`) the same way `/deft:change` does
```
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: skills/deft-setup/SKILL.md
Line: 528-531
Comment:
**`⊗` rule and `?` yolo carve-out have a semantic tension**
Line 528 states `⊗ Write ... without first ... receiving explicit user confirmation` (a MUST NOT). The carve-out on line 531 permits Johnbot to self-confirm "on the user's behalf" — which is agent-generated confirmation, not user confirmation. Under a strict RFC2119 reading a `?` (MAY) cannot override a `⊗` (MUST NOT), so an agent following the legend literally could refuse the carve-out and still comply with the file.
Consider rewriting line 528 to carve out the yolo case inline:
```suggestion
⊗ Write USER.md, PROJECT.md, SPECIFICATION.md, or any other deft-setup artifact without first displaying captured values and receiving explicit user confirmation (or Johnbot self-confirmation in yolo mode per the carve-out below).
```
How can I resolve this? If you propose a fix, please make it concise.Reviews (3): Last reviewed commit: "fix: address Greptile re-review findings..." | Re-trigger Greptile |
- Add Path Resolution Anchor mirror to Phase 3 (consistency with Phase 2) - Add yolo strategy carve-out for confirmation gate (auto-pilot can self-confirm) - Flip SPECIFICATION.md task statuses: t1.16.1 and t1.17.1 from pending to completed - Add anti-pattern for resolving paths relative to framework directory
- Fix Phase 3 anchor wording: add AGENTS.md to exclusion list (matches Phase 2) - Add test coverage deferred note to t1.16.1 and t1.17.1 spec task AC
Summary
Two deft-setup fixes addressing silent failure modes during project bootstrap.
Task A: Anchor path resolution to pwd at skill entry (#272, t1.16.1)
When deft is cloned into a project subdirectory, deft-setup reads ./PROJECT.md relative to the framework clone instead of the user's pwd, silently concluding bootstrap is complete.
Fix: Added ! Path Resolution Anchor rule to Phase 2 explicitly stating all paths must resolve relative to pwd at skill entry -- never relative to the skill file, AGENTS.md, or any framework directory.
Task B: Post-interview confirmation gate + Warp auto-approve warning (#269, t1.17.1, absorbs #271)
Warp auto-approve silently self-answers the deft-setup interview, producing garbage USER.md/PROJECT.md with no error.
Fix:
Checklist
Closes #272, closes #269, absorbs #271