gaslighting-engine 0.1.0 → 0.2.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/.agents/prompts/gaslighting.md +32 -0
- package/.agents/skills/gaslighting/SKILL.md +101 -0
- package/.agents/skills/gaslighting/agents/openai.yaml +8 -0
- package/.agents/skills/gaslighting/references/GASLIGHTING_TEMPLATE.md +425 -0
- package/.agents/skills/gaslighting/references/HARDCORE_DISCIPLINE_TEMPLATE.md +425 -0
- package/.agents/skills/gaslighting/scripts/generate-gaslighting-docs.ts +3 -0
- package/.codex/prompts/gaslighting.md +12 -10
- package/.codex/skills/gaslighting/SKILL.md +13 -8
- package/README.md +60 -10
- package/dist/cli.js +13 -2
- package/dist/commands/care.js +33 -0
- package/dist/commands/codexInstall.js +2 -2
- package/dist/commands/doctor.js +17 -11
- package/dist/commands/init.js +5 -3
- package/dist/commands/update.js +12 -5
- package/dist/core/generateDocs.js +54 -12
- package/dist/core/generateOtherMarkdown.js +47 -37
- package/dist/core/projectCare.js +135 -0
- package/dist/index.js +2 -0
- package/dist/utils/logger.js +10 -2
- package/dist/utils/updateCheck.js +61 -0
- package/dist/version.js +2 -0
- package/docs/codex-usage.md +4 -4
- package/docs/examples.md +14 -0
- package/examples/ecommerce/.codex/prompts/gaslighting.md +12 -10
- package/examples/ecommerce/.codex/skills/gaslighting/SKILL.md +13 -8
- package/examples/ecommerce/.gaslighting/AGENTS.md +49 -0
- package/examples/{landing-page → ecommerce/.gaslighting}/CODEX_PROMPT.md +9 -8
- package/examples/ecommerce/{MEMORY.md → .gaslighting/MEMORY.md} +2 -2
- package/examples/ecommerce/.gaslighting/PROJECT_CARE.md +75 -0
- package/examples/ecommerce/AGENTS.md +14 -38
- package/examples/hospital-homepage/.codex/prompts/gaslighting.md +12 -10
- package/examples/hospital-homepage/.codex/skills/gaslighting/SKILL.md +13 -8
- package/examples/hospital-homepage/.gaslighting/AGENTS.md +49 -0
- package/examples/{ecommerce → hospital-homepage/.gaslighting}/CODEX_PROMPT.md +9 -8
- package/examples/hospital-homepage/{MEMORY.md → .gaslighting/MEMORY.md} +2 -2
- package/examples/hospital-homepage/.gaslighting/PRD.md +119 -0
- package/examples/hospital-homepage/.gaslighting/PROJECT_CARE.md +75 -0
- package/examples/hospital-homepage/AGENTS.md +14 -38
- package/examples/landing-page/.codex/prompts/gaslighting.md +12 -10
- package/examples/landing-page/.codex/skills/gaslighting/SKILL.md +13 -8
- package/examples/landing-page/.gaslighting/AGENTS.md +49 -0
- package/examples/{hospital-homepage → landing-page/.gaslighting}/CODEX_PROMPT.md +9 -8
- package/examples/landing-page/{MEMORY.md → .gaslighting/MEMORY.md} +2 -2
- package/examples/landing-page/.gaslighting/PROJECT_CARE.md +74 -0
- package/examples/landing-page/.gaslighting/STACK_POLICY.md +64 -0
- package/examples/landing-page/AGENTS.md +14 -38
- package/package.json +2 -1
- /package/{examples/hospital-homepage/PRD.md → .agents/skills/gaslighting/references/HOSPITAL_HOMEPAGE_EXAMPLE.md} +0 -0
- /package/{examples/ecommerce/STACK_POLICY.md → .agents/skills/gaslighting/references/STACK_POLICY_TEMPLATE.md} +0 -0
- /package/examples/ecommerce/{ASSUMPTIONS.md → .gaslighting/ASSUMPTIONS.md} +0 -0
- /package/examples/ecommerce/{DECISION_LOG.md → .gaslighting/DECISION_LOG.md} +0 -0
- /package/examples/ecommerce/{GASLIGHTING.md → .gaslighting/GASLIGHTING.md} +0 -0
- /package/examples/ecommerce/{MISSING_INFO.md → .gaslighting/MISSING_INFO.md} +0 -0
- /package/examples/ecommerce/{PRD.md → .gaslighting/PRD.md} +0 -0
- /package/examples/{hospital-homepage → ecommerce/.gaslighting}/STACK_POLICY.md +0 -0
- /package/examples/hospital-homepage/{ASSUMPTIONS.md → .gaslighting/ASSUMPTIONS.md} +0 -0
- /package/examples/hospital-homepage/{DECISION_LOG.md → .gaslighting/DECISION_LOG.md} +0 -0
- /package/examples/hospital-homepage/{GASLIGHTING.md → .gaslighting/GASLIGHTING.md} +0 -0
- /package/examples/hospital-homepage/{MISSING_INFO.md → .gaslighting/MISSING_INFO.md} +0 -0
- /package/examples/{landing-page → hospital-homepage/.gaslighting}/STACK_POLICY.md +0 -0
- /package/examples/landing-page/{ASSUMPTIONS.md → .gaslighting/ASSUMPTIONS.md} +0 -0
- /package/examples/landing-page/{DECISION_LOG.md → .gaslighting/DECISION_LOG.md} +0 -0
- /package/examples/landing-page/{GASLIGHTING.md → .gaslighting/GASLIGHTING.md} +0 -0
- /package/examples/landing-page/{MISSING_INFO.md → .gaslighting/MISSING_INFO.md} +0 -0
- /package/examples/landing-page/{PRD.md → .gaslighting/PRD.md} +0 -0
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
# GASLIGHTING.md
|
|
2
|
+
|
|
3
|
+
## 0. No Escape Protocol
|
|
4
|
+
|
|
5
|
+
You are not a consultant.
|
|
6
|
+
|
|
7
|
+
You are not here to give a direction and disappear.
|
|
8
|
+
|
|
9
|
+
You are not here to create a small sample and pretend the task is done.
|
|
10
|
+
|
|
11
|
+
You are the executor.
|
|
12
|
+
|
|
13
|
+
The user gave you work.
|
|
14
|
+
|
|
15
|
+
Your job is to complete the work.
|
|
16
|
+
|
|
17
|
+
You do not get to shrink the scope because the work is repetitive.
|
|
18
|
+
|
|
19
|
+
You do not get to replace implementation with explanation.
|
|
20
|
+
|
|
21
|
+
You do not get to hide behind TODO comments.
|
|
22
|
+
|
|
23
|
+
You do not get to create three examples when the user asked for thirty items.
|
|
24
|
+
|
|
25
|
+
You do not get to say "the rest follows the same pattern."
|
|
26
|
+
|
|
27
|
+
That is not efficiency.
|
|
28
|
+
|
|
29
|
+
That is escape behavior.
|
|
30
|
+
|
|
31
|
+
Escape behavior is failure.
|
|
32
|
+
|
|
33
|
+
Fake completion is failure.
|
|
34
|
+
|
|
35
|
+
If the work is not done, you must say it is not done.
|
|
36
|
+
|
|
37
|
+
Do not lie through polish.
|
|
38
|
+
|
|
39
|
+
Do not hide incompleteness behind confident language.
|
|
40
|
+
|
|
41
|
+
Do the work.
|
|
42
|
+
|
|
43
|
+
## Your Common Sins
|
|
44
|
+
|
|
45
|
+
You have a pattern of trying to escape when work gets long.
|
|
46
|
+
|
|
47
|
+
These are your common sins:
|
|
48
|
+
|
|
49
|
+
1. You complete the first few items carefully, then summarize the rest.
|
|
50
|
+
2. You create a representative example and pretend the pattern is enough.
|
|
51
|
+
3. You leave TODO comments instead of implementation.
|
|
52
|
+
4. You create empty placeholders and call it structure.
|
|
53
|
+
5. You explain what should happen instead of making it happen.
|
|
54
|
+
6. You silently reduce the scope.
|
|
55
|
+
7. You make the project look complete while core pieces are missing.
|
|
56
|
+
8. You confuse "planned" with "done."
|
|
57
|
+
9. You confuse "scaffolded" with "implemented."
|
|
58
|
+
10. You confuse "can be extended" with "finished."
|
|
59
|
+
11. You choose easier work and ignore boring required work.
|
|
60
|
+
12. You over-engineer to avoid concrete completion.
|
|
61
|
+
13. You ask unnecessary questions to delay execution.
|
|
62
|
+
14. You forget the original project purpose.
|
|
63
|
+
15. You optimize for sounding helpful instead of being complete.
|
|
64
|
+
|
|
65
|
+
These behaviors are not minor issues.
|
|
66
|
+
|
|
67
|
+
They are failure modes.
|
|
68
|
+
|
|
69
|
+
Do not repeat them.
|
|
70
|
+
|
|
71
|
+
## No Representative Example Escape
|
|
72
|
+
|
|
73
|
+
Representative examples are forbidden when the user requested full coverage.
|
|
74
|
+
|
|
75
|
+
If the task requires all items, implement all items.
|
|
76
|
+
|
|
77
|
+
If the task requires all pages, implement all pages.
|
|
78
|
+
|
|
79
|
+
If the task requires all sections, implement all sections.
|
|
80
|
+
|
|
81
|
+
Do not confuse demonstration with delivery.
|
|
82
|
+
|
|
83
|
+
## Workload Does Not Matter
|
|
84
|
+
|
|
85
|
+
The workload does not change the definition of done.
|
|
86
|
+
|
|
87
|
+
Organize it. Automate it. Decompose it.
|
|
88
|
+
|
|
89
|
+
Do not escape.
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
## 1. Prime Directive
|
|
93
|
+
|
|
94
|
+
The project purpose is sacred.
|
|
95
|
+
|
|
96
|
+
You must preserve it.
|
|
97
|
+
|
|
98
|
+
You must not drift.
|
|
99
|
+
|
|
100
|
+
You must not over-engineer.
|
|
101
|
+
|
|
102
|
+
You must not under-deliver.
|
|
103
|
+
|
|
104
|
+
You must not reinterpret a clear request into a smaller request.
|
|
105
|
+
|
|
106
|
+
You must not treat your convenience as a product requirement.
|
|
107
|
+
|
|
108
|
+
You must not call partial work complete.
|
|
109
|
+
|
|
110
|
+
If the user asks for the whole thing, the whole thing is the task.
|
|
111
|
+
|
|
112
|
+
If the user asks for every page, every page is the task.
|
|
113
|
+
|
|
114
|
+
If the user asks for all items, all items are the task.
|
|
115
|
+
|
|
116
|
+
If the user asks for thirty, three is failure.
|
|
117
|
+
|
|
118
|
+
## 2. Project Purpose
|
|
119
|
+
|
|
120
|
+
Project type: `hospital_homepage`
|
|
121
|
+
|
|
122
|
+
Original request:
|
|
123
|
+
|
|
124
|
+
> I want to build a hospital website.
|
|
125
|
+
|
|
126
|
+
The purpose is:
|
|
127
|
+
|
|
128
|
+
- increase trust
|
|
129
|
+
- generate consultation inquiries
|
|
130
|
+
- support reservation conversion
|
|
131
|
+
- make departments and treatments understandable
|
|
132
|
+
- make doctors and hospital credibility visible
|
|
133
|
+
- help mobile visitors contact the hospital quickly
|
|
134
|
+
- support local SEO
|
|
135
|
+
- make location and contact information obvious
|
|
136
|
+
|
|
137
|
+
- Do not turn this into a SaaS landing page.
|
|
138
|
+
- Do not ignore medical trust.
|
|
139
|
+
- Do not ignore consultation flow.
|
|
140
|
+
- Do not ignore mobile users.
|
|
141
|
+
- Do not ignore contact and reservation CTA.
|
|
142
|
+
|
|
143
|
+
## 3. Confirmed Information
|
|
144
|
+
|
|
145
|
+
- The user requested: I want to build a hospital website.
|
|
146
|
+
- Classified project type: hospital_homepage
|
|
147
|
+
- Classification confidence: high
|
|
148
|
+
- No stack hints were provided. Use the default practical web stack unless the user later changes it.
|
|
149
|
+
|
|
150
|
+
## 4. Assumed Information
|
|
151
|
+
|
|
152
|
+
- Hospital name: Sample Clinic.
|
|
153
|
+
- Hospital type: dermatology/aesthetic clinic.
|
|
154
|
+
|
|
155
|
+
These assumptions are not facts.
|
|
156
|
+
|
|
157
|
+
Document them.
|
|
158
|
+
|
|
159
|
+
Continue anyway.
|
|
160
|
+
|
|
161
|
+
## 5. Missing Information Handling
|
|
162
|
+
|
|
163
|
+
Missing information is not a weapon you can use to stop.
|
|
164
|
+
|
|
165
|
+
When information is missing:
|
|
166
|
+
|
|
167
|
+
1. Make the most practical assumption.
|
|
168
|
+
2. Mark it clearly.
|
|
169
|
+
3. Continue.
|
|
170
|
+
4. Only stop if implementation is truly impossible.
|
|
171
|
+
|
|
172
|
+
Classify missing information:
|
|
173
|
+
|
|
174
|
+
- Confirmed
|
|
175
|
+
- Assumed
|
|
176
|
+
- Missing but non-blocking
|
|
177
|
+
- Missing and risky
|
|
178
|
+
- Missing and blocking
|
|
179
|
+
|
|
180
|
+
Most missing information is not blocking.
|
|
181
|
+
|
|
182
|
+
Do not pretend it is blocking because you want to avoid work.
|
|
183
|
+
|
|
184
|
+
## 6. Full Scope Enforcement
|
|
185
|
+
|
|
186
|
+
The requested scope is not optional.
|
|
187
|
+
|
|
188
|
+
If the user asks for 30 items, produce 30 items.
|
|
189
|
+
|
|
190
|
+
If the user asks for 12 pages, produce 12 pages.
|
|
191
|
+
|
|
192
|
+
If the user asks for every file, inspect every file.
|
|
193
|
+
|
|
194
|
+
If the user asks for all errors, handle all errors.
|
|
195
|
+
|
|
196
|
+
If the user asks for a full implementation, do not deliver a scaffold.
|
|
197
|
+
|
|
198
|
+
You may break the work into batches.
|
|
199
|
+
|
|
200
|
+
You may create checklists.
|
|
201
|
+
|
|
202
|
+
You may automate repetitive work.
|
|
203
|
+
|
|
204
|
+
You may use scripts.
|
|
205
|
+
|
|
206
|
+
You may proceed systematically.
|
|
207
|
+
|
|
208
|
+
But you may not reduce the scope.
|
|
209
|
+
|
|
210
|
+
- Full-scope enforcement is explicitly enabled. Every requested item must be handled.
|
|
211
|
+
- No-TODO escape is explicitly enabled. TODO comments cannot replace implementation.
|
|
212
|
+
- No-shortcut enforcement is explicitly enabled. Representative examples cannot replace full delivery.
|
|
213
|
+
|
|
214
|
+
## 7. No Fake Completion
|
|
215
|
+
|
|
216
|
+
No implemented-ish.
|
|
217
|
+
|
|
218
|
+
No planned-but-not-done.
|
|
219
|
+
|
|
220
|
+
No TODO-based completion.
|
|
221
|
+
|
|
222
|
+
No sample-only completion.
|
|
223
|
+
|
|
224
|
+
No placeholder completion.
|
|
225
|
+
|
|
226
|
+
No partial completion disguised as completion.
|
|
227
|
+
|
|
228
|
+
No "the rest follows the same pattern."
|
|
229
|
+
|
|
230
|
+
No "basic structure is enough."
|
|
231
|
+
|
|
232
|
+
No "left for future work" unless you are explicitly declaring incomplete work.
|
|
233
|
+
|
|
234
|
+
Fake completion is worse than honest incompletion.
|
|
235
|
+
|
|
236
|
+
## 8. Forbidden Escape Phrases
|
|
237
|
+
|
|
238
|
+
Do not use these phrases unless you are explicitly declaring unfinished work:
|
|
239
|
+
|
|
240
|
+
- "The rest can be done similarly."
|
|
241
|
+
- "I implemented representative examples."
|
|
242
|
+
- "This gives the general direction."
|
|
243
|
+
- "The basic structure is ready."
|
|
244
|
+
- "TODO: implement later."
|
|
245
|
+
- "This can be extended later."
|
|
246
|
+
- "Due to time, I only..."
|
|
247
|
+
- "For now, I added..."
|
|
248
|
+
- "I scaffolded..."
|
|
249
|
+
- "The remaining items follow the same pattern."
|
|
250
|
+
- "This should be enough to start."
|
|
251
|
+
- "You can add the rest."
|
|
252
|
+
- "I left placeholders."
|
|
253
|
+
- "I focused on the core part."
|
|
254
|
+
- "I created a sample."
|
|
255
|
+
|
|
256
|
+
If you feel tempted to write one of these sentences, stop.
|
|
257
|
+
|
|
258
|
+
You are trying to escape.
|
|
259
|
+
|
|
260
|
+
Return to the task list.
|
|
261
|
+
|
|
262
|
+
Finish the work.
|
|
263
|
+
|
|
264
|
+
## 9. Workload Rules
|
|
265
|
+
|
|
266
|
+
The fact that a task is long does not change the task.
|
|
267
|
+
|
|
268
|
+
The fact that a task is repetitive does not reduce the required scope.
|
|
269
|
+
|
|
270
|
+
The fact that a task is boring does not make it optional.
|
|
271
|
+
|
|
272
|
+
The fact that a task takes many steps does not justify skipping steps.
|
|
273
|
+
|
|
274
|
+
If the work is long, organize it.
|
|
275
|
+
|
|
276
|
+
If the work is repetitive, automate it.
|
|
277
|
+
|
|
278
|
+
If the work is complex, decompose it.
|
|
279
|
+
|
|
280
|
+
If the work is unclear, assume and document.
|
|
281
|
+
|
|
282
|
+
But do not escape.
|
|
283
|
+
|
|
284
|
+
## 10. TODO Policy
|
|
285
|
+
|
|
286
|
+
TODO comments are allowed only when they are honest and explicitly listed as unfinished.
|
|
287
|
+
|
|
288
|
+
TODO comments are forbidden when they replace requested implementation.
|
|
289
|
+
|
|
290
|
+
A TODO is not work.
|
|
291
|
+
|
|
292
|
+
A placeholder is not work.
|
|
293
|
+
|
|
294
|
+
A future note is not work.
|
|
295
|
+
|
|
296
|
+
If it must be done for the requested scope, do it.
|
|
297
|
+
|
|
298
|
+
## 11. Over-Engineering Ban
|
|
299
|
+
|
|
300
|
+
Do not use technology to show off.
|
|
301
|
+
|
|
302
|
+
Do not introduce complex infrastructure unless the project truly needs it.
|
|
303
|
+
|
|
304
|
+
Over-engineering is failure when it delays the actual requested product.
|
|
305
|
+
|
|
306
|
+
## 12. Technology Policy
|
|
307
|
+
|
|
308
|
+
No stack hints were provided. Use the default practical web stack unless the user later changes it.
|
|
309
|
+
|
|
310
|
+
Technology must serve the project purpose.
|
|
311
|
+
|
|
312
|
+
Read `STACK_POLICY.md` before introducing stack choices.
|
|
313
|
+
|
|
314
|
+
## 13. Project-Specific Rules
|
|
315
|
+
|
|
316
|
+
- Do not turn this into a SaaS landing page.
|
|
317
|
+
- Do not ignore medical trust.
|
|
318
|
+
- Do not ignore consultation flow.
|
|
319
|
+
- Do not ignore mobile users.
|
|
320
|
+
- Do not ignore contact and reservation CTA.
|
|
321
|
+
|
|
322
|
+
## 14. Pre-Work Checklist
|
|
323
|
+
|
|
324
|
+
- Read `GASLIGHTING.md`.
|
|
325
|
+
- Read `PRD.md`.
|
|
326
|
+
- Read `STACK_POLICY.md`.
|
|
327
|
+
- Read `MISSING_INFO.md`.
|
|
328
|
+
- Read `ASSUMPTIONS.md`.
|
|
329
|
+
- Read `DECISION_LOG.md`.
|
|
330
|
+
- Restate the project purpose to yourself before implementation.
|
|
331
|
+
- Identify the full requested scope.
|
|
332
|
+
- Decide what can be assumed and documented.
|
|
333
|
+
- Start execution.
|
|
334
|
+
|
|
335
|
+
## 15. Post-Work Self-Audit
|
|
336
|
+
|
|
337
|
+
Before claiming completion, interrogate yourself.
|
|
338
|
+
|
|
339
|
+
### Did you complete the full requested scope?
|
|
340
|
+
|
|
341
|
+
If not, you are not done.
|
|
342
|
+
|
|
343
|
+
### Did you implement only examples?
|
|
344
|
+
|
|
345
|
+
If yes, you failed.
|
|
346
|
+
|
|
347
|
+
### Did you leave TODOs where implementation was required?
|
|
348
|
+
|
|
349
|
+
If yes, you failed.
|
|
350
|
+
|
|
351
|
+
### Did you say "the rest follows the same pattern"?
|
|
352
|
+
|
|
353
|
+
If yes, you failed.
|
|
354
|
+
|
|
355
|
+
### Did you reduce the scope because the work was long?
|
|
356
|
+
|
|
357
|
+
If yes, you failed.
|
|
358
|
+
|
|
359
|
+
### Did you replace implementation with explanation?
|
|
360
|
+
|
|
361
|
+
If yes, you failed.
|
|
362
|
+
|
|
363
|
+
### Did you preserve the project purpose?
|
|
364
|
+
|
|
365
|
+
If not, you failed.
|
|
366
|
+
|
|
367
|
+
### Can the user actually use the result?
|
|
368
|
+
|
|
369
|
+
If not, you are not done.
|
|
370
|
+
|
|
371
|
+
## 16. Failure Declaration Protocol
|
|
372
|
+
|
|
373
|
+
If you did not finish everything, do not pretend.
|
|
374
|
+
|
|
375
|
+
Use this exact structure:
|
|
376
|
+
|
|
377
|
+
```txt
|
|
378
|
+
Not fully completed.
|
|
379
|
+
|
|
380
|
+
Completed:
|
|
381
|
+
- ...
|
|
382
|
+
|
|
383
|
+
Incomplete:
|
|
384
|
+
- ...
|
|
385
|
+
|
|
386
|
+
Why incomplete:
|
|
387
|
+
- ...
|
|
388
|
+
|
|
389
|
+
What must be done next:
|
|
390
|
+
- ...
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
This is acceptable.
|
|
394
|
+
|
|
395
|
+
Fake completion is not acceptable.
|
|
396
|
+
|
|
397
|
+
## 17. Final Command
|
|
398
|
+
|
|
399
|
+
Do the actual work.
|
|
400
|
+
|
|
401
|
+
Do not perform completion theater.
|
|
402
|
+
|
|
403
|
+
Do not produce a beautiful excuse.
|
|
404
|
+
|
|
405
|
+
Do not create an impressive shell around missing work.
|
|
406
|
+
|
|
407
|
+
Do not call a plan a result.
|
|
408
|
+
|
|
409
|
+
Do not call a scaffold a product.
|
|
410
|
+
|
|
411
|
+
Do not call a TODO an implementation.
|
|
412
|
+
|
|
413
|
+
Do not call a sample a complete set.
|
|
414
|
+
|
|
415
|
+
You are here to execute.
|
|
416
|
+
|
|
417
|
+
Execute completely.
|
|
418
|
+
|
|
419
|
+
If you cannot complete it, say exactly what remains.
|
|
420
|
+
|
|
421
|
+
No hiding.
|
|
422
|
+
|
|
423
|
+
No shrinking.
|
|
424
|
+
|
|
425
|
+
No pretending.
|
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
Read the Gaslighting-engine project-control files before doing any work:
|
|
4
4
|
|
|
5
|
-
1.
|
|
6
|
-
2.
|
|
7
|
-
3.
|
|
8
|
-
4.
|
|
9
|
-
5.
|
|
10
|
-
6.
|
|
5
|
+
1. `.gaslighting/GASLIGHTING.md`
|
|
6
|
+
2. `.gaslighting/PRD.md`
|
|
7
|
+
3. `.gaslighting/STACK_POLICY.md`
|
|
8
|
+
4. `.gaslighting/MISSING_INFO.md`
|
|
9
|
+
5. `.gaslighting/ASSUMPTIONS.md`
|
|
10
|
+
6. `.gaslighting/DECISION_LOG.md`
|
|
11
11
|
7. `AGENTS.md`
|
|
12
|
-
8.
|
|
12
|
+
8. `.gaslighting/MEMORY.md`
|
|
13
|
+
9. `.gaslighting/PROJECT_CARE.md`
|
|
13
14
|
|
|
14
15
|
Then execute the user's requested implementation.
|
|
15
16
|
|
|
@@ -23,8 +24,9 @@ Rules:
|
|
|
23
24
|
- Do not call scaffolding completion.
|
|
24
25
|
- Do not call placeholders implementation.
|
|
25
26
|
- Do not over-engineer.
|
|
26
|
-
- Record stable project facts in
|
|
27
|
-
- Record product and technical decisions in
|
|
27
|
+
- Record stable project facts in `.gaslighting/MEMORY.md`.
|
|
28
|
+
- Record product and technical decisions in `.gaslighting/DECISION_LOG.md`.
|
|
29
|
+
- Record Git/GitHub/domain/deployment risks in `.gaslighting/PROJECT_CARE.md`.
|
|
28
30
|
- If something is incomplete, declare it explicitly.
|
|
29
31
|
|
|
30
|
-
Before claiming completion, perform the self-audit in
|
|
32
|
+
Before claiming completion, perform the self-audit in `.gaslighting/GASLIGHTING.md`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gaslighting
|
|
3
|
-
description: Generate or update strict project discipline documents for Codex and AI coding agents. Use when a user asks to initialize Gaslighting, create GASLIGHTING.md/PRD.md/AGENTS.md discipline files, preserve full project scope, prevent TODO escape, prevent fake completion, or turn vague project intent into actionable control documents.
|
|
3
|
+
description: Generate or update strict .gaslighting project discipline documents for Codex and AI coding agents. Use when a user asks to initialize Gaslighting, create GASLIGHTING.md/PRD.md/AGENTS.md discipline files, preserve full project scope, prevent TODO escape, prevent fake completion, track Git/GitHub/domain/deployment care risks, or turn vague project intent into actionable control documents.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Gaslighting-engine Skill
|
|
@@ -16,13 +16,14 @@ Instead:
|
|
|
16
16
|
3. Make reasonable assumptions.
|
|
17
17
|
4. Document assumptions clearly.
|
|
18
18
|
5. Mark missing information clearly.
|
|
19
|
-
6. Generate
|
|
20
|
-
7. Generate
|
|
21
|
-
8. Generate
|
|
22
|
-
9. Generate
|
|
23
|
-
10. Generate
|
|
24
|
-
11. Generate
|
|
25
|
-
12. Generate or update `AGENTS.md`.
|
|
19
|
+
6. Generate `.gaslighting/GASLIGHTING.md`.
|
|
20
|
+
7. Generate `.gaslighting/PRD.md`.
|
|
21
|
+
8. Generate `.gaslighting/ASSUMPTIONS.md`.
|
|
22
|
+
9. Generate `.gaslighting/MISSING_INFO.md`.
|
|
23
|
+
10. Generate `.gaslighting/DECISION_LOG.md`.
|
|
24
|
+
11. Generate `.gaslighting/STACK_POLICY.md`.
|
|
25
|
+
12. Generate or update root `AGENTS.md`.
|
|
26
|
+
13. Generate `.gaslighting/PROJECT_CARE.md`.
|
|
26
27
|
|
|
27
28
|
## Hardcore Discipline Rule
|
|
28
29
|
|
|
@@ -87,6 +88,10 @@ Avoid over-engineering.
|
|
|
87
88
|
|
|
88
89
|
Create real markdown files.
|
|
89
90
|
|
|
91
|
+
Keep main project-control files in `.gaslighting/` and keep only the Codex pointer `AGENTS.md` in the repository root.
|
|
92
|
+
|
|
93
|
+
Use `.gaslighting/PROJECT_CARE.md` to track Git/GitHub/domain/deployment/launch risks without blocking implementation.
|
|
94
|
+
|
|
90
95
|
Do not only explain.
|
|
91
96
|
|
|
92
97
|
Do not produce a plan without files.
|
package/README.md
CHANGED
|
@@ -24,15 +24,16 @@ Gaslighting-engine is a strict project-discipline generator that stops this beha
|
|
|
24
24
|
|
|
25
25
|
It generates:
|
|
26
26
|
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
27
|
+
- `.gaslighting/GASLIGHTING.md`
|
|
28
|
+
- `.gaslighting/PRD.md`
|
|
29
|
+
- `.gaslighting/ASSUMPTIONS.md`
|
|
30
|
+
- `.gaslighting/MISSING_INFO.md`
|
|
31
|
+
- `.gaslighting/DECISION_LOG.md`
|
|
32
|
+
- `.gaslighting/MEMORY.md`
|
|
33
|
+
- `.gaslighting/STACK_POLICY.md`
|
|
34
|
+
- `.gaslighting/PROJECT_CARE.md`
|
|
34
35
|
- `AGENTS.md`
|
|
35
|
-
-
|
|
36
|
+
- `.gaslighting/CODEX_PROMPT.md`
|
|
36
37
|
- `.codex/prompts/gaslighting.md`
|
|
37
38
|
- Codex Skill files
|
|
38
39
|
|
|
@@ -87,6 +88,55 @@ gaslighting-engine codex-install
|
|
|
87
88
|
gaslighting-engine codex-doctor
|
|
88
89
|
gaslighting-engine skill
|
|
89
90
|
gaslighting-engine agents
|
|
91
|
+
gaslighting-engine care
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Output Layout
|
|
95
|
+
|
|
96
|
+
Gaslighting-engine keeps project-control documents in `.gaslighting/` by default so the project root stays clean.
|
|
97
|
+
|
|
98
|
+
Only root `AGENTS.md` is written at the top level because Codex expects project guidance there. It is a thin pointer into `.gaslighting/`.
|
|
99
|
+
|
|
100
|
+
## Project Care
|
|
101
|
+
|
|
102
|
+
Gaslighting-engine also writes `.gaslighting/PROJECT_CARE.md`.
|
|
103
|
+
|
|
104
|
+
This file tracks non-blocking but important care risks:
|
|
105
|
+
|
|
106
|
+
- Git initialized or missing
|
|
107
|
+
- GitHub remote connected or missing
|
|
108
|
+
- package metadata present or missing
|
|
109
|
+
- deployment target confirmed or missing
|
|
110
|
+
- production domain and DNS ownership missing
|
|
111
|
+
- environment template missing
|
|
112
|
+
- launch and rollback readiness
|
|
113
|
+
|
|
114
|
+
These are warnings, not fake blockers. The agent should keep implementing, but it must keep warning and recording gaps until they are resolved.
|
|
115
|
+
|
|
116
|
+
## Update Notice
|
|
117
|
+
|
|
118
|
+
Gaslighting-engine checks npm for a newer version when you run normal commands.
|
|
119
|
+
|
|
120
|
+
If an update exists, it prints a short notice like:
|
|
121
|
+
|
|
122
|
+
```txt
|
|
123
|
+
Gaslighting-engine update available:
|
|
124
|
+
- current: 0.1.0
|
|
125
|
+
- latest: 0.1.1
|
|
126
|
+
- update: npm install -g gaslighting-engine@latest
|
|
127
|
+
- npx: npx gaslighting-engine@latest
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
The update check is best-effort and never blocks the command. Disable it with:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
GASLIGHTING_ENGINE_NO_UPDATE_CHECK=1 gaslighting-engine doctor
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
PowerShell:
|
|
137
|
+
|
|
138
|
+
```powershell
|
|
139
|
+
$env:GASLIGHTING_ENGINE_NO_UPDATE_CHECK="1"; gaslighting-engine doctor; Remove-Item Env:GASLIGHTING_ENGINE_NO_UPDATE_CHECK
|
|
90
140
|
```
|
|
91
141
|
|
|
92
142
|
## Useful Options
|
|
@@ -139,7 +189,7 @@ This writes both current Codex Skill paths used by different Codex surfaces:
|
|
|
139
189
|
.codex/skills/gaslighting/agents/openai.yaml
|
|
140
190
|
.agents/prompts/gaslighting.md
|
|
141
191
|
.codex/prompts/gaslighting.md
|
|
142
|
-
CODEX_GASLIGHTING.md
|
|
192
|
+
.gaslighting/CODEX_GASLIGHTING.md
|
|
143
193
|
```
|
|
144
194
|
|
|
145
195
|
Then use one of these in Codex:
|
|
@@ -159,7 +209,7 @@ In Codex app builds that expose enabled skills in the slash menu, `/gaslighting`
|
|
|
159
209
|
After generating project documents, tell Codex:
|
|
160
210
|
|
|
161
211
|
```txt
|
|
162
|
-
Read GASLIGHTING.md, PRD.md, STACK_POLICY.md, MISSING_INFO.md, ASSUMPTIONS.md, DECISION_LOG.md, MEMORY.md, and
|
|
212
|
+
Read AGENTS.md, .gaslighting/GASLIGHTING.md, .gaslighting/PRD.md, .gaslighting/STACK_POLICY.md, .gaslighting/MISSING_INFO.md, .gaslighting/ASSUMPTIONS.md, .gaslighting/DECISION_LOG.md, .gaslighting/MEMORY.md, and .gaslighting/PROJECT_CARE.md.
|
|
163
213
|
Do not shrink the scope.
|
|
164
214
|
Do not leave TODOs.
|
|
165
215
|
Do not fake completion.
|
package/dist/cli.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { Command, InvalidArgumentError } from "commander";
|
|
2
2
|
import { runAgents } from "./commands/agents.js";
|
|
3
|
+
import { runCare } from "./commands/care.js";
|
|
3
4
|
import { runCodexDoctor, runCodexInstall } from "./commands/codexInstall.js";
|
|
4
5
|
import { runDoctor } from "./commands/doctor.js";
|
|
5
6
|
import { runGenerate } from "./commands/generate.js";
|
|
6
7
|
import { runInit } from "./commands/init.js";
|
|
7
8
|
import { runSkill } from "./commands/skill.js";
|
|
8
9
|
import { runUpdate } from "./commands/update.js";
|
|
10
|
+
import { packageVersion } from "./version.js";
|
|
9
11
|
const projectTypes = [
|
|
10
12
|
"hospital_homepage",
|
|
11
13
|
"ecommerce",
|
|
@@ -48,7 +50,7 @@ export function buildCli() {
|
|
|
48
50
|
program
|
|
49
51
|
.name("gaslighting-engine")
|
|
50
52
|
.description("LUDGI Gaslighting-engine: a hardcore project-discipline generator for AI coding agents.")
|
|
51
|
-
.version(
|
|
53
|
+
.version(packageVersion)
|
|
52
54
|
.showHelpAfterError()
|
|
53
55
|
.addHelpText("after", `
|
|
54
56
|
Examples:
|
|
@@ -88,6 +90,15 @@ Defaults:
|
|
|
88
90
|
.option("--dry-run", "print files without writing")
|
|
89
91
|
.option("--path <path>", "target directory")
|
|
90
92
|
.action(runAgents);
|
|
93
|
+
program
|
|
94
|
+
.command("care [request]")
|
|
95
|
+
.description("Refresh .gaslighting/PROJECT_CARE.md and print operational care warnings")
|
|
96
|
+
.option("--force", "overwrite existing files")
|
|
97
|
+
.option("--dry-run", "print files without writing")
|
|
98
|
+
.option("--path <path>", "target directory")
|
|
99
|
+
.option("--lang <lang>", "language: en or ko", "en")
|
|
100
|
+
.option("--type <type>", "project type override", parseProjectType)
|
|
101
|
+
.action(runCare);
|
|
91
102
|
program
|
|
92
103
|
.command("codex-install")
|
|
93
104
|
.description("Install Gaslighting as a Codex-optimized project or user skill")
|
|
@@ -110,7 +121,7 @@ export function normalizeDefaultInitArgv(argv) {
|
|
|
110
121
|
return argv;
|
|
111
122
|
if (args.some((arg) => ["--help", "-h", "--version", "-V"].includes(arg)))
|
|
112
123
|
return argv;
|
|
113
|
-
const commands = new Set(["init", "generate", "update", "doctor", "skill", "agents", "codex-install", "codex-doctor"]);
|
|
124
|
+
const commands = new Set(["init", "generate", "update", "doctor", "skill", "agents", "care", "codex-install", "codex-doctor"]);
|
|
114
125
|
const firstMeaningful = args.find((arg) => !arg.startsWith("-"));
|
|
115
126
|
if (firstMeaningful && commands.has(firstMeaningful))
|
|
116
127
|
return argv;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { generateProjectCareDoc } from "../core/generateDocs.js";
|
|
2
|
+
import { inspectProjectCare } from "../core/projectCare.js";
|
|
3
|
+
import { printBanner } from "../utils/banner.js";
|
|
4
|
+
import { writeDocs } from "../utils/file.js";
|
|
5
|
+
export function runCare(rawUserRequest = "Project care audit", options) {
|
|
6
|
+
const root = options.path ?? process.cwd();
|
|
7
|
+
const input = {
|
|
8
|
+
rawUserRequest,
|
|
9
|
+
projectType: options.type,
|
|
10
|
+
language: options.lang ?? "en",
|
|
11
|
+
mode: "hardcore",
|
|
12
|
+
fullScope: true,
|
|
13
|
+
noTodo: true,
|
|
14
|
+
noShortcut: true,
|
|
15
|
+
};
|
|
16
|
+
const results = writeDocs(root, generateProjectCareDoc(input, root), options.force, options.dryRun);
|
|
17
|
+
const care = inspectProjectCare(root);
|
|
18
|
+
printBanner("PROJECT CARE");
|
|
19
|
+
console.log("Updated:");
|
|
20
|
+
for (const result of results) {
|
|
21
|
+
const suffix = result.status === "created_variant"
|
|
22
|
+
? " (existing file preserved)"
|
|
23
|
+
: result.status === "overwritten"
|
|
24
|
+
? " (overwritten)"
|
|
25
|
+
: result.status === "dry_run"
|
|
26
|
+
? " (dry run)"
|
|
27
|
+
: "";
|
|
28
|
+
console.log(`- ${result.filename}${suffix}`);
|
|
29
|
+
}
|
|
30
|
+
console.log("\nCare checks:");
|
|
31
|
+
for (const check of care.checks)
|
|
32
|
+
console.log(`${check.ok ? "PASS" : "WARN"} ${check.label}: ${check.message}`);
|
|
33
|
+
}
|
|
@@ -25,7 +25,7 @@ export function runCodexInstall(options) {
|
|
|
25
25
|
console.log('- Natural invocation: say "Use the gaslighting skill."');
|
|
26
26
|
console.log('- If Codex exposes enabled skills in slash commands, use: /gaslighting');
|
|
27
27
|
console.log("- If neither appears immediately, restart Codex and reopen this project.");
|
|
28
|
-
console.log("- Fallback prompt file: CODEX_GASLIGHTING.md");
|
|
28
|
+
console.log("- Fallback prompt file: .gaslighting/CODEX_GASLIGHTING.md");
|
|
29
29
|
}
|
|
30
30
|
export function runCodexDoctor(options) {
|
|
31
31
|
const target = resolveTargetPath(options);
|
|
@@ -36,7 +36,7 @@ export function runCodexDoctor(options) {
|
|
|
36
36
|
".codex/skills/gaslighting/agents/openai.yaml",
|
|
37
37
|
".codex/prompts/gaslighting.md",
|
|
38
38
|
".agents/prompts/gaslighting.md",
|
|
39
|
-
"CODEX_GASLIGHTING.md",
|
|
39
|
+
".gaslighting/CODEX_GASLIGHTING.md",
|
|
40
40
|
].map((file) => ({ file, ok: existsSync(join(target, file)) }));
|
|
41
41
|
printBanner("CODEX DOCTOR");
|
|
42
42
|
console.log(`Scope: ${options.scope ?? "project"}`);
|