elliot-stack 1.0.29 → 1.0.33

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 (128) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +5 -0
  3. package/bin/install.cjs +981 -950
  4. package/hooks/repo-search-nudge.js +32 -32
  5. package/package.json +1 -1
  6. package/skills/estack-active-learning-tutor/SKILL.md +339 -339
  7. package/skills/estack-better-title/SKILL.md +64 -64
  8. package/skills/estack-better-title/scripts/rename.sh +55 -55
  9. package/skills/estack-chris-voss/SKILL.md +80 -80
  10. package/skills/estack-chris-voss/references/elliot-notes.md +120 -120
  11. package/skills/estack-chris-voss/references/voss-principles.md +210 -210
  12. package/skills/estack-customer-discovery/SKILL.md +60 -60
  13. package/skills/estack-flight-planner/SKILL.md +332 -332
  14. package/skills/estack-flight-planner/references/config_schema.md +156 -156
  15. package/skills/estack-flight-planner/references/flight_history_schema.md +97 -97
  16. package/skills/estack-flight-planner/references/shuttle_schedules.md +98 -98
  17. package/skills/estack-flight-planner/scripts/check_setup.sh +89 -89
  18. package/skills/estack-flight-planner/scripts/fetch_flights.py +99 -99
  19. package/skills/estack-flight-planner/scripts/filter_flights.py +265 -265
  20. package/skills/estack-flight-planner/scripts/pair_shuttles.py +173 -173
  21. package/skills/estack-github-issue-tracker/SKILL.md +322 -322
  22. package/skills/estack-github-issue-tracker/bin/tracker-tools.cjs +1358 -1358
  23. package/skills/estack-github-issue-tracker/references/gh-cli-patterns.md +124 -124
  24. package/skills/estack-github-issue-tracker/references/result-file-schema.md +156 -156
  25. package/skills/estack-github-issue-tracker/references/tracker-schema.md +96 -96
  26. package/skills/estack-github-issue-tracker/tracker-template.md +58 -58
  27. package/skills/estack-leadership-coach/SKILL.md +235 -0
  28. package/skills/estack-leadership-coach/adding-references.md +280 -0
  29. package/skills/estack-leadership-coach/frameworks/delegation/flows/post-mortem.md +120 -0
  30. package/skills/estack-leadership-coach/frameworks/delegation/flows/pre-delegation.md +138 -0
  31. package/skills/estack-leadership-coach/frameworks/delegation/phases/1-intake.md +145 -0
  32. package/skills/estack-leadership-coach/frameworks/delegation/phases/2-trm-assessment.md +119 -0
  33. package/skills/estack-leadership-coach/frameworks/delegation/phases/3-enrollment.md +132 -0
  34. package/skills/estack-leadership-coach/frameworks/delegation/phases/4-build-brief.md +171 -0
  35. package/skills/estack-leadership-coach/frameworks/delegation/phases/5-monitoring.md +134 -0
  36. package/skills/estack-leadership-coach/frameworks/delegation/phases/6-reverse-delegation.md +118 -0
  37. package/skills/estack-leadership-coach/frameworks/delegation/phases/7-diagnose.md +200 -0
  38. package/skills/estack-leadership-coach/references/.source-files/deci-ryan_self-determination-theory__deci-olafsen-ryan-2017-self-determination-theory-in-work-organizations.md +1881 -0
  39. package/skills/estack-leadership-coach/references/.source-files/deci-ryan_self-determination-theory__gagne-deci-2005-self-determination-theory-and-work-motivation.md +2058 -0
  40. package/skills/estack-leadership-coach/references/.source-files/deci-ryan_self-determination-theory__selfdeterminationtheory-org-theory-overview-page.md +61 -0
  41. package/skills/estack-leadership-coach/references/.source-files/gallup_engagement-research__gallup-3-key-insights-into-the-global-workplace-2024.md +57 -0
  42. package/skills/estack-leadership-coach/references/.source-files/gallup_engagement-research__gallup-managers-account-for-70-percent-of-variance-in-employee-engagement-2015.md +40 -0
  43. package/skills/estack-leadership-coach/references/.source-files/gallup_engagement-research__gallup-state-of-the-global-workplace-2026-global-data-summary.md +73 -0
  44. package/skills/estack-leadership-coach/references/.source-files/gallup_engagement-research__gallup-state-of-the-global-workplace-2026-report-landing.md +42 -0
  45. package/skills/estack-leadership-coach/references/.source-files/hormozi-leila_4-stages__leila-hormozi-the-art-of-delegation-blog-post.md +91 -0
  46. package/skills/estack-leadership-coach/references/.source-files/oncken-wass_monkeys-hbr-1974__oncken-wass-management-time-whos-got-the-monkey-hbr-classic-1974.md +969 -0
  47. package/skills/estack-leadership-coach/references/.source-files/sanchez_main-street-millionaire__codie-sanchez-afford-anything-podcast-ep-565-show-notes.md +89 -0
  48. package/skills/estack-leadership-coach/references/.source-files/sullivan_who-not-how__dan-sullivan-impact-filter-tool-and-guide-booklet.md +565 -0
  49. package/skills/estack-leadership-coach/references/.source-files/van-edwards_cues__vanessa-van-edwards-lewis-howes-school-of-greatness-ep-1231-show-notes.md +122 -0
  50. package/skills/estack-leadership-coach/references/.source-files/van-edwards_cues__vanessa-van-edwards-roger-dooley-cues-interview.md +194 -0
  51. package/skills/estack-leadership-coach/references/deci-ryan_self-determination-theory.md +166 -0
  52. package/skills/estack-leadership-coach/references/doerr_measure-what-matters.md +154 -0
  53. package/skills/estack-leadership-coach/references/ferriss_4hww.md +189 -0
  54. package/skills/estack-leadership-coach/references/gallup_engagement-research.md +105 -0
  55. package/skills/estack-leadership-coach/references/gerber_e-myth-revisited.md +118 -0
  56. package/skills/estack-leadership-coach/references/grove_high-output-management.md +95 -0
  57. package/skills/estack-leadership-coach/references/hormozi-alex_followthrough.md +152 -0
  58. package/skills/estack-leadership-coach/references/hormozi-leila_4-stages.md +146 -0
  59. package/skills/estack-leadership-coach/references/oncken-wass_monkeys-hbr-1974.md +128 -0
  60. package/skills/estack-leadership-coach/references/sanchez_main-street-millionaire.md +196 -0
  61. package/skills/estack-leadership-coach/references/sullivan_who-not-how.md +137 -0
  62. package/skills/estack-leadership-coach/references/van-edwards_cues.md +189 -0
  63. package/skills/estack-migrate-claude-session-history/SKILL.md +226 -0
  64. package/skills/estack-migrate-claude-session-history/references/path-encoding.md +55 -0
  65. package/skills/estack-migrate-claude-session-history/references/troubleshooting.md +96 -0
  66. package/skills/estack-migrate-claude-session-history/scripts/migrate-claude-history.js +1123 -0
  67. package/skills/estack-migrate-claude-session-history/scripts/test-append-note.js +48 -0
  68. package/skills/estack-migrate-claude-session-history/scripts/test-validate-migration.py +326 -0
  69. package/skills/estack-migrate-claude-session-history/scripts/validate-migration.py +493 -0
  70. package/skills/estack-pdf-to-md/SKILL.md +180 -0
  71. package/skills/estack-pdf-to-md/scripts/pdf_to_md.py +596 -0
  72. package/skills/estack-productivity-prioritization-coach/SKILL.md +124 -0
  73. package/skills/estack-productivity-prioritization-coach/sources/01-tony-robbins-rpm.md +39 -0
  74. package/skills/estack-productivity-prioritization-coach/sources/02-justin-sung-task-prioritization.md +34 -0
  75. package/skills/estack-prompt-builder-coach/SKILL.md +81 -81
  76. package/skills/estack-prompt-builder-coach/definition-of-done-generator.md +42 -42
  77. package/skills/estack-prompt-builder-coach/prompt-builder.md +37 -37
  78. package/skills/estack-prompt-builder-coach/task-shaper.md +36 -36
  79. package/skills/estack-prompt-builder-coach/vague-ask-auditor.md +37 -37
  80. package/skills/estack-read-claude-session-history/SKILL.md +204 -204
  81. package/skills/estack-read-claude-session-history/references/jsonl-schema.md +126 -126
  82. package/skills/estack-read-claude-session-history/references/modes.md +423 -423
  83. package/skills/estack-read-claude-session-history/references/recipes.md +271 -271
  84. package/skills/estack-read-claude-session-history/scripts/lib/__init__.py +1 -1
  85. package/skills/estack-read-claude-session-history/scripts/lib/parser.py +460 -460
  86. package/skills/estack-read-claude-session-history/scripts/lib/paths.py +234 -234
  87. package/skills/estack-read-claude-session-history/scripts/lib/search.py +179 -179
  88. package/skills/estack-read-claude-session-history/scripts/lib/subagents.py +88 -88
  89. package/skills/estack-read-claude-session-history/scripts/lib/tools.py +144 -144
  90. package/skills/estack-read-claude-session-history/scripts/read_transcript.py +1776 -1776
  91. package/skills/estack-read-claude-session-history/scripts/tests/conftest.py +40 -40
  92. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/README.md +20 -20
  93. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/all-noise.jsonl +4 -4
  94. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/basic-session.jsonl +2 -2
  95. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/engagement-gaps.jsonl +9 -9
  96. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/engagement-noise.jsonl +7 -7
  97. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/engagement-parallel-a.jsonl +3 -3
  98. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/engagement-parallel-b.jsonl +3 -3
  99. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/engagement-waiting.jsonl +5 -5
  100. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/interrupted.jsonl +2 -2
  101. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/multi-compact.jsonl +8 -8
  102. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/pending-user.jsonl +2 -2
  103. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/subagent-no-meta/subagents/agent-aaa.jsonl +2 -2
  104. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/subagent-no-meta.jsonl +2 -2
  105. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/subagent-parent/subagents/agent-xyz123.jsonl +2 -2
  106. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/subagent-parent/subagents/agent-xyz123.meta.json +1 -1
  107. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/subagent-parent.jsonl +4 -4
  108. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/time-spread.jsonl +6 -6
  109. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/timeline-day-test.jsonl +5 -5
  110. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/tool-zoo.jsonl +10 -10
  111. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/truncated.jsonl +2 -2
  112. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/unicode.jsonl +2 -2
  113. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/with-advisor.jsonl +3 -3
  114. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/with-compact.jsonl +5 -5
  115. package/skills/estack-read-claude-session-history/scripts/tests/fixtures/with-thinking.jsonl +2 -2
  116. package/skills/estack-read-claude-session-history/scripts/tests/test_backup_roots.py +56 -56
  117. package/skills/estack-read-claude-session-history/scripts/tests/test_engagement.py +239 -239
  118. package/skills/estack-read-claude-session-history/scripts/tests/test_json_format.py +201 -201
  119. package/skills/estack-read-claude-session-history/scripts/tests/test_modes.py +199 -199
  120. package/skills/estack-read-claude-session-history/scripts/tests/test_parser.py +195 -195
  121. package/skills/estack-read-claude-session-history/scripts/tests/test_paths.py +133 -133
  122. package/skills/estack-read-claude-session-history/scripts/tests/test_search.py +78 -78
  123. package/skills/estack-read-claude-session-history/scripts/tests/test_subagents.py +43 -43
  124. package/skills/estack-read-claude-session-history/scripts/tests/test_timeline.py +179 -179
  125. package/skills/estack-read-claude-session-history/scripts/tests/test_timezone_and_project.py +212 -212
  126. package/skills/estack-read-claude-session-history/scripts/tests/test_tools.py +80 -80
  127. package/skills/estack-repo-search/SKILL.md +65 -65
  128. package/skills/estack-vscode-file-recovery/SKILL.md +188 -0
@@ -1,325 +1,325 @@
1
- ---
2
- name: estack-github-issue-tracker
3
- version: 1.0.3
4
- description: >
5
- (github-issue-tracker) GitHub issue tracker management. Checks all open issues the user is involved in,
6
- finds related/duplicate issues, reports what changed, and recommends next steps.
7
- Run anytime for a check-in — works the same whether it's the first run or a daily habit.
8
- The tracker file acts as a cache to make repeat runs faster.
9
- allowed-tools:
10
- - Read
11
- - Write
12
- - Edit
13
- - Bash
14
- - Grep
15
- - Glob
16
- - AskUserQuestion
17
- - Agent
18
- ---
19
-
20
- <objective>
21
- Give the user a complete, actionable update on every GitHub issue they're involved in.
22
- One flow, every time — no modes, no flags. The only thing that changes between runs is
23
- depth: more work when the tracker is empty or stale, less when it was just checked yesterday.
24
- </objective>
25
-
26
- <execution_context>
27
- Resolve `$SKILL_DIR` from this file's location FIRST.
28
-
29
- **Script:** `bin/tracker-tools.cjs` — handles all GitHub API calls, tracker parsing,
30
- report compilation, and tracker updates. Invoke via:
31
-
32
- ```bash
33
- node "$SKILL_DIR/bin/tracker-tools.cjs" <command> [options]
34
- ```
35
-
36
- Every script command returns a `today` field like `today's date is **2026-04-05**, ignore earlier dates`.
37
- Extract the date from this string. If you see multiple `today` values in your context
38
- (from earlier commands), always use the most recent one.
39
-
40
- **stdout/stderr convention:** `compile-report` outputs the report text to stdout and
41
- metadata (including `today`) to stderr. Parse accordingly.
42
-
43
- **Tracker file:** `$HOME/OneDrive/Documents/github-tracker.md`
44
- This is the AI's knowledge base and source of truth. It stores everything in full detail:
45
-
46
- - Every tracked issue with complete context, history, and technical data
47
- - Known duplicates, related issues, cross-references
48
- - User's intent/goals for each issue and what to watch for
49
- - History of all actions taken and events observed
50
- - Config directives (excluded repos, preferences)
51
-
52
- The tracker is written FOR the AI — keep it detailed. When the user asks questions about
53
- any issue, read the tracker first. It should have enough context to answer without
54
- re-fetching from GitHub. The user-facing report (Step 5a) is a separate, concise summary.
55
-
56
- **References:**
57
-
58
- - `references/tracker-schema.md` — tracker file format
59
- - `references/result-file-schema.md` — per-issue analysis format (agents write these)
60
- - `references/gh-cli-patterns.md` — gh CLI command templates
61
- - `tracker-template.md` — blank tracker for first run
62
- </execution_context>
63
-
64
- <flow>
65
-
66
- The skill runs the same steps every time. The tracker determines depth — an empty
67
- tracker means everything is new and needs deep analysis. A fresh tracker means most
68
- issues just need a quick diff check.
69
-
70
- ## Step 0: Startup
71
-
72
- 1. Set `$TRACKER_PATH` to `$HOME/OneDrive/Documents/github-tracker.md`.
73
- 2. Run startup:
74
- ```bash
75
- node "$SKILL_DIR/bin/tracker-tools.cjs" startup --tracker "$TRACKER_PATH"
76
- ```
77
- 3. Store the full response as `$STARTUP`. The script handles auth checking and temp dir
78
- creation. If `auth` is false, show the user the `error` message from the output and STOP.
79
- If `search_errors` is non-empty, warn the user that some discovery queries failed —
80
- the results may be incomplete.
81
- 4. Extract `$TODAY` (the YYYY-MM-DD date) from the `$STARTUP.today` string — use this as today's date for everything.
82
- 5. Extract `$TEMP_DIR` from `$STARTUP.temp_dir`.
83
- 6. Extract `$CONFIG` from `$STARTUP.config`. This is the user's plain English config
84
- (excluded repos, preferences, etc.) parsed from the tracker's `## Config` section.
85
- If null, the tracker has no config yet — you'll ask the user in Step 1.
86
-
87
- ---
88
-
89
- ## Step 1: Discover
90
-
91
- **Goal:** Build the complete list of issues to analyze this run.
92
-
93
- Sources (all from `$STARTUP`):
94
-
95
- - `tracker_data.active_issues` — issues already tracked
96
- - `new_issues` — open issues involving the user that aren't in the tracker yet
97
- - `reopened_issues` — issues previously closed that are now open again
98
- - `recently_closed` — issues closed since last check
99
-
100
- **Check `$CONFIG` from startup.** If it contains directives (excluded repos, preferences),
101
- apply them when filtering issues throughout this step. For example, if config says
102
- "Excluded repos: ElliotDrel/*", skip any issues from repos owned by ElliotDrel.
103
-
104
- If `$CONFIG` is null (tracker has no Config section), ask the user if they want to set
105
- one up (which repos to track/exclude). The agent writes Config directly to the tracker
106
- file via the Edit tool (not through the script). The script reads Config; the agent writes it.
107
-
108
- **If tracker doesn't exist or has no issues** (first run):
109
-
110
- - Show `new_issues` grouped by repo. List which repos were found.
111
- - Ask: "Which repos do you want to track? You can also exclude any."
112
- - Save their choices to the `## Config` section by writing directly to the tracker via Edit.
113
- - Then ask which specific issues to track from the included repos.
114
-
115
- **If tracker exists with issues:**
116
-
117
- - Active issues are automatically included (unless excluded by config).
118
- - If `new_issues` is non-empty and passes config filters, tell the user what was
119
- found and add them to the analysis list.
120
- - If `reopened_issues` is non-empty, add them back to the active analysis list and
121
- note in your report that they were reopened (state changed from closed to open).
122
- The agent should manually move reopened issues from the Closed section back to
123
- Active in the tracker, preserving any context from the closed entry.
124
-
125
- Write the final issue list to `$TEMP_DIR/issues-to-fetch.json` for the fetch command.
126
- Each entry needs: `owner`, `repo`, `number`, `title`, `role`, `last_check_date`
127
- (null for new issues), `known_dupes` (from tracker or empty), `upstream` (from tracker or null).
128
-
129
- ---
130
-
131
- ## Step 2: Connect
132
-
133
- **Goal:** Fetch current data for every issue and find related/duplicate issues.
134
-
135
- ### 2a: Fetch all issue data
136
-
137
- ```bash
138
- node "$SKILL_DIR/bin/tracker-tools.cjs" fetch-issues --temp-dir "$TEMP_DIR" --issues "$TEMP_DIR/issues-to-fetch.json"
139
- ```
140
-
141
- This fetches metadata, body, comments, dupe states, upstream state, cross-references,
142
- and URLs for every issue in parallel. One `raw-OWNER-REPO-NUMBER.json` per issue.
143
-
144
- ### 2b: Analyze issues in batches
145
-
146
- Read `references/result-file-schema.md` and `references/gh-cli-patterns.md` from `$SKILL_DIR`.
147
-
148
- Group issues into batches of ~5. Spawn **one Agent per batch**. Each agent:
149
-
150
- 1. Reads the raw JSON files for its batch issues.
151
- 2. Searches for duplicates/related issues using `gh api` search queries.
152
- 3. Writes one result file per issue to `$TEMP_DIR/issue-OWNER-REPO-NUMBER.md` following
153
- the format in `references/result-file-schema.md`.
154
-
155
- **Depth control based on `last_check_date`:**
156
-
157
- The duplicate/related search always runs, but the scope changes:
158
-
159
- - **`null` (new issue):** Deep analysis. Read full comment history. Search broadly for
160
- duplicates by symptoms, error messages, and keywords.
161
- - **Checked within the last 7 days:** Shallow pass. Only read new comments since last check.
162
- Only check the state of already-known duplicates/related issues. Only search for new
163
- duplicates among issues created since the last check date.
164
- - **Checked more than 7 days ago:** Medium depth. Read comments since last check. Re-scan
165
- for new duplicates across a wider window. Check state of known duplicates.
166
-
167
- **Fill in missing data:** For each issue, compare what the tracker has against what the
168
- API returned. If the tracker entry is missing factual fields (Role description, What to check,
169
- Workaround, Key technical data, etc.), the agent should fill them in from the API data.
170
- This means every run progressively improves the tracker's completeness. Include any
171
- newly populated fields in the result file's `## Tracker Updates` section.
172
-
173
- **Exception — fields that require user input:** The **Goal** field must be asked, not
174
- guessed. If an issue is missing a Goal, flag it in the result file so Step 5b can
175
- collect them. Same for Config — never assume repo exclusions or preferences, always ask.
176
-
177
- Each agent prompt must include:
178
-
179
- - Raw data file paths for its batch
180
- - The existing tracker entry data for each issue (so the agent can identify gaps)
181
- - `owner`, `repo`, `number`, `title`, `role`, `last_check_date`, `username`
182
- - `cross_references` and `urls` from raw JSON
183
- - All tracked issue numbers (to filter dupe search results)
184
- - `$TODAY` as today's date (for history entries)
185
- - Instruction to read `$SKILL_DIR/references/result-file-schema.md` for format and quality guidance
186
-
187
- After all agents finish, verify file count:
188
-
189
- ```bash
190
- ls "$TEMP_DIR"/issue-*.md 2>/dev/null | wc -l
191
- ```
192
-
193
- ---
194
-
195
- ## Step 3: Save
196
-
197
- **Goal:** Immediately persist all factual data from the analysis to the tracker.
198
-
199
- This step is **mandatory and automatic** — no user permission needed. The analysis just
200
- finished and the result files contain factual data from the GitHub API. This step caches
201
- that data in the tracker so that even if the conversation is interrupted after this point,
202
- the tracker has the latest information.
203
-
204
- **If this is the first run** (no tracker existed):
205
-
206
- ```bash
207
- node "$SKILL_DIR/bin/tracker-tools.cjs" build-tracker --temp-dir "$TEMP_DIR" --template "$SKILL_DIR/tracker-template.md" --username "$USERNAME" --tracker "$TRACKER_PATH" --date "$TODAY"
208
- ```
209
-
210
- **If the tracker already exists:**
211
-
212
- ```bash
213
- node "$SKILL_DIR/bin/tracker-tools.cjs" update-tracker --tracker "$TRACKER_PATH" --temp-dir "$TEMP_DIR" --date "$TODAY"
214
- ```
215
-
216
- This saves: status dates, new comments, new duplicates, filled data gaps, state changes.
217
-
218
- **Every tracker update must be logged in History.** Every change the script makes to the
219
- tracker — new fields populated, status updates, new duplicates found — gets a history
220
- entry on the affected issue. The History section is an append-only audit trail. Examples:
221
- - `**2026-04-06:** Check-in: no new activity`
222
- - `**2026-04-06:** Filled in missing Workaround and Key technical data fields`
223
- - `**2026-04-06:** Found new duplicate #45123`
224
- - `**2026-04-06:** Status changed: open → closed`
225
-
226
- ---
227
-
228
- ## Step 4: Advise
229
-
230
- **Goal:** Identify concrete next steps for each issue before presenting the report.
231
-
232
- Read through all result files in `$TEMP_DIR/issue-*.md`. For each issue, use the
233
- **Goal** field from the tracker (e.g., "Get my fix merged", "Get maintainer to respond",
234
- "Monitor for upstream fix") to tailor recommendations. The goal tells you what success
235
- looks like — next steps should move toward that outcome.
236
-
237
- For each issue, determine:
238
-
239
- - Given the user's goal, what action would move this issue forward?
240
- - Are there related issues where commenting with a link to the user's issue would help?
241
- - Are there duplicates the user should reference or link to?
242
- - Is there a PR fixing the issue that needs testing or review?
243
-
244
- Collect all next steps. These get included in the report output.
245
-
246
- ---
247
-
248
- ## Step 5: Report and Act
249
-
250
- **Goal:** Show the user what's going on and help them take action.
251
-
252
- ### 5a: Report
253
-
254
- ```bash
255
- node "$SKILL_DIR/bin/tracker-tools.cjs" compile-report --temp-dir "$TEMP_DIR" --date "$TODAY"
256
- ```
257
-
258
- The script outputs the report text to stdout and metadata (including `today`) to stderr.
259
- Use the stdout output as raw data, but present the report to the user in YOUR response
260
- using the format below.
261
-
262
- **Report format — keep it tight and actionable:**
263
-
264
- The user wants to know three things: what changed, what's the update, what do I do.
265
- Skip GitHub spam (bot comments, auto-close noise, label changes). Use bullets, not tables.
266
-
267
- ```
268
- # Check-In — {date}
269
-
270
- ## What Changed
271
- - bullet per issue that had real activity (new human comments, state changes, PRs)
272
- - if nothing changed, say "No new activity across N tracked issues."
273
-
274
- ## New Issues Found
275
- - bullet per newly discovered issue (if any, after config filtering)
276
-
277
- ## Recommended Actions
278
- ### Do Today
279
- - specific action items the user should take right now
280
- ### Watch For
281
- - things that might need attention soon but not today
282
- ### No Action Needed
283
- - brief grouped summary of issues that are just waiting (e.g., "15 google-tools-mcp issues — no maintainer response")
284
- ```
285
-
286
- Do NOT list every single issue with its full status. Only mention issues where
287
- something happened or something needs to happen. Group quiet issues into one line.
288
-
289
- ### 5b: Collect missing Goals
290
-
291
- If result files flagged issues without a Goal, present them to the user grouped by repo
292
- and ask what their intent is for each. Example: "These issues don't have a goal set
293
- yet — what are you hoping for with each?"
294
-
295
- Once the user provides goals, write them directly to the tracker file via the Edit tool
296
- (not through the script). Add a history entry for each goal set:
297
- - `**2026-04-06:** Goal set: "Get maintainer to respond"`
298
-
299
- ### 5c: Act on next steps
300
-
301
- Present actionable items to the user:
302
-
303
- - If there are comments to post, issues to link, or other actions: ask the user
304
- "Want me to act on these next steps?" and list what you'd do.
305
- - If the user approves, execute the actions (post comments via `gh issue comment`, etc.)
306
- and write action results directly to the tracker via the Edit tool. Add history entries:
307
- - `**2026-04-06:** Posted comment on #1234 linking to duplicate #5678`
308
- - `**2026-04-06:** Added Config section to tracker (excluded: ElliotDrel/*)`
309
- - If no actions needed, just say so.
310
-
311
- ### 5d: Cleanup
312
-
313
- ```bash
314
- rm -rf "$TEMP_DIR"
315
- ```
316
-
317
- </flow>
318
-
319
- <context>
320
- $ARGUMENTS
321
- </context>
322
-
1
+ ---
2
+ name: estack-github-issue-tracker
3
+ version: 1.0.3
4
+ description: >
5
+ (github-issue-tracker) GitHub issue tracker management. Checks all open issues the user is involved in,
6
+ finds related/duplicate issues, reports what changed, and recommends next steps.
7
+ Run anytime for a check-in — works the same whether it's the first run or a daily habit.
8
+ The tracker file acts as a cache to make repeat runs faster.
9
+ allowed-tools:
10
+ - Read
11
+ - Write
12
+ - Edit
13
+ - Bash
14
+ - Grep
15
+ - Glob
16
+ - AskUserQuestion
17
+ - Agent
18
+ ---
19
+
20
+ <objective>
21
+ Give the user a complete, actionable update on every GitHub issue they're involved in.
22
+ One flow, every time — no modes, no flags. The only thing that changes between runs is
23
+ depth: more work when the tracker is empty or stale, less when it was just checked yesterday.
24
+ </objective>
25
+
26
+ <execution_context>
27
+ Resolve `$SKILL_DIR` from this file's location FIRST.
28
+
29
+ **Script:** `bin/tracker-tools.cjs` — handles all GitHub API calls, tracker parsing,
30
+ report compilation, and tracker updates. Invoke via:
31
+
32
+ ```bash
33
+ node "$SKILL_DIR/bin/tracker-tools.cjs" <command> [options]
34
+ ```
35
+
36
+ Every script command returns a `today` field like `today's date is **2026-04-05**, ignore earlier dates`.
37
+ Extract the date from this string. If you see multiple `today` values in your context
38
+ (from earlier commands), always use the most recent one.
39
+
40
+ **stdout/stderr convention:** `compile-report` outputs the report text to stdout and
41
+ metadata (including `today`) to stderr. Parse accordingly.
42
+
43
+ **Tracker file:** `$HOME/OneDrive/Documents/github-tracker.md`
44
+ This is the AI's knowledge base and source of truth. It stores everything in full detail:
45
+
46
+ - Every tracked issue with complete context, history, and technical data
47
+ - Known duplicates, related issues, cross-references
48
+ - User's intent/goals for each issue and what to watch for
49
+ - History of all actions taken and events observed
50
+ - Config directives (excluded repos, preferences)
51
+
52
+ The tracker is written FOR the AI — keep it detailed. When the user asks questions about
53
+ any issue, read the tracker first. It should have enough context to answer without
54
+ re-fetching from GitHub. The user-facing report (Step 5a) is a separate, concise summary.
55
+
56
+ **References:**
57
+
58
+ - `references/tracker-schema.md` — tracker file format
59
+ - `references/result-file-schema.md` — per-issue analysis format (agents write these)
60
+ - `references/gh-cli-patterns.md` — gh CLI command templates
61
+ - `tracker-template.md` — blank tracker for first run
62
+ </execution_context>
63
+
64
+ <flow>
65
+
66
+ The skill runs the same steps every time. The tracker determines depth — an empty
67
+ tracker means everything is new and needs deep analysis. A fresh tracker means most
68
+ issues just need a quick diff check.
69
+
70
+ ## Step 0: Startup
71
+
72
+ 1. Set `$TRACKER_PATH` to `$HOME/OneDrive/Documents/github-tracker.md`.
73
+ 2. Run startup:
74
+ ```bash
75
+ node "$SKILL_DIR/bin/tracker-tools.cjs" startup --tracker "$TRACKER_PATH"
76
+ ```
77
+ 3. Store the full response as `$STARTUP`. The script handles auth checking and temp dir
78
+ creation. If `auth` is false, show the user the `error` message from the output and STOP.
79
+ If `search_errors` is non-empty, warn the user that some discovery queries failed —
80
+ the results may be incomplete.
81
+ 4. Extract `$TODAY` (the YYYY-MM-DD date) from the `$STARTUP.today` string — use this as today's date for everything.
82
+ 5. Extract `$TEMP_DIR` from `$STARTUP.temp_dir`.
83
+ 6. Extract `$CONFIG` from `$STARTUP.config`. This is the user's plain English config
84
+ (excluded repos, preferences, etc.) parsed from the tracker's `## Config` section.
85
+ If null, the tracker has no config yet — you'll ask the user in Step 1.
86
+
87
+ ---
88
+
89
+ ## Step 1: Discover
90
+
91
+ **Goal:** Build the complete list of issues to analyze this run.
92
+
93
+ Sources (all from `$STARTUP`):
94
+
95
+ - `tracker_data.active_issues` — issues already tracked
96
+ - `new_issues` — open issues involving the user that aren't in the tracker yet
97
+ - `reopened_issues` — issues previously closed that are now open again
98
+ - `recently_closed` — issues closed since last check
99
+
100
+ **Check `$CONFIG` from startup.** If it contains directives (excluded repos, preferences),
101
+ apply them when filtering issues throughout this step. For example, if config says
102
+ "Excluded repos: ElliotDrel/*", skip any issues from repos owned by ElliotDrel.
103
+
104
+ If `$CONFIG` is null (tracker has no Config section), ask the user if they want to set
105
+ one up (which repos to track/exclude). The agent writes Config directly to the tracker
106
+ file via the Edit tool (not through the script). The script reads Config; the agent writes it.
107
+
108
+ **If tracker doesn't exist or has no issues** (first run):
109
+
110
+ - Show `new_issues` grouped by repo. List which repos were found.
111
+ - Ask: "Which repos do you want to track? You can also exclude any."
112
+ - Save their choices to the `## Config` section by writing directly to the tracker via Edit.
113
+ - Then ask which specific issues to track from the included repos.
114
+
115
+ **If tracker exists with issues:**
116
+
117
+ - Active issues are automatically included (unless excluded by config).
118
+ - If `new_issues` is non-empty and passes config filters, tell the user what was
119
+ found and add them to the analysis list.
120
+ - If `reopened_issues` is non-empty, add them back to the active analysis list and
121
+ note in your report that they were reopened (state changed from closed to open).
122
+ The agent should manually move reopened issues from the Closed section back to
123
+ Active in the tracker, preserving any context from the closed entry.
124
+
125
+ Write the final issue list to `$TEMP_DIR/issues-to-fetch.json` for the fetch command.
126
+ Each entry needs: `owner`, `repo`, `number`, `title`, `role`, `last_check_date`
127
+ (null for new issues), `known_dupes` (from tracker or empty), `upstream` (from tracker or null).
128
+
129
+ ---
130
+
131
+ ## Step 2: Connect
132
+
133
+ **Goal:** Fetch current data for every issue and find related/duplicate issues.
134
+
135
+ ### 2a: Fetch all issue data
136
+
137
+ ```bash
138
+ node "$SKILL_DIR/bin/tracker-tools.cjs" fetch-issues --temp-dir "$TEMP_DIR" --issues "$TEMP_DIR/issues-to-fetch.json"
139
+ ```
140
+
141
+ This fetches metadata, body, comments, dupe states, upstream state, cross-references,
142
+ and URLs for every issue in parallel. One `raw-OWNER-REPO-NUMBER.json` per issue.
143
+
144
+ ### 2b: Analyze issues in batches
145
+
146
+ Read `references/result-file-schema.md` and `references/gh-cli-patterns.md` from `$SKILL_DIR`.
147
+
148
+ Group issues into batches of ~5. Spawn **one Agent per batch**. Each agent:
149
+
150
+ 1. Reads the raw JSON files for its batch issues.
151
+ 2. Searches for duplicates/related issues using `gh api` search queries.
152
+ 3. Writes one result file per issue to `$TEMP_DIR/issue-OWNER-REPO-NUMBER.md` following
153
+ the format in `references/result-file-schema.md`.
154
+
155
+ **Depth control based on `last_check_date`:**
156
+
157
+ The duplicate/related search always runs, but the scope changes:
158
+
159
+ - **`null` (new issue):** Deep analysis. Read full comment history. Search broadly for
160
+ duplicates by symptoms, error messages, and keywords.
161
+ - **Checked within the last 7 days:** Shallow pass. Only read new comments since last check.
162
+ Only check the state of already-known duplicates/related issues. Only search for new
163
+ duplicates among issues created since the last check date.
164
+ - **Checked more than 7 days ago:** Medium depth. Read comments since last check. Re-scan
165
+ for new duplicates across a wider window. Check state of known duplicates.
166
+
167
+ **Fill in missing data:** For each issue, compare what the tracker has against what the
168
+ API returned. If the tracker entry is missing factual fields (Role description, What to check,
169
+ Workaround, Key technical data, etc.), the agent should fill them in from the API data.
170
+ This means every run progressively improves the tracker's completeness. Include any
171
+ newly populated fields in the result file's `## Tracker Updates` section.
172
+
173
+ **Exception — fields that require user input:** The **Goal** field must be asked, not
174
+ guessed. If an issue is missing a Goal, flag it in the result file so Step 5b can
175
+ collect them. Same for Config — never assume repo exclusions or preferences, always ask.
176
+
177
+ Each agent prompt must include:
178
+
179
+ - Raw data file paths for its batch
180
+ - The existing tracker entry data for each issue (so the agent can identify gaps)
181
+ - `owner`, `repo`, `number`, `title`, `role`, `last_check_date`, `username`
182
+ - `cross_references` and `urls` from raw JSON
183
+ - All tracked issue numbers (to filter dupe search results)
184
+ - `$TODAY` as today's date (for history entries)
185
+ - Instruction to read `$SKILL_DIR/references/result-file-schema.md` for format and quality guidance
186
+
187
+ After all agents finish, verify file count:
188
+
189
+ ```bash
190
+ ls "$TEMP_DIR"/issue-*.md 2>/dev/null | wc -l
191
+ ```
192
+
193
+ ---
194
+
195
+ ## Step 3: Save
196
+
197
+ **Goal:** Immediately persist all factual data from the analysis to the tracker.
198
+
199
+ This step is **mandatory and automatic** — no user permission needed. The analysis just
200
+ finished and the result files contain factual data from the GitHub API. This step caches
201
+ that data in the tracker so that even if the conversation is interrupted after this point,
202
+ the tracker has the latest information.
203
+
204
+ **If this is the first run** (no tracker existed):
205
+
206
+ ```bash
207
+ node "$SKILL_DIR/bin/tracker-tools.cjs" build-tracker --temp-dir "$TEMP_DIR" --template "$SKILL_DIR/tracker-template.md" --username "$USERNAME" --tracker "$TRACKER_PATH" --date "$TODAY"
208
+ ```
209
+
210
+ **If the tracker already exists:**
211
+
212
+ ```bash
213
+ node "$SKILL_DIR/bin/tracker-tools.cjs" update-tracker --tracker "$TRACKER_PATH" --temp-dir "$TEMP_DIR" --date "$TODAY"
214
+ ```
215
+
216
+ This saves: status dates, new comments, new duplicates, filled data gaps, state changes.
217
+
218
+ **Every tracker update must be logged in History.** Every change the script makes to the
219
+ tracker — new fields populated, status updates, new duplicates found — gets a history
220
+ entry on the affected issue. The History section is an append-only audit trail. Examples:
221
+ - `**2026-04-06:** Check-in: no new activity`
222
+ - `**2026-04-06:** Filled in missing Workaround and Key technical data fields`
223
+ - `**2026-04-06:** Found new duplicate #45123`
224
+ - `**2026-04-06:** Status changed: open → closed`
225
+
226
+ ---
227
+
228
+ ## Step 4: Advise
229
+
230
+ **Goal:** Identify concrete next steps for each issue before presenting the report.
231
+
232
+ Read through all result files in `$TEMP_DIR/issue-*.md`. For each issue, use the
233
+ **Goal** field from the tracker (e.g., "Get my fix merged", "Get maintainer to respond",
234
+ "Monitor for upstream fix") to tailor recommendations. The goal tells you what success
235
+ looks like — next steps should move toward that outcome.
236
+
237
+ For each issue, determine:
238
+
239
+ - Given the user's goal, what action would move this issue forward?
240
+ - Are there related issues where commenting with a link to the user's issue would help?
241
+ - Are there duplicates the user should reference or link to?
242
+ - Is there a PR fixing the issue that needs testing or review?
243
+
244
+ Collect all next steps. These get included in the report output.
245
+
246
+ ---
247
+
248
+ ## Step 5: Report and Act
249
+
250
+ **Goal:** Show the user what's going on and help them take action.
251
+
252
+ ### 5a: Report
253
+
254
+ ```bash
255
+ node "$SKILL_DIR/bin/tracker-tools.cjs" compile-report --temp-dir "$TEMP_DIR" --date "$TODAY"
256
+ ```
257
+
258
+ The script outputs the report text to stdout and metadata (including `today`) to stderr.
259
+ Use the stdout output as raw data, but present the report to the user in YOUR response
260
+ using the format below.
261
+
262
+ **Report format — keep it tight and actionable:**
263
+
264
+ The user wants to know three things: what changed, what's the update, what do I do.
265
+ Skip GitHub spam (bot comments, auto-close noise, label changes). Use bullets, not tables.
266
+
267
+ ```
268
+ # Check-In — {date}
269
+
270
+ ## What Changed
271
+ - bullet per issue that had real activity (new human comments, state changes, PRs)
272
+ - if nothing changed, say "No new activity across N tracked issues."
273
+
274
+ ## New Issues Found
275
+ - bullet per newly discovered issue (if any, after config filtering)
276
+
277
+ ## Recommended Actions
278
+ ### Do Today
279
+ - specific action items the user should take right now
280
+ ### Watch For
281
+ - things that might need attention soon but not today
282
+ ### No Action Needed
283
+ - brief grouped summary of issues that are just waiting (e.g., "15 google-tools-mcp issues — no maintainer response")
284
+ ```
285
+
286
+ Do NOT list every single issue with its full status. Only mention issues where
287
+ something happened or something needs to happen. Group quiet issues into one line.
288
+
289
+ ### 5b: Collect missing Goals
290
+
291
+ If result files flagged issues without a Goal, present them to the user grouped by repo
292
+ and ask what their intent is for each. Example: "These issues don't have a goal set
293
+ yet — what are you hoping for with each?"
294
+
295
+ Once the user provides goals, write them directly to the tracker file via the Edit tool
296
+ (not through the script). Add a history entry for each goal set:
297
+ - `**2026-04-06:** Goal set: "Get maintainer to respond"`
298
+
299
+ ### 5c: Act on next steps
300
+
301
+ Present actionable items to the user:
302
+
303
+ - If there are comments to post, issues to link, or other actions: ask the user
304
+ "Want me to act on these next steps?" and list what you'd do.
305
+ - If the user approves, execute the actions (post comments via `gh issue comment`, etc.)
306
+ and write action results directly to the tracker via the Edit tool. Add history entries:
307
+ - `**2026-04-06:** Posted comment on #1234 linking to duplicate #5678`
308
+ - `**2026-04-06:** Added Config section to tracker (excluded: ElliotDrel/*)`
309
+ - If no actions needed, just say so.
310
+
311
+ ### 5d: Cleanup
312
+
313
+ ```bash
314
+ rm -rf "$TEMP_DIR"
315
+ ```
316
+
317
+ </flow>
318
+
319
+ <context>
320
+ $ARGUMENTS
321
+ </context>
322
+
323
323
  ---
324
324
 
325
325
  ## Skill Feedback