elliot-stack 1.0.24 → 1.0.27

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
@@ -11,7 +11,7 @@ A curated set of Claude Code skills by Elliot Drel. One command installs them al
11
11
  npx elliot-stack@latest
12
12
  ```
13
13
 
14
- This installs skills to `~/.agents/skills/` and symlinks them into `~/.claude/skills/`, then registers a `SessionStart` hook so your skills stay up to date automatically.
14
+ This installs skills to `~/.agents/skills/` and symlinks them into `~/.claude/skills/`, then registers a `SessionStart` hook so your skills stay up to date automatically. Any agent that reads from `~/.agents/skills/` (OpenClaw, Codex, ChatGPT, Cursor, and others) will pick them up automatically with no extra config.
15
15
 
16
16
  ## Skills
17
17
 
@@ -32,11 +32,15 @@ This installs skills to `~/.agents/skills/` and symlinks them into `~/.claude/sk
32
32
 
33
33
  Hooks install to `~/.claude/hooks/` and are auto-registered in your `~/.claude/settings.json`.
34
34
 
35
+ Important: hooks are a Claude Code feature. Skills are stored in `~/.agents/skills/`
36
+ and linked into Claude, but hook scripts and hook registration can only be installed
37
+ in Claude's config (`~/.claude/hooks/` and `~/.claude/settings.json`).
38
+
35
39
  ## How it works
36
40
 
37
- - Skills install to `~/.agents/skills/estack-*/` (symlinked from `~/.claude/skills/estack-*/`)
38
- - Hooks install to `~/.claude/hooks/` and are registered in `~/.claude/settings.json`
39
- - A `SessionStart` hook auto-updates both each time you open Claude Code
41
+ - Skills install to `~/.agents/skills/estack-*/` (symlinked from `~/.claude/skills/estack-*/`; auto-detected by any agent that reads `~/.agents/skills/`, including OpenClaw, Codex, ChatGPT, and Cursor)
42
+ - Hooks are Claude Code-only: they install to `~/.claude/hooks/` and are registered in `~/.claude/settings.json`
43
+ - A `SessionStart` hook auto-updates skills each time you open Claude Code
40
44
  - If you've made local edits to a skill or hook, the installer detects the conflict and lets you choose: overwrite, skip, or merge
41
45
  - Every skill carries its own semver (`version:` in SKILL.md frontmatter; hooks use a `// @version` comment), independent of the package version — update messages show exactly what moved, e.g. `estack-chris-voss (1.0.0 → 1.1.0)`. Under the hood, updates are detected by content hash, so a change can never be missed; a release-time check (`scripts/check-versions.cjs`) guarantees every content change ships with a version bump.
42
46
 
@@ -50,7 +54,7 @@ npx elliot-stack@latest
50
54
 
51
55
  ## Requirements
52
56
 
53
- - [Claude Code](https://claude.ai/code) CLI installed
57
+ - [Claude Code](https://claude.ai/code) CLI installed (other agents that read `~/.agents/skills/` work too)
54
58
  - Node.js 18+
55
59
 
56
60
  ## Contributing
package/bin/install.cjs CHANGED
@@ -885,13 +885,13 @@ async function main() {
885
885
  // 11. Summary output
886
886
  if (DRY_RUN) {
887
887
  console.log('\n[dry run] No files were changed. Run with --install to apply.\n');
888
- console.log(' ' + installedCount + ' skill' + (installedCount !== 1 ? 's' : '') + ' would be installed/updated in ~/.agents/skills/ (linked from ~/.claude/skills/)');
888
+ console.log(' ' + installedCount + ' skill' + (installedCount !== 1 ? 's' : '') + ' would be installed/updated in ~/.agents/skills/ (linked from ~/.claude/skills/; auto-detected by any agent that reads ~/.agents/skills/)');
889
889
  if (installedHookCount > 0) {
890
890
  console.log(' ' + installedHookCount + ' hook' + (installedHookCount !== 1 ? 's' : '') + ' would be installed/updated in ~/.claude/hooks/');
891
891
  }
892
892
  } else {
893
893
  console.log('\nestack installed successfully!\n');
894
- console.log(' ' + installedCount + ' skill' + (installedCount !== 1 ? 's' : '') + ' installed to ~/.agents/skills/ (symlinked from ~/.claude/skills/)');
894
+ console.log(' ' + installedCount + ' skill' + (installedCount !== 1 ? 's' : '') + ' installed to ~/.agents/skills/ (symlinked from ~/.claude/skills/; auto-detected by any agent that reads ~/.agents/skills/)');
895
895
  if (installedHookCount > 0) {
896
896
  console.log(' ' + installedHookCount + ' hook' + (installedHookCount !== 1 ? 's' : '') + ' installed to ~/.claude/hooks/');
897
897
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "elliot-stack",
3
- "version": "1.0.24",
3
+ "version": "1.0.27",
4
4
  "description": "Elliot's skill stack for Claude Code — install via npx elliot-stack@latest",
5
5
  "bin": {
6
6
  "elliot-stack": "bin/install.cjs"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: estack-active-learning-tutor
3
- version: 1.0.0
3
+ version: 1.0.2
4
4
  description: (active-learning-tutor) Tutors a student through exam preparation using active learning — questioning, gap diagnosis, and concept mastery tracking. Use when the student says they want to study, learn, prep for an exam, be quizzed on a chapter, work through a practice test together, or be taught a topic conceptually rather than lectured.
5
5
  disable-model-invocation: true
6
6
  ---
@@ -339,40 +339,6 @@ When in doubt about the shape of a Teaching turn, read `references/teaching-turn
339
339
 
340
340
  ---
341
341
 
342
- ## Skill Feedback
343
- ---
344
-
345
- ## Skill Feedback
346
-
347
- If the user shares feedback about this skill — a bug, something confusing, a missing feature, or a suggestion — ask them to describe it in a bit more detail (what they expected, what happened, and any relevant context). Then file the issue using whichever method is available:
348
-
349
- **If `gh` is installed** (`gh --version` succeeds), create the issue directly:
350
-
351
- ```bash
352
- gh issue create \
353
- --repo ElliotDrel/e-stack \
354
- --title "estack-active-learning-tutor: <concise summary>" \
355
- --body "<description from user feedback — expected vs. actual behavior and context>"
356
- ```
357
-
358
- **If `gh` is not installed**, build a pre-filled URL:
359
-
360
- ```bash
361
- python3 -c "
362
- import urllib.parse
363
- title = 'estack-active-learning-tutor: <concise summary>'
364
- body = '<description from user feedback — expected vs. actual behavior and context>'
365
- base = 'https://github.com/ElliotDrel/e-stack/issues/new'
366
- print(base + '?title=' + urllib.parse.quote(title) + '&body=' + urllib.parse.quote(body))
367
- "
368
- ```
369
-
370
- Share the printed URL with the user and offer to open it in their browser.
371
-
372
- They can also click it directly, review the pre-filled title and body, and click **Submit new issue**.
373
-
374
- ---
375
-
376
342
  ## Skill Feedback
377
343
 
378
344
  If the user shares feedback about this skill — a bug, something confusing, a missing feature, or a suggestion — ask them to describe it in a bit more detail (what they expected, what happened, and any relevant context). Then file the issue using whichever method is available:
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: estack-better-title
3
- version: 1.0.0
3
+ version: 1.0.2
4
4
  description: (better-title) Suggest better chat session titles and rename the session
5
5
  disable-model-invocation: true
6
6
  allowed-tools: Bash, AskUserQuestion
@@ -77,69 +77,6 @@ gh issue create \
77
77
  --body "<description from user feedback — expected vs. actual behavior and context>"
78
78
  ```
79
79
 
80
- **If `gh` is not installed**, build a pre-filled URL and share it so the user can click, review, and submit:
81
-
82
- ```bash
83
- python3 -c "
84
- import urllib.parse
85
- title = 'estack-better-title: <concise summary>'
86
- body = '<description from user feedback — expected vs. actual behavior and context>'
87
- base = 'https://github.com/ElliotDrel/e-stack/issues/new'
88
- print(base + '?title=' + urllib.parse.quote(title) + '&body=' + urllib.parse.quote(body))
89
- "
90
- ```
91
-
92
- Share the printed URL with the user. They click it, review the pre-filled title and body, then click **Submit new issue**.
93
-
94
- ---
95
-
96
- ## Skill Feedback
97
- ---
98
-
99
- ## Skill Feedback
100
-
101
- If the user shares feedback about this skill — a bug, something confusing, a missing feature, or a suggestion — ask them to describe it in a bit more detail (what they expected, what happened, and any relevant context). Then file the issue using whichever method is available:
102
-
103
- **If `gh` is installed** (`gh --version` succeeds), create the issue directly:
104
-
105
- ```bash
106
- gh issue create \
107
- --repo ElliotDrel/e-stack \
108
- --title "estack-better-title: <concise summary>" \
109
- --body "<description from user feedback — expected vs. actual behavior and context>"
110
- ```
111
-
112
- **If `gh` is not installed**, build a pre-filled URL:
113
-
114
- ```bash
115
- python3 -c "
116
- import urllib.parse
117
- title = 'estack-better-title: <concise summary>'
118
- body = '<description from user feedback — expected vs. actual behavior and context>'
119
- base = 'https://github.com/ElliotDrel/e-stack/issues/new'
120
- print(base + '?title=' + urllib.parse.quote(title) + '&body=' + urllib.parse.quote(body))
121
- "
122
- ```
123
-
124
- Share the printed URL with the user and offer to open it in their browser.
125
-
126
- They can also click it directly, review the pre-filled title and body, and click **Submit new issue**.
127
-
128
- ---
129
-
130
- ## Skill Feedback
131
-
132
- If the user shares feedback about this skill — a bug, something confusing, a missing feature, or a suggestion — ask them to describe it in a bit more detail (what they expected, what happened, and any relevant context). Then file the issue using whichever method is available:
133
-
134
- **If `gh` is installed** (`gh --version` succeeds), create the issue directly:
135
-
136
- ```bash
137
- gh issue create \
138
- --repo ElliotDrel/e-stack \
139
- --title "estack-better-title: <concise summary>" \
140
- --body "<description from user feedback — expected vs. actual behavior and context>"
141
- ```
142
-
143
80
  **If `gh` is not installed**, build a pre-filled URL:
144
81
 
145
82
  ```bash
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: estack-chris-voss
3
- version: 1.0.0
3
+ version: 1.0.2
4
4
  description: >
5
5
  (chris-voss) Applies Chris Voss negotiation principles from *Never Split the Difference* to any situation
6
6
  where understanding human psychology, persuasion, or influence would improve the output. Use
@@ -93,69 +93,6 @@ gh issue create \
93
93
  --body "<description from user feedback — expected vs. actual behavior and context>"
94
94
  ```
95
95
 
96
- **If `gh` is not installed**, build a pre-filled URL and share it so the user can click, review, and submit:
97
-
98
- ```bash
99
- python3 -c "
100
- import urllib.parse
101
- title = 'estack-chris-voss: <concise summary>'
102
- body = '<description from user feedback — expected vs. actual behavior and context>'
103
- base = 'https://github.com/ElliotDrel/e-stack/issues/new'
104
- print(base + '?title=' + urllib.parse.quote(title) + '&body=' + urllib.parse.quote(body))
105
- "
106
- ```
107
-
108
- Share the printed URL with the user. They click it, review the pre-filled title and body, then click **Submit new issue**.
109
-
110
- ---
111
-
112
- ## Skill Feedback
113
- ---
114
-
115
- ## Skill Feedback
116
-
117
- If the user shares feedback about this skill — a bug, something confusing, a missing feature, or a suggestion — ask them to describe it in a bit more detail (what they expected, what happened, and any relevant context). Then file the issue using whichever method is available:
118
-
119
- **If `gh` is installed** (`gh --version` succeeds), create the issue directly:
120
-
121
- ```bash
122
- gh issue create \
123
- --repo ElliotDrel/e-stack \
124
- --title "estack-chris-voss: <concise summary>" \
125
- --body "<description from user feedback — expected vs. actual behavior and context>"
126
- ```
127
-
128
- **If `gh` is not installed**, build a pre-filled URL:
129
-
130
- ```bash
131
- python3 -c "
132
- import urllib.parse
133
- title = 'estack-chris-voss: <concise summary>'
134
- body = '<description from user feedback — expected vs. actual behavior and context>'
135
- base = 'https://github.com/ElliotDrel/e-stack/issues/new'
136
- print(base + '?title=' + urllib.parse.quote(title) + '&body=' + urllib.parse.quote(body))
137
- "
138
- ```
139
-
140
- Share the printed URL with the user and offer to open it in their browser.
141
-
142
- They can also click it directly, review the pre-filled title and body, and click **Submit new issue**.
143
-
144
- ---
145
-
146
- ## Skill Feedback
147
-
148
- If the user shares feedback about this skill — a bug, something confusing, a missing feature, or a suggestion — ask them to describe it in a bit more detail (what they expected, what happened, and any relevant context). Then file the issue using whichever method is available:
149
-
150
- **If `gh` is installed** (`gh --version` succeeds), create the issue directly:
151
-
152
- ```bash
153
- gh issue create \
154
- --repo ElliotDrel/e-stack \
155
- --title "estack-chris-voss: <concise summary>" \
156
- --body "<description from user feedback — expected vs. actual behavior and context>"
157
- ```
158
-
159
96
  **If `gh` is not installed**, build a pre-filled URL:
160
97
 
161
98
  ```bash
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: estack-customer-discovery
3
- version: 1.0.0
3
+ version: 1.0.2
4
4
  description: (customer-discovery) Guide users through customer discovery — validating business ideas, identifying target customers, crafting outreach, preparing interview questions, and analyzing interview results. Use this skill whenever the user mentions customer discovery, customer interviews, validating an idea, market research, finding product-market fit, talking to customers, outreach messages, interview guides, or analyzing customer feedback. Also use when someone says they have a business idea and want to test it, or when they're preparing to talk to potential customers.
5
5
  ---
6
6
 
@@ -73,69 +73,6 @@ gh issue create \
73
73
  --body "<description from user feedback — expected vs. actual behavior and context>"
74
74
  ```
75
75
 
76
- **If `gh` is not installed**, build a pre-filled URL and share it so the user can click, review, and submit:
77
-
78
- ```bash
79
- python3 -c "
80
- import urllib.parse
81
- title = 'estack-customer-discovery: <concise summary>'
82
- body = '<description from user feedback — expected vs. actual behavior and context>'
83
- base = 'https://github.com/ElliotDrel/e-stack/issues/new'
84
- print(base + '?title=' + urllib.parse.quote(title) + '&body=' + urllib.parse.quote(body))
85
- "
86
- ```
87
-
88
- Share the printed URL with the user. They click it, review the pre-filled title and body, then click **Submit new issue**.
89
-
90
- ---
91
-
92
- ## Skill Feedback
93
- ---
94
-
95
- ## Skill Feedback
96
-
97
- If the user shares feedback about this skill — a bug, something confusing, a missing feature, or a suggestion — ask them to describe it in a bit more detail (what they expected, what happened, and any relevant context). Then file the issue using whichever method is available:
98
-
99
- **If `gh` is installed** (`gh --version` succeeds), create the issue directly:
100
-
101
- ```bash
102
- gh issue create \
103
- --repo ElliotDrel/e-stack \
104
- --title "estack-customer-discovery: <concise summary>" \
105
- --body "<description from user feedback — expected vs. actual behavior and context>"
106
- ```
107
-
108
- **If `gh` is not installed**, build a pre-filled URL:
109
-
110
- ```bash
111
- python3 -c "
112
- import urllib.parse
113
- title = 'estack-customer-discovery: <concise summary>'
114
- body = '<description from user feedback — expected vs. actual behavior and context>'
115
- base = 'https://github.com/ElliotDrel/e-stack/issues/new'
116
- print(base + '?title=' + urllib.parse.quote(title) + '&body=' + urllib.parse.quote(body))
117
- "
118
- ```
119
-
120
- Share the printed URL with the user and offer to open it in their browser.
121
-
122
- They can also click it directly, review the pre-filled title and body, and click **Submit new issue**.
123
-
124
- ---
125
-
126
- ## Skill Feedback
127
-
128
- If the user shares feedback about this skill — a bug, something confusing, a missing feature, or a suggestion — ask them to describe it in a bit more detail (what they expected, what happened, and any relevant context). Then file the issue using whichever method is available:
129
-
130
- **If `gh` is installed** (`gh --version` succeeds), create the issue directly:
131
-
132
- ```bash
133
- gh issue create \
134
- --repo ElliotDrel/e-stack \
135
- --title "estack-customer-discovery: <concise summary>" \
136
- --body "<description from user feedback — expected vs. actual behavior and context>"
137
- ```
138
-
139
76
  **If `gh` is not installed**, build a pre-filled URL:
140
77
 
141
78
  ```bash
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: estack-flight-planner
3
- version: 1.0.0
3
+ version: 1.0.2
4
4
  description: (flight-planner) Find and rank flights between any two airports with config-driven preferences (budget, airlines, nonstop, time-of-day) and optional ground-shuttle pairing. Uses SerpAPI Google Flights (or WebSearch fallback). Saves preferences to `~/.flight-planner/config.json` and logs every search.
5
5
  disable-model-invocation: true
6
6
  ---
@@ -334,74 +334,6 @@ If the user doesn't have a SerpAPI key and asks for help getting one:
334
334
 
335
335
  ## Skill Feedback
336
336
 
337
- If the user shares feedback about this skill — a bug, something confusing, a missing feature, or a suggestion — ask them to describe it in a bit more detail (what they expected, what happened, and any relevant context). Then build a pre-filled GitHub issue URL and share it so the user can click, review, and submit:
338
-
339
- ```bash
340
- python3 -c "
341
- import urllib.parse
342
- title = 'estack-flight-planner: <concise summary>'
343
- body = '<description from user feedback — expected vs. actual behavior and context>'
344
- base = 'https://github.com/ElliotDrel/e-stack/issues/new'
345
- print(base + '?title=' + urllib.parse.quote(title) + '&body=' + urllib.parse.quote(body))
346
- "
347
- ```
348
-
349
- Share the printed URL with the user. They click it, review the pre-filled title and body, then click **Submit new issue**.
350
-
351
- ## Adding a shuttle service to your config
352
-
353
- If you regularly use a shuttle to your airport, add it to your config so the skill pairs flights with shuttle runs automatically:
354
-
355
- ```json
356
- "shuttle_service": {
357
- "name": "Your Shuttle Co.",
358
- "schedule_urls": ["https://yourshuttle.example.com/schedule"],
359
- "costs": {"ORD": 60, "MDW": 55},
360
- "home_timezone": "America/New_York",
361
- "airport_timezones": {"ORD": "America/Chicago", "MDW": "America/Chicago"}
362
- }
363
- ```
364
-
365
- See `references/shuttle_schedules.md` for the full schema, JSON format the pairing script expects, and tips on extracting schedule data from a shuttle company's website.
366
-
367
- ---
368
-
369
- ## Skill Feedback
370
- ---
371
-
372
- ## Skill Feedback
373
-
374
- If the user shares feedback about this skill — a bug, something confusing, a missing feature, or a suggestion — ask them to describe it in a bit more detail (what they expected, what happened, and any relevant context). Then file the issue using whichever method is available:
375
-
376
- **If `gh` is installed** (`gh --version` succeeds), create the issue directly:
377
-
378
- ```bash
379
- gh issue create \
380
- --repo ElliotDrel/e-stack \
381
- --title "estack-flight-planner: <concise summary>" \
382
- --body "<description from user feedback — expected vs. actual behavior and context>"
383
- ```
384
-
385
- **If `gh` is not installed**, build a pre-filled URL:
386
-
387
- ```bash
388
- python3 -c "
389
- import urllib.parse
390
- title = 'estack-flight-planner: <concise summary>'
391
- body = '<description from user feedback — expected vs. actual behavior and context>'
392
- base = 'https://github.com/ElliotDrel/e-stack/issues/new'
393
- print(base + '?title=' + urllib.parse.quote(title) + '&body=' + urllib.parse.quote(body))
394
- "
395
- ```
396
-
397
- Share the printed URL with the user and offer to open it in their browser.
398
-
399
- They can also click it directly, review the pre-filled title and body, and click **Submit new issue**.
400
-
401
- ---
402
-
403
- ## Skill Feedback
404
-
405
337
  If the user shares feedback about this skill — a bug, something confusing, a missing feature, or a suggestion — ask them to describe it in a bit more detail (what they expected, what happened, and any relevant context). Then file the issue using whichever method is available:
406
338
 
407
339
  **If `gh` is installed** (`gh --version` succeeds), create the issue directly:
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: estack-github-issue-tracker
3
- version: 1.0.0
3
+ version: 1.0.2
4
4
  description: >
5
5
  (github-issue-tracker) GitHub issue tracker management. Checks all open issues the user is involved in,
6
6
  finds related/duplicate issues, reports what changed, and recommends next steps.
@@ -324,58 +324,6 @@ $ARGUMENTS
324
324
 
325
325
  ## Skill Feedback
326
326
 
327
- If the user shares feedback about this skill — a bug, something confusing, a missing feature, or a suggestion — ask them to describe it in a bit more detail (what they expected, what happened, and any relevant context). Then build a pre-filled GitHub issue URL and share it so the user can click, review, and submit:
328
-
329
- ```bash
330
- python3 -c "
331
- import urllib.parse
332
- title = 'estack-github-issue-tracker: <concise summary>'
333
- body = '<description from user feedback — expected vs. actual behavior and context>'
334
- base = 'https://github.com/ElliotDrel/e-stack/issues/new'
335
- print(base + '?title=' + urllib.parse.quote(title) + '&body=' + urllib.parse.quote(body))
336
- "
337
- ```
338
-
339
- Share the printed URL with the user. They click it, review the pre-filled title and body, then click **Submit new issue**.
340
-
341
- ---
342
-
343
- ## Skill Feedback
344
- ---
345
-
346
- ## Skill Feedback
347
-
348
- If the user shares feedback about this skill — a bug, something confusing, a missing feature, or a suggestion — ask them to describe it in a bit more detail (what they expected, what happened, and any relevant context). Then file the issue using whichever method is available:
349
-
350
- **If `gh` is installed** (`gh --version` succeeds), create the issue directly:
351
-
352
- ```bash
353
- gh issue create \
354
- --repo ElliotDrel/e-stack \
355
- --title "estack-github-issue-tracker: <concise summary>" \
356
- --body "<description from user feedback — expected vs. actual behavior and context>"
357
- ```
358
-
359
- **If `gh` is not installed**, build a pre-filled URL:
360
-
361
- ```bash
362
- python3 -c "
363
- import urllib.parse
364
- title = 'estack-github-issue-tracker: <concise summary>'
365
- body = '<description from user feedback — expected vs. actual behavior and context>'
366
- base = 'https://github.com/ElliotDrel/e-stack/issues/new'
367
- print(base + '?title=' + urllib.parse.quote(title) + '&body=' + urllib.parse.quote(body))
368
- "
369
- ```
370
-
371
- Share the printed URL with the user and offer to open it in their browser.
372
-
373
- They can also click it directly, review the pre-filled title and body, and click **Submit new issue**.
374
-
375
- ---
376
-
377
- ## Skill Feedback
378
-
379
327
  If the user shares feedback about this skill — a bug, something confusing, a missing feature, or a suggestion — ask them to describe it in a bit more detail (what they expected, what happened, and any relevant context). Then file the issue using whichever method is available:
380
328
 
381
329
  **If `gh` is installed** (`gh --version` succeeds), create the issue directly:
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: estack-prompt-builder-coach
3
- version: 1.0.0
3
+ version: 1.0.2
4
4
  description: (prompt-builder-coach) Use whenever you or the user need to write, sharpen, audit, or scope a prompt or work request for an AI agent or model. This is a four-part kit covering shaping a fuzzy idea into a decided goal, building a prompt from scratch, auditing a draft request that feels vague, and defining what "done" looks like when the task is fuzzy. Trigger when the user says "help me write a prompt", "build me a prompt", "audit this prompt", "make this request better", "why is the AI giving me generic output", "I don't know what I want", "I have a rough idea", "what should done look like", or when handing a task to another agent and wanting it to land. Use it even when the user did not say the word "prompt" but is clearly trying to get an AI to do consequential work. Do not use for quick factual lookups or for executing an already well-defined task.
5
5
  ---
6
6
 
@@ -79,3 +79,33 @@ Every finished prompt or brief gets saved to a markdown file with a descriptive
79
79
  - Do not run a part from memory. Always read its file on entry, per Rule 1.
80
80
  - Do not over-apply the kit. A quick ask gets a quick prompt, not a six-field brief.
81
81
  </guardrails>
82
+ ---
83
+
84
+ ## Skill Feedback
85
+
86
+ If the user shares feedback about this skill — a bug, something confusing, a missing feature, or a suggestion — ask them to describe it in a bit more detail (what they expected, what happened, and any relevant context). Then file the issue using whichever method is available:
87
+
88
+ **If `gh` is installed** (`gh --version` succeeds), create the issue directly:
89
+
90
+ ```bash
91
+ gh issue create \
92
+ --repo ElliotDrel/e-stack \
93
+ --title "estack-prompt-builder-coach: <concise summary>" \
94
+ --body "<description from user feedback — expected vs. actual behavior and context>"
95
+ ```
96
+
97
+ **If `gh` is not installed**, build a pre-filled URL:
98
+
99
+ ```bash
100
+ python3 -c "
101
+ import urllib.parse
102
+ title = 'estack-prompt-builder-coach: <concise summary>'
103
+ body = '<description from user feedback — expected vs. actual behavior and context>'
104
+ base = 'https://github.com/ElliotDrel/e-stack/issues/new'
105
+ print(base + '?title=' + urllib.parse.quote(title) + '&body=' + urllib.parse.quote(body))
106
+ "
107
+ ```
108
+
109
+ Share the printed URL with the user and offer to open it in their browser.
110
+
111
+ They can also click it directly, review the pre-filled title and body, and click **Submit new issue**.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: estack-read-claude-session-history
3
- version: 1.0.0
3
+ version: 1.0.2
4
4
  description: (read-claude-session-history) Invoke for ANY task involving Claude Code session history, transcripts, or .jsonl files — this is the only way to read, parse, or search them; do not attempt to use Bash or Read on .jsonl directly. Use for: recovering context after /compact ("what were we doing before compact"), advisor response retrieval ("what did the advisor say"), subagent output collection ("get all subagent finals"), cross-project session search by keyword, session listing and triage, UUID and title lookup, resume-command generation, file-edit and tool-call forensics, session diff between two sessions or subagents, weekly work journal, day timeline of activity blocks and idle gaps, engagement/attention-time accounting (active vs elapsed time, break detection, parallel-chat-safe totals), recovering from .claude-backups after data loss, session count queries, and reading the last agent message before a crash or interrupt. Trigger phrases: "session history", "before compact", "what did claude do", "what did I work on", "search my sessions", "find that session", "what did the advisor say", "what did the agent edit", "from the backup", "list my sessions", "subagent outputs", "session journal", "resume previous", "which files did claude touch", "go back and look", "what did I do yesterday", "where did my day go", "timeline of my day", "how much time on", "how long did that actually take", "how much did I actually work", "active time", "time I spent".
5
5
  ---
6
6
 
@@ -202,3 +202,33 @@ See `references/recipes.md` for fuller multi-step workflows.
202
202
  ## When the modes return empty
203
203
 
204
204
  If a mode returns empty/unexpected output, run `--mode debug` first. It prints the entry-type distribution, content-block types, and probes for advisor + compact markers — useful when the transcript schema has drifted or when a session was truncated.
205
+ ---
206
+
207
+ ## Skill Feedback
208
+
209
+ If the user shares feedback about this skill — a bug, something confusing, a missing feature, or a suggestion — ask them to describe it in a bit more detail (what they expected, what happened, and any relevant context). Then file the issue using whichever method is available:
210
+
211
+ **If `gh` is installed** (`gh --version` succeeds), create the issue directly:
212
+
213
+ ```bash
214
+ gh issue create \
215
+ --repo ElliotDrel/e-stack \
216
+ --title "estack-read-claude-session-history: <concise summary>" \
217
+ --body "<description from user feedback — expected vs. actual behavior and context>"
218
+ ```
219
+
220
+ **If `gh` is not installed**, build a pre-filled URL:
221
+
222
+ ```bash
223
+ python3 -c "
224
+ import urllib.parse
225
+ title = 'estack-read-claude-session-history: <concise summary>'
226
+ body = '<description from user feedback — expected vs. actual behavior and context>'
227
+ base = 'https://github.com/ElliotDrel/e-stack/issues/new'
228
+ print(base + '?title=' + urllib.parse.quote(title) + '&body=' + urllib.parse.quote(body))
229
+ "
230
+ ```
231
+
232
+ Share the printed URL with the user and offer to open it in their browser.
233
+
234
+ They can also click it directly, review the pre-filled title and body, and click **Submit new issue**.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: estack-repo-search
3
- version: 1.0.0
3
+ version: 1.0.2
4
4
  description: >-
5
5
  (repo-search) Clone and search external GitHub repositories to answer questions about their
6
6
  code. Use this skill whenever the user references a repo you don't have local
@@ -78,7 +78,7 @@ gh issue create \
78
78
  --body "<description from user feedback — expected vs. actual behavior and context>"
79
79
  ```
80
80
 
81
- **If `gh` is not installed**, build a pre-filled URL and share it so the user can click, review, and submit:
81
+ **If `gh` is not installed**, build a pre-filled URL:
82
82
 
83
83
  ```bash
84
84
  python3 -c "
@@ -90,4 +90,6 @@ print(base + '?title=' + urllib.parse.quote(title) + '&body=' + urllib.parse.quo
90
90
  "
91
91
  ```
92
92
 
93
- Share the printed URL with the user. They click it, review the pre-filled title and body, then click **Submit new issue**.
93
+ Share the printed URL with the user and offer to open it in their browser.
94
+
95
+ They can also click it directly, review the pre-filled title and body, and click **Submit new issue**.