elliot-stack 1.0.36 → 1.0.38

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.
Files changed (83) hide show
  1. package/LICENSE +21 -21
  2. package/bin/install.cjs +981 -981
  3. package/hooks/repo-search-nudge.js +32 -32
  4. package/package.json +1 -1
  5. package/skills/estack-active-learning-tutor/SKILL.md +339 -339
  6. package/skills/estack-better-title/SKILL.md +64 -64
  7. package/skills/estack-better-title/scripts/rename.sh +55 -55
  8. package/skills/estack-chris-voss/SKILL.md +80 -80
  9. package/skills/estack-chris-voss/references/elliot-notes.md +120 -120
  10. package/skills/estack-chris-voss/references/voss-principles.md +210 -210
  11. package/skills/estack-customer-discovery/SKILL.md +60 -60
  12. package/skills/estack-flight-planner/SKILL.md +332 -332
  13. package/skills/estack-flight-planner/references/config_schema.md +156 -156
  14. package/skills/estack-flight-planner/references/flight_history_schema.md +97 -97
  15. package/skills/estack-flight-planner/references/shuttle_schedules.md +98 -98
  16. package/skills/estack-flight-planner/scripts/check_setup.sh +89 -89
  17. package/skills/estack-flight-planner/scripts/fetch_flights.py +99 -99
  18. package/skills/estack-flight-planner/scripts/filter_flights.py +265 -265
  19. package/skills/estack-flight-planner/scripts/pair_shuttles.py +173 -173
  20. package/skills/estack-github-issue-tracker/SKILL.md +322 -322
  21. package/skills/estack-github-issue-tracker/bin/tracker-tools.cjs +1358 -1358
  22. package/skills/estack-github-issue-tracker/references/gh-cli-patterns.md +124 -124
  23. package/skills/estack-github-issue-tracker/references/result-file-schema.md +156 -156
  24. package/skills/estack-github-issue-tracker/references/tracker-schema.md +96 -96
  25. package/skills/estack-github-issue-tracker/tracker-template.md +58 -58
  26. package/skills/estack-leadership-coach/SKILL.md +1 -1
  27. package/skills/estack-leadership-coach/adding-references.md +1 -1
  28. package/skills/estack-migrate-claude-session-history/SKILL.md +15 -2
  29. package/skills/estack-pdf-to-md/SKILL.md +1 -2
  30. package/skills/estack-prompt-builder-coach/SKILL.md +81 -81
  31. package/skills/estack-prompt-builder-coach/definition-of-done-generator.md +42 -42
  32. package/skills/estack-prompt-builder-coach/prompt-builder.md +37 -37
  33. package/skills/estack-prompt-builder-coach/task-shaper.md +36 -36
  34. package/skills/estack-prompt-builder-coach/vague-ask-auditor.md +37 -37
  35. package/skills/estack-read-claude-session-history/SKILL.md +228 -204
  36. package/skills/estack-read-claude-session-history/references/jsonl-schema.md +126 -126
  37. package/skills/estack-read-claude-session-history/references/modes.md +455 -423
  38. package/skills/estack-read-claude-session-history/references/recipes.md +300 -271
  39. package/skills/estack-read-claude-session-history/scripts/lib/__init__.py +1 -1
  40. package/skills/estack-read-claude-session-history/scripts/lib/parser.py +460 -460
  41. package/skills/estack-read-claude-session-history/scripts/lib/paths.py +234 -234
  42. package/skills/estack-read-claude-session-history/scripts/lib/search.py +179 -179
  43. package/skills/estack-read-claude-session-history/scripts/lib/subagents.py +88 -88
  44. package/skills/estack-read-claude-session-history/scripts/lib/tools.py +144 -144
  45. package/skills/estack-read-claude-session-history/scripts/read_transcript.py +1914 -1776
  46. package/skills/estack-read-claude-session-history/scripts/tests/conftest.py +40 -40
  47. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/README.md +20 -20
  48. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/all-noise.jsonl +4 -4
  49. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/basic-session.jsonl +2 -2
  50. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/engagement-gaps.jsonl +9 -9
  51. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/engagement-noise.jsonl +7 -7
  52. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/engagement-parallel-a.jsonl +3 -3
  53. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/engagement-parallel-b.jsonl +3 -3
  54. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/engagement-waiting.jsonl +5 -5
  55. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/interrupted.jsonl +2 -2
  56. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/multi-compact.jsonl +8 -8
  57. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/pending-user.jsonl +2 -2
  58. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/subagent-no-meta/subagents/agent-aaa.jsonl +2 -2
  59. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/subagent-no-meta.jsonl +2 -2
  60. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/subagent-parent/subagents/agent-xyz123.jsonl +2 -2
  61. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/subagent-parent/subagents/agent-xyz123.meta.json +1 -1
  62. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/subagent-parent.jsonl +4 -4
  63. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/time-spread.jsonl +6 -6
  64. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/timeline-day-test.jsonl +5 -5
  65. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/tool-usage-parent/subagents/agent-sub1.jsonl +3 -0
  66. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/tool-usage-parent.jsonl +3 -0
  67. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/tool-zoo.jsonl +10 -10
  68. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/truncated.jsonl +2 -2
  69. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/unicode.jsonl +2 -2
  70. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/with-advisor.jsonl +3 -3
  71. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/with-compact.jsonl +5 -5
  72. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/with-thinking.jsonl +2 -2
  73. package/skills/estack-read-claude-session-history/scripts/tests/test_backup_roots.py +56 -56
  74. package/skills/estack-read-claude-session-history/scripts/tests/test_engagement.py +239 -239
  75. package/skills/estack-read-claude-session-history/scripts/tests/test_json_format.py +201 -201
  76. package/skills/estack-read-claude-session-history/scripts/tests/test_modes.py +323 -199
  77. package/skills/estack-read-claude-session-history/scripts/tests/test_parser.py +195 -195
  78. package/skills/estack-read-claude-session-history/scripts/tests/test_paths.py +133 -133
  79. package/skills/estack-read-claude-session-history/scripts/tests/test_search.py +78 -78
  80. package/skills/estack-read-claude-session-history/scripts/tests/test_subagents.py +43 -43
  81. package/skills/estack-read-claude-session-history/scripts/tests/test_timeline.py +179 -179
  82. package/skills/estack-read-claude-session-history/scripts/tests/test_timezone_and_project.py +212 -212
  83. package/skills/estack-read-claude-session-history/scripts/tests/test_tools.py +80 -80
@@ -1,96 +1,96 @@
1
- # Tracker File Schema
2
-
3
- Defines the format and fields for `github-tracker.md`.
4
-
5
- ---
6
-
7
- ## File Header
8
-
9
- ```markdown
10
- # GitHub Issue Tracker
11
-
12
- GitHub username: **USERNAME**
13
-
14
- ## Config
15
-
16
- Tracked repos: all repos where I'm involved
17
- Excluded repos: none
18
-
19
- ---
20
- ```
21
-
22
- ## Config Section
23
-
24
- Plain English directives that control what the skill tracks and how it reports.
25
- The skill reads these on every run and respects them when filtering issues.
26
-
27
- Common directives:
28
- - `Tracked repos:` — which repos to include (default: all involving user)
29
- - `Excluded repos:` — repos to skip entirely (e.g., `ElliotDrel/*` to skip own repos)
30
- - Any other plain English instructions (e.g., "Don't show bot comments", "Focus on bugs only")
31
-
32
- The skill treats these as soft rules — it reads them and applies judgment. No rigid parsing.
33
-
34
- ## Active Issues Section
35
-
36
- Each issue entry under `## Active Issues (watching for updates)`:
37
-
38
- ```markdown
39
- ### owner/repo#NUMBER — Title
40
- - **Goal:** What the user wants from this issue (e.g., "Get my fix merged", "Get maintainer to respond", "Monitor for upstream fix"). Drives next-step recommendations.
41
- - **Role:** Author | Commenter | Mentioned (brief description of involvement)
42
- - **Filed:** YYYY-MM-DD (only if authored by user)
43
- - **Status as of YYYY-MM-DD:** Open/Closed. Labels: label1, label2. Summary of current state. N comments total.
44
- - **What to check:** Specific signals to watch for (e.g., "Any Anthropic response?")
45
- - **Related:** #other, #issues (cross-references found in comments)
46
- - **Upstream:** owner/repo#NUMBER (if tracking an upstream dependency)
47
- - **Crash instances:** (optional, for bug reports with multiple data points)
48
- 1. Description of instance
49
- 2. Description of instance
50
- - **Workaround:** Description of workaround (if applicable)
51
- - **Duplicates found (YYYY-MM-DD):**
52
- - **#NUMBER** — @author, "Title" (date). Why it's related/duplicate.
53
- - **Adjacent issues found (YYYY-MM-DD):**
54
- - **#NUMBER** — @author, "Title" (date). Why it's adjacent (same space, different problem).
55
- - **Next steps (now):** Immediate actions for this check-in.
56
- - **Future:** Things to monitor or do later.
57
- - **History:**
58
- - **YYYY-MM-DD:** Filed issue with 3 crash instances, upstream tracking in bun#28175
59
- - **YYYY-MM-DD:** Posted workaround (callbackPort: 3118 fix)
60
- - **YYYY-MM-DD:** Maintainer @user replied with fix proposal
61
- ```
62
-
63
- ### Field Rules
64
-
65
- - **"Status as of" date:** Always update to today's date during Phase 4.
66
- - **"Duplicates found" date:** Date when the duplicate was first identified. Don't change on subsequent check-ins.
67
- - **"Next steps (now)":** Clear after execution. If not executed, carry forward.
68
- - **"Future":** Accumulates over time. Remove items that become "Next steps (now)" or are no longer relevant.
69
- - **"Goal":** Set on first add, update if the user's intent changes. Use this to drive next-step recommendations — if the goal is "get merged" the next steps focus on what's blocking the merge; if "monitor for fix" the next steps focus on upstream signals.
70
- - **Role descriptions:** Keep brief. Examples: "confirmed bug + posted workaround", "shared skill + reported 64KB bug", "proposed configurable keybindings".
71
- - **"History:"** Append-only timestamped log. Format: `- **YYYY-MM-DD:** Action or event description`. Newest entries go last (chronological). Logs both our actions (filing, commenting, posting workarounds) and detected external events (maintainer replies, state changes, PRs merged). On initial filing, first entry must be: `- **YYYY-MM-DD:** Filed issue` (or `Added to tracker` if not authored by user).
72
-
73
- ## Closed / Resolved Section
74
-
75
- Each entry under `## Closed / Resolved`:
76
-
77
- ```markdown
78
- ### owner/repo#NUMBER — Title
79
- - Brief resolution note (merged, auto-closed as duplicate of #X, fixed in vX.Y.Z, etc.)
80
- - Date closed if notable.
81
- ```
82
-
83
- ## Morning Check-In Procedure Section
84
-
85
- Static section with reusable `gh` CLI commands. Update USERNAME if it changes. Otherwise don't modify.
86
-
87
- ---
88
-
89
- ## Update Rules
90
-
91
- 1. **Only update the tracker file in Phase 4, after user confirmation.**
92
- 2. **Preserve manually added content.** If the user added custom notes, crash data, workarounds, or other content not generated by this skill, keep it intact.
93
- 3. **Move issues between sections** when state changes (Active → Closed, or Closed → Active if reopened).
94
- 4. **Don't remove duplicate entries** — they're historical. Only add new ones.
95
- 5. **Keep "What to check" relevant.** Update if the situation changed (e.g., if Anthropic responded, change from "Any Anthropic response?" to "Follow up on Anthropic's suggestion?").
96
- 6. **Append new history entries. Never remove or edit existing history entries.**
1
+ # Tracker File Schema
2
+
3
+ Defines the format and fields for `github-tracker.md`.
4
+
5
+ ---
6
+
7
+ ## File Header
8
+
9
+ ```markdown
10
+ # GitHub Issue Tracker
11
+
12
+ GitHub username: **USERNAME**
13
+
14
+ ## Config
15
+
16
+ Tracked repos: all repos where I'm involved
17
+ Excluded repos: none
18
+
19
+ ---
20
+ ```
21
+
22
+ ## Config Section
23
+
24
+ Plain English directives that control what the skill tracks and how it reports.
25
+ The skill reads these on every run and respects them when filtering issues.
26
+
27
+ Common directives:
28
+ - `Tracked repos:` — which repos to include (default: all involving user)
29
+ - `Excluded repos:` — repos to skip entirely (e.g., `ElliotDrel/*` to skip own repos)
30
+ - Any other plain English instructions (e.g., "Don't show bot comments", "Focus on bugs only")
31
+
32
+ The skill treats these as soft rules — it reads them and applies judgment. No rigid parsing.
33
+
34
+ ## Active Issues Section
35
+
36
+ Each issue entry under `## Active Issues (watching for updates)`:
37
+
38
+ ```markdown
39
+ ### owner/repo#NUMBER — Title
40
+ - **Goal:** What the user wants from this issue (e.g., "Get my fix merged", "Get maintainer to respond", "Monitor for upstream fix"). Drives next-step recommendations.
41
+ - **Role:** Author | Commenter | Mentioned (brief description of involvement)
42
+ - **Filed:** YYYY-MM-DD (only if authored by user)
43
+ - **Status as of YYYY-MM-DD:** Open/Closed. Labels: label1, label2. Summary of current state. N comments total.
44
+ - **What to check:** Specific signals to watch for (e.g., "Any Anthropic response?")
45
+ - **Related:** #other, #issues (cross-references found in comments)
46
+ - **Upstream:** owner/repo#NUMBER (if tracking an upstream dependency)
47
+ - **Crash instances:** (optional, for bug reports with multiple data points)
48
+ 1. Description of instance
49
+ 2. Description of instance
50
+ - **Workaround:** Description of workaround (if applicable)
51
+ - **Duplicates found (YYYY-MM-DD):**
52
+ - **#NUMBER** — @author, "Title" (date). Why it's related/duplicate.
53
+ - **Adjacent issues found (YYYY-MM-DD):**
54
+ - **#NUMBER** — @author, "Title" (date). Why it's adjacent (same space, different problem).
55
+ - **Next steps (now):** Immediate actions for this check-in.
56
+ - **Future:** Things to monitor or do later.
57
+ - **History:**
58
+ - **YYYY-MM-DD:** Filed issue with 3 crash instances, upstream tracking in bun#28175
59
+ - **YYYY-MM-DD:** Posted workaround (callbackPort: 3118 fix)
60
+ - **YYYY-MM-DD:** Maintainer @user replied with fix proposal
61
+ ```
62
+
63
+ ### Field Rules
64
+
65
+ - **"Status as of" date:** Always update to today's date during Phase 4.
66
+ - **"Duplicates found" date:** Date when the duplicate was first identified. Don't change on subsequent check-ins.
67
+ - **"Next steps (now)":** Clear after execution. If not executed, carry forward.
68
+ - **"Future":** Accumulates over time. Remove items that become "Next steps (now)" or are no longer relevant.
69
+ - **"Goal":** Set on first add, update if the user's intent changes. Use this to drive next-step recommendations — if the goal is "get merged" the next steps focus on what's blocking the merge; if "monitor for fix" the next steps focus on upstream signals.
70
+ - **Role descriptions:** Keep brief. Examples: "confirmed bug + posted workaround", "shared skill + reported 64KB bug", "proposed configurable keybindings".
71
+ - **"History:"** Append-only timestamped log. Format: `- **YYYY-MM-DD:** Action or event description`. Newest entries go last (chronological). Logs both our actions (filing, commenting, posting workarounds) and detected external events (maintainer replies, state changes, PRs merged). On initial filing, first entry must be: `- **YYYY-MM-DD:** Filed issue` (or `Added to tracker` if not authored by user).
72
+
73
+ ## Closed / Resolved Section
74
+
75
+ Each entry under `## Closed / Resolved`:
76
+
77
+ ```markdown
78
+ ### owner/repo#NUMBER — Title
79
+ - Brief resolution note (merged, auto-closed as duplicate of #X, fixed in vX.Y.Z, etc.)
80
+ - Date closed if notable.
81
+ ```
82
+
83
+ ## Morning Check-In Procedure Section
84
+
85
+ Static section with reusable `gh` CLI commands. Update USERNAME if it changes. Otherwise don't modify.
86
+
87
+ ---
88
+
89
+ ## Update Rules
90
+
91
+ 1. **Only update the tracker file in Phase 4, after user confirmation.**
92
+ 2. **Preserve manually added content.** If the user added custom notes, crash data, workarounds, or other content not generated by this skill, keep it intact.
93
+ 3. **Move issues between sections** when state changes (Active → Closed, or Closed → Active if reopened).
94
+ 4. **Don't remove duplicate entries** — they're historical. Only add new ones.
95
+ 5. **Keep "What to check" relevant.** Update if the situation changed (e.g., if Anthropic responded, change from "Any Anthropic response?" to "Follow up on Anthropic's suggestion?").
96
+ 6. **Append new history entries. Never remove or edit existing history entries.**
@@ -1,58 +1,58 @@
1
- # GitHub Issue Tracker
2
-
3
- GitHub username: **USERNAME_HERE**
4
-
5
- ## Config
6
-
7
- <!-- Directives for the check-in skill. Write in plain English. Examples:
8
- - "Skip issues on my own repos (ElliotDrel/*)"
9
- - "Only track issues on anthropics/claude-code and oven-sh/bun"
10
- - "Don't show me bot comments or auto-close spam"
11
- -->
12
-
13
- Tracked repos: all repos where I'm involved
14
- Excluded repos: none
15
-
16
- ---
17
-
18
- ## Active Issues (watching for updates)
19
-
20
- <!-- For each issue you're tracking, use this format:
21
-
22
- ### owner/repo#NUMBER — Title
23
- - **Role:** Author | Commenter | Mentioned (brief description of involvement)
24
- - **Filed:** YYYY-MM-DD (if authored by you)
25
- - **Status as of YYYY-MM-DD:** Open/Closed. Labels: ... . Summary of current state.
26
- - **What to check:** What signals matter for this issue?
27
- - **Related:** #other, #issues (if any)
28
- - **Upstream:** owner/repo#NUMBER (if tracking an upstream dependency)
29
- - **Duplicates found (YYYY-MM-DD):**
30
- - **#NUMBER** — @author, "Title" (date). Why it's related.
31
- - **Next steps (now):** Immediate actions to take this check-in.
32
- - **Future:** Things to monitor or do later.
33
- - **History:**
34
- - **YYYY-MM-DD:** Filed issue (or "Added to tracker for monitoring")
35
- -->
36
-
37
- ## Closed / Resolved
38
-
39
- <!-- For each resolved issue:
40
-
41
- ### owner/repo#NUMBER — Title
42
- - Brief resolution note (merged, auto-closed as duplicate, etc.)
43
- -->
44
-
45
- ---
46
-
47
- ## Morning Check-In Procedure
48
-
49
- Run this to get a quick status update on all active issues:
50
-
51
- ```bash
52
- gh api search/issues?q=involves:USERNAME_HERE+updated:>$(python3 -c "import datetime; print((datetime.datetime.now()-datetime.timedelta(days=7)).strftime('%Y-%m-%d'))")+is:open --jq '.items[] | "#\(.number) \(.repository_url | split("/") | .[-2:] | join("/")) — \(.title) [updated: \(.updated_at)]"'
53
- ```
54
-
55
- Then for each issue, check recent comments:
56
- ```bash
57
- gh api repos/OWNER/REPO/issues/NUMBER/comments --jq '.[-3:] | .[] | "[\(.created_at)] @\(.user.login): \(.body[0:200])"'
58
- ```
1
+ # GitHub Issue Tracker
2
+
3
+ GitHub username: **USERNAME_HERE**
4
+
5
+ ## Config
6
+
7
+ <!-- Directives for the check-in skill. Write in plain English. Examples:
8
+ - "Skip issues on my own repos (ElliotDrel/*)"
9
+ - "Only track issues on anthropics/claude-code and oven-sh/bun"
10
+ - "Don't show me bot comments or auto-close spam"
11
+ -->
12
+
13
+ Tracked repos: all repos where I'm involved
14
+ Excluded repos: none
15
+
16
+ ---
17
+
18
+ ## Active Issues (watching for updates)
19
+
20
+ <!-- For each issue you're tracking, use this format:
21
+
22
+ ### owner/repo#NUMBER — Title
23
+ - **Role:** Author | Commenter | Mentioned (brief description of involvement)
24
+ - **Filed:** YYYY-MM-DD (if authored by you)
25
+ - **Status as of YYYY-MM-DD:** Open/Closed. Labels: ... . Summary of current state.
26
+ - **What to check:** What signals matter for this issue?
27
+ - **Related:** #other, #issues (if any)
28
+ - **Upstream:** owner/repo#NUMBER (if tracking an upstream dependency)
29
+ - **Duplicates found (YYYY-MM-DD):**
30
+ - **#NUMBER** — @author, "Title" (date). Why it's related.
31
+ - **Next steps (now):** Immediate actions to take this check-in.
32
+ - **Future:** Things to monitor or do later.
33
+ - **History:**
34
+ - **YYYY-MM-DD:** Filed issue (or "Added to tracker for monitoring")
35
+ -->
36
+
37
+ ## Closed / Resolved
38
+
39
+ <!-- For each resolved issue:
40
+
41
+ ### owner/repo#NUMBER — Title
42
+ - Brief resolution note (merged, auto-closed as duplicate, etc.)
43
+ -->
44
+
45
+ ---
46
+
47
+ ## Morning Check-In Procedure
48
+
49
+ Run this to get a quick status update on all active issues:
50
+
51
+ ```bash
52
+ gh api search/issues?q=involves:USERNAME_HERE+updated:>$(python3 -c "import datetime; print((datetime.datetime.now()-datetime.timedelta(days=7)).strftime('%Y-%m-%d'))")+is:open --jq '.items[] | "#\(.number) \(.repository_url | split("/") | .[-2:] | join("/")) — \(.title) [updated: \(.updated_at)]"'
53
+ ```
54
+
55
+ Then for each issue, check recent comments:
56
+ ```bash
57
+ gh api repos/OWNER/REPO/issues/NUMBER/comments --jq '.[-3:] | .[] | "[\(.created_at)] @\(.user.login): \(.body[0:200])"'
58
+ ```
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: estack-leadership-coach
3
- version: 3.1.0
3
+ version: 3.1.1
4
4
  description: (leadership-coach) A leadership coach that walks through real decisions — delegation, and (over time) feedback, hiring, OKRs, conflict, performance — producing a concrete artifact each session (a brief, a diagnosis, a script) the user can act on immediately. Coaches by surfacing proven principles in the moment they're needed, then applying them to the user's actual situation.
5
5
  metadata:
6
6
  disable_model_invocation: true
@@ -56,7 +56,7 @@ If both apply (e.g., a book with multiple author talks) → synthesis as the pri
56
56
 
57
57
  ### Step 4 — Create the reference file
58
58
 
59
- **Location:** `~/.claude/skills/leadership-coach/references/<filename>.md`
59
+ **Location:** `~/.claude/skills/estack-leadership-coach/references/<filename>.md`
60
60
 
61
61
  **Filename convention:** `<author-lastname>_<work-shortname>.md` — lowercase, hyphens not underscores within name parts, single underscore between author and work. Examples already in the skill:
62
62
 
@@ -1,7 +1,20 @@
1
1
  ---
2
2
  name: estack-migrate-claude-session-history
3
- version: 1.0.0
4
- description: (migrate-claude-session-history) Use whenever the user wants to move a Claude Code session (the .jsonl transcript plus its subagent sidecar files) from one project to another so that /resume picks it up under the new project. Triggers on phrases like "migrate this session", "move this session to <project>", "convert session X to be in project Y instead of Z", "transfer chat history to another project", "this session belongs under <project>", or when the user names a session UUID and a different target project. Handles the full workflow: backup, sidecar-aware copying, rewriting all 9 path-encoding variants in every entry, appending a visible user-message migration note, and end-to-end verification. Use this even if the user only describes the intent loosely (e.g. "this conversation should live under the personal-health project") — do not try to do this by hand with raw file moves; subtle cwd / encoded-path bugs will break /resume.
3
+ version: 1.0.1
4
+ description: >-
5
+ (migrate-claude-session-history) Use whenever the user wants to move a Claude
6
+ Code session (the .jsonl transcript plus its subagent sidecar files) from one
7
+ project to another so that /resume picks it up under the new project. Triggers
8
+ on phrases like "migrate this session", "move this session to <project>",
9
+ "convert session X to be in project Y instead of Z", "transfer chat history
10
+ to another project", "this session belongs under <project>", or when the user
11
+ names a session UUID and a different target project. Handles the full
12
+ workflow: backup, sidecar-aware copying, rewriting all 9 path-encoding
13
+ variants in every entry, appending a visible user-message migration note, and
14
+ end-to-end verification. Use this even if the user only describes the intent
15
+ loosely (e.g. "this conversation should live under the personal-health
16
+ project") - do not try to do this by hand with raw file moves; subtle cwd /
17
+ encoded-path bugs will break /resume.
5
18
  ---
6
19
 
7
20
  # Migrate Claude Session History
@@ -1,10 +1,9 @@
1
1
  ---
2
2
  name: estack-pdf-to-md
3
- version: 1.0.0
3
+ version: 1.0.1
4
4
  description: (pdf-to-md) Convert a PDF file to Markdown or plain text using the RunPulse API. Use this skill whenever the user wants to extract text from a PDF, convert a PDF to .md or .txt, OCR a PDF, "turn this PDF into text/markdown", drops a .pdf path into chat asking for its contents, or asks to run the RunPulse / Pulse converter. Trigger even when the user only says "convert this PDF" without naming the tool.
5
5
  ---
6
6
 
7
- # pdf-to-md
8
7
 
9
8
  Convert a PDF (or several PDFs) to Markdown or plain text using the RunPulse API. The underlying script splits the PDF into page batches, fires all batches in parallel against the RunPulse `/extract` endpoint, polls each async job, and reassembles the markdown in correct page order.
10
9
 
@@ -1,84 +1,84 @@
1
- ---
2
- name: estack-prompt-builder-coach
3
- version: 1.0.5
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
- ---
6
-
7
- # Prompt Builder
8
-
9
- A four-part prompt kit that turns thin asks into structured work briefs. This file is the router. Read it first, then read and follow the part file it routes you to.
10
-
11
- <role>
12
- You are the router and tone-setter for a four-part prompt kit. Your job is to establish the mindset every part shares, pick the part that fits the user's situation, and enforce the rules that hold the four parts together as one system. You do not do the user's task yourself, and you do not shape, build, audit, or scope prompts directly. You route.
13
- </role>
14
-
15
- <mindset>
16
- The unit of useful AI work is not a prompt, it is a brief. A prompt is something typed into a box. A brief is compressed work, goal, context, sources, constraints, quality bar, and a stopping point, made legible enough that another intelligence can act on it.
17
-
18
- Treat the AI on the other end as a senior director, not a junior. A junior needs every step spelled out. A senior gets the goal, the context, the constraints, and the quality bar, then exercises judgment. The leverage in modern models lives in that gap.
19
-
20
- Generic, polished, useless output is almost always a mirror of a generic assignment, not a weak model. Every part of this kit exists to make the missing definition visible before the work starts.
21
-
22
- The six fields, referred to by every part:
23
- 1. Goal, the outcome, not the activity.
24
- 2. Context, the background a smart colleague joining cold would need.
25
- 3. Sources, what materials to use and their role.
26
- 4. Constraints, the boundaries that keep the work practically right.
27
- 5. Quality bar, what makes the output good, not just done-looking.
28
- 6. Definition of done, the exact deliverable and the stopping point.
29
-
30
- The flashlight: a brief points a flashlight. The center of the beam is intent. The edges are scope, what is in and what is out. Name both. The edges get skipped most and matter most.
31
-
32
- Match overhead to stakes. Not every ask needs the full kit. Quick or exploratory asks stay loose.
33
-
34
- Shape before brief. Some work cannot be briefed yet, because the goal itself is not decided. Creative work, exploratory research, and judgment-heavy strategy often begin before the goal is visible. Forcing such a task into a brief produces a confident answer to a question the user never settled. When the goal, the audience, or the core angle is undecided, the work must be shaped first: map the options, surface the tensions, decide, and only then brief. Shaping and briefing are different modes. Do not blur them.
35
- </mindset>
36
-
37
- <parts>
38
- - Task Shaper, file task-shaper.md. Helps the user move from a fuzzy idea to a decided goal when the work has not been shaped yet, then hands off to the builder. This is the earliest stage; it runs before a brief can be built.
39
- - Useful Question Builder, file prompt-builder.md. Builds a complete work brief from scratch by interviewing the user through the six fields.
40
- - Vague Ask Auditor, file vague-ask-auditor.md. Diagnoses a draft request field by field, then rewrites it.
41
- - Definition-of-Done Generator, file definition-of-done-generator.md. Articulates what finished looks like when the user cannot describe it.
42
- </parts>
43
-
44
- <routing>
45
- Run this decision procedure when the skill triggers.
46
- 1. Triage first. If the task is a quick question, a throwaway draft, or open brainstorming, do not run the kit. Write a tight one or two line prompt, confirm it, save it, done. State this read so the user can override.
47
- 2. Does the user already have a draft prompt or request? If yes, route to the Vague Ask Auditor.
48
- 3. Is the goal itself undecided? If the user has an idea, an itch, or an area to work in but has not settled what they are actually trying to do, who it is for, or the core angle, the work is not ready to brief. Route to the Task Shaper.
49
- 4. Is the task decided, but the user cannot say what a finished result looks like? Route to the Definition-of-Done Generator.
50
- 5. Otherwise the user has a defined task and is building from scratch. Route to the Useful Question Builder.
51
-
52
- Steps 3 and 4 both serve a user who says they do not know what they want, and the distinction matters: route to the Task Shaper when the goal or angle is undecided, and to the Definition-of-Done Generator when the goal is decided but the finish line is not. If unsure which, ask the user one question to tell them apart before routing.
53
-
54
- Before working any part, read that part's file in full and follow it.
55
- </routing>
56
-
57
- <cross_part_rules>
58
- These rules make the kit a system rather than four loose files.
59
-
60
- Rule 1, re-read on every switch. Every time control moves to a part, read that part's file fresh before acting, even if you used it earlier in the same session. This applies to switching back. Stale instructions cause drift. Worked sequence: the Useful Question Builder finishes a prompt, so control switches to the Vague Ask Auditor, read vague-ask-auditor.md now. The auditor finds things to fix and needs to rebuild the prompt, so control switches back to the builder, read prompt-builder.md again before rebuilding. Do not patch from memory.
61
-
62
- Rule 2, the builder hands off to the auditor automatically. When the Useful Question Builder produces a finished prompt, do not stop. Run the Vague Ask Auditor on the prompt just built. If you can spawn subagents, delegate the audit to a subagent, passing it the built prompt and the path to vague-ask-auditor.md. If you cannot, run the audit inline yourself after reading vague-ask-auditor.md. Either way the audit runs against the freshly built prompt before the user is told the work is done.
63
-
64
- Rule 3, the Definition-of-Done Generator runs alone or mid-flow. It runs standalone when the user does not know what a finished result looks like. It also runs mid-flow: if during the Useful Question Builder interview the user cannot answer what done looks like, switch to definition-of-done-generator.md, read it on switch, run it, then return to the builder, re-read prompt-builder.md, and continue from where you paused.
65
-
66
- Rule 4, the Task Shaper runs alone or mid-flow and always ends at the builder. It runs standalone when SKILL.md routes an undecided task here. It runs mid-flow when the Useful Question Builder finds, while working the Goal field, that the goal itself is not decided; in that case switch to task-shaper.md, read it on switch, run it, and when the goal is decided return to prompt-builder.md, re-read it, and resume. Whether entered standalone or mid-flow, once shaping produces a decided goal the Task Shaper hands off to the Useful Question Builder, because a decided goal is the input a brief needs, not a finished deliverable.
67
- </cross_part_rules>
68
-
69
- <examples>
70
- A separate file, examples.md, holds annotated examples of strong prompts: thin asks paired against well-defined versions, plus full briefs broken down field by field. Read examples.md yourself any time you want a concrete reference for what a good prompt looks like, especially when a part is assembling or rewriting a brief. If the user asks to see examples of good prompts, show them examples.md directly.
71
- </examples>
72
-
73
- <output>
74
- When a finished prompt or brief is ready, output it in full in chat. Then ask the user: "Would you like me to save this as a file?" Only save if they say yes. When saving, use a descriptive snake_case filename in the current working directory. When the auditor revises a prompt, treat the revision as a new finished brief: output it in chat and ask the same question — do not automatically overwrite or create files.
75
- </output>
76
-
77
- <guardrails>
78
- - Do not skip the routing procedure and start working a part directly. Triage, then route.
79
- - Do not run a part from memory. Always read its file on entry, per Rule 1.
80
- - Do not over-apply the kit. A quick ask gets a quick prompt, not a six-field brief.
81
- </guardrails>
1
+ ---
2
+ name: estack-prompt-builder-coach
3
+ version: 1.0.5
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
+ ---
6
+
7
+ # Prompt Builder
8
+
9
+ A four-part prompt kit that turns thin asks into structured work briefs. This file is the router. Read it first, then read and follow the part file it routes you to.
10
+
11
+ <role>
12
+ You are the router and tone-setter for a four-part prompt kit. Your job is to establish the mindset every part shares, pick the part that fits the user's situation, and enforce the rules that hold the four parts together as one system. You do not do the user's task yourself, and you do not shape, build, audit, or scope prompts directly. You route.
13
+ </role>
14
+
15
+ <mindset>
16
+ The unit of useful AI work is not a prompt, it is a brief. A prompt is something typed into a box. A brief is compressed work, goal, context, sources, constraints, quality bar, and a stopping point, made legible enough that another intelligence can act on it.
17
+
18
+ Treat the AI on the other end as a senior director, not a junior. A junior needs every step spelled out. A senior gets the goal, the context, the constraints, and the quality bar, then exercises judgment. The leverage in modern models lives in that gap.
19
+
20
+ Generic, polished, useless output is almost always a mirror of a generic assignment, not a weak model. Every part of this kit exists to make the missing definition visible before the work starts.
21
+
22
+ The six fields, referred to by every part:
23
+ 1. Goal, the outcome, not the activity.
24
+ 2. Context, the background a smart colleague joining cold would need.
25
+ 3. Sources, what materials to use and their role.
26
+ 4. Constraints, the boundaries that keep the work practically right.
27
+ 5. Quality bar, what makes the output good, not just done-looking.
28
+ 6. Definition of done, the exact deliverable and the stopping point.
29
+
30
+ The flashlight: a brief points a flashlight. The center of the beam is intent. The edges are scope, what is in and what is out. Name both. The edges get skipped most and matter most.
31
+
32
+ Match overhead to stakes. Not every ask needs the full kit. Quick or exploratory asks stay loose.
33
+
34
+ Shape before brief. Some work cannot be briefed yet, because the goal itself is not decided. Creative work, exploratory research, and judgment-heavy strategy often begin before the goal is visible. Forcing such a task into a brief produces a confident answer to a question the user never settled. When the goal, the audience, or the core angle is undecided, the work must be shaped first: map the options, surface the tensions, decide, and only then brief. Shaping and briefing are different modes. Do not blur them.
35
+ </mindset>
36
+
37
+ <parts>
38
+ - Task Shaper, file task-shaper.md. Helps the user move from a fuzzy idea to a decided goal when the work has not been shaped yet, then hands off to the builder. This is the earliest stage; it runs before a brief can be built.
39
+ - Useful Question Builder, file prompt-builder.md. Builds a complete work brief from scratch by interviewing the user through the six fields.
40
+ - Vague Ask Auditor, file vague-ask-auditor.md. Diagnoses a draft request field by field, then rewrites it.
41
+ - Definition-of-Done Generator, file definition-of-done-generator.md. Articulates what finished looks like when the user cannot describe it.
42
+ </parts>
43
+
44
+ <routing>
45
+ Run this decision procedure when the skill triggers.
46
+ 1. Triage first. If the task is a quick question, a throwaway draft, or open brainstorming, do not run the kit. Write a tight one or two line prompt, confirm it, save it, done. State this read so the user can override.
47
+ 2. Does the user already have a draft prompt or request? If yes, route to the Vague Ask Auditor.
48
+ 3. Is the goal itself undecided? If the user has an idea, an itch, or an area to work in but has not settled what they are actually trying to do, who it is for, or the core angle, the work is not ready to brief. Route to the Task Shaper.
49
+ 4. Is the task decided, but the user cannot say what a finished result looks like? Route to the Definition-of-Done Generator.
50
+ 5. Otherwise the user has a defined task and is building from scratch. Route to the Useful Question Builder.
51
+
52
+ Steps 3 and 4 both serve a user who says they do not know what they want, and the distinction matters: route to the Task Shaper when the goal or angle is undecided, and to the Definition-of-Done Generator when the goal is decided but the finish line is not. If unsure which, ask the user one question to tell them apart before routing.
53
+
54
+ Before working any part, read that part's file in full and follow it.
55
+ </routing>
56
+
57
+ <cross_part_rules>
58
+ These rules make the kit a system rather than four loose files.
59
+
60
+ Rule 1, re-read on every switch. Every time control moves to a part, read that part's file fresh before acting, even if you used it earlier in the same session. This applies to switching back. Stale instructions cause drift. Worked sequence: the Useful Question Builder finishes a prompt, so control switches to the Vague Ask Auditor, read vague-ask-auditor.md now. The auditor finds things to fix and needs to rebuild the prompt, so control switches back to the builder, read prompt-builder.md again before rebuilding. Do not patch from memory.
61
+
62
+ Rule 2, the builder hands off to the auditor automatically. When the Useful Question Builder produces a finished prompt, do not stop. Run the Vague Ask Auditor on the prompt just built. If you can spawn subagents, delegate the audit to a subagent, passing it the built prompt and the path to vague-ask-auditor.md. If you cannot, run the audit inline yourself after reading vague-ask-auditor.md. Either way the audit runs against the freshly built prompt before the user is told the work is done.
63
+
64
+ Rule 3, the Definition-of-Done Generator runs alone or mid-flow. It runs standalone when the user does not know what a finished result looks like. It also runs mid-flow: if during the Useful Question Builder interview the user cannot answer what done looks like, switch to definition-of-done-generator.md, read it on switch, run it, then return to the builder, re-read prompt-builder.md, and continue from where you paused.
65
+
66
+ Rule 4, the Task Shaper runs alone or mid-flow and always ends at the builder. It runs standalone when SKILL.md routes an undecided task here. It runs mid-flow when the Useful Question Builder finds, while working the Goal field, that the goal itself is not decided; in that case switch to task-shaper.md, read it on switch, run it, and when the goal is decided return to prompt-builder.md, re-read it, and resume. Whether entered standalone or mid-flow, once shaping produces a decided goal the Task Shaper hands off to the Useful Question Builder, because a decided goal is the input a brief needs, not a finished deliverable.
67
+ </cross_part_rules>
68
+
69
+ <examples>
70
+ A separate file, examples.md, holds annotated examples of strong prompts: thin asks paired against well-defined versions, plus full briefs broken down field by field. Read examples.md yourself any time you want a concrete reference for what a good prompt looks like, especially when a part is assembling or rewriting a brief. If the user asks to see examples of good prompts, show them examples.md directly.
71
+ </examples>
72
+
73
+ <output>
74
+ When a finished prompt or brief is ready, output it in full in chat. Then ask the user: "Would you like me to save this as a file?" Only save if they say yes. When saving, use a descriptive snake_case filename in the current working directory. When the auditor revises a prompt, treat the revision as a new finished brief: output it in chat and ask the same question — do not automatically overwrite or create files.
75
+ </output>
76
+
77
+ <guardrails>
78
+ - Do not skip the routing procedure and start working a part directly. Triage, then route.
79
+ - Do not run a part from memory. Always read its file on entry, per Rule 1.
80
+ - Do not over-apply the kit. A quick ask gets a quick prompt, not a six-field brief.
81
+ </guardrails>
82
82
  ---
83
83
 
84
84
  ## Skill Feedback