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,124 +1,124 @@
1
- # gh CLI Patterns
2
-
3
- Reusable command templates for all GitHub API calls in this skill. Replace CAPS placeholders
4
- with actual values.
5
-
6
- ---
7
-
8
- ## Issue Metadata
9
-
10
- Fetch state, labels, comment count, timestamps:
11
- ```bash
12
- gh api repos/OWNER/REPO/issues/NUMBER --jq '{state: .state, labels: [.labels[].name], comments: .comments, updated: .updated_at, created: .created_at}'
13
- ```
14
-
15
- ## Issue Comments
16
-
17
- Last 3 comments with author, date, full body:
18
- ```bash
19
- gh api repos/OWNER/REPO/issues/NUMBER/comments --jq '.[-3:] | .[] | {author: .user.login, date: (.created_at | split("T")[0]), body: .body}'
20
- ```
21
-
22
- All comments (for drafting — verify claims before posting):
23
- ```bash
24
- gh api repos/OWNER/REPO/issues/NUMBER/comments --jq '.[] | {author: .user.login, date: .created_at, body: .body}'
25
- ```
26
-
27
- Comments since a date:
28
- ```bash
29
- gh api repos/OWNER/REPO/issues/NUMBER/comments --jq '[.[] | select(.created_at > "DATE")] | .[] | {author: .user.login, date: (.created_at | split("T")[0]), body: .body}'
30
- ```
31
-
32
- **Truncation rules:** Never truncate comments on the primary issue being reviewed — technical
33
- details (addresses, error codes, test counts) get lost. For secondary fetches (known
34
- duplicates, upstream), `[0:1500]` is acceptable to manage context size.
35
-
36
- ## Issue Body
37
-
38
- Full issue body (read before commenting on unfamiliar issues):
39
- ```bash
40
- gh api repos/OWNER/REPO/issues/NUMBER --jq '.body'
41
- ```
42
-
43
- ## Search: Issues Involving User
44
-
45
- Open issues with recent activity:
46
- ```bash
47
- gh api "search/issues?q=involves:USERNAME+updated:>DATE+is:open" --jq '.items[] | "#\(.number) \(.repository_url | split("/") | .[-2:] | join("/")) — \(.title) [updated: \(.updated_at)]"'
48
- ```
49
-
50
- ## Search: Issues by Author
51
-
52
- ```bash
53
- gh api "search/issues?q=author:USERNAME+is:open&per_page=100&sort=updated" --jq '.items[] | "#\(.number) \(.repository_url | split("/") | .[-2:] | join("/")) — \(.title) [updated: \(.updated_at | split("T")[0])]"'
54
- ```
55
-
56
- ## Search: Issues by Commenter (excluding authored)
57
-
58
- ```bash
59
- gh api "search/issues?q=commenter:USERNAME+is:open+-author:USERNAME&per_page=100&sort=updated" --jq '.items[] | "#\(.number) \(.repository_url | split("/") | .[-2:] | join("/")) — \(.title) [updated: \(.updated_at | split("T")[0])]"'
60
- ```
61
-
62
- ## Search: Keyword Search for Duplicates
63
-
64
- Search for issues matching keywords, created after a specific date:
65
- ```bash
66
- gh api "search/issues?q=repo:OWNER/REPO+is:open+created:>DATE+KEYWORD1+KEYWORD2&per_page=10" --jq '.items[] | "#\(.number) — \(.title) [\(.created_at | split("T")[0])] @\(.user.login)"'
67
- ```
68
-
69
- Use multiple keyword variations per search to catch different phrasings. Example for an OAuth issue:
70
- - Search 1: `OAuth redirect MCP`
71
- - Search 2: `clientId mcp add`
72
- - Search 3: `Slack plugin authentication`
73
-
74
- ## Search: Recently Closed Issues
75
-
76
- ```bash
77
- gh api "search/issues?q=involves:USERNAME+is:closed+closed:>DATE&per_page=50&sort=updated" --jq '.items[] | "#\(.number) \(.repository_url | split("/") | .[-2:] | join("/")) — \(.title) [closed: \(.closed_at | split("T")[0])]"'
78
- ```
79
-
80
- ## Post Comment
81
-
82
- ```bash
83
- gh issue comment NUMBER --repo OWNER/REPO --body "$(cat <<'EOF'
84
- Comment body here.
85
- Supports **markdown**.
86
- EOF
87
- )"
88
- ```
89
-
90
- Always use heredoc (`<<'EOF'`) for comment bodies to handle special characters and newlines.
91
-
92
- ## Quick State Check
93
-
94
- Check if an issue is still open (fast, minimal data):
95
- ```bash
96
- gh api repos/OWNER/REPO/issues/NUMBER --jq '.state'
97
- ```
98
-
99
- ## PR Status Check
100
-
101
- ```bash
102
- gh api repos/OWNER/REPO/pulls/NUMBER --jq '{state: .state, merged: .merged, title: .title, updated: .updated_at}'
103
- ```
104
-
105
- ---
106
-
107
- ## Rate Limiting
108
-
109
- GitHub API has rate limits. If running many parallel requests:
110
- - Authenticated requests: 5000/hour
111
- - Search API: 30 requests/minute
112
- - If you hit limits, batch searches and add short delays between search batches
113
- - Metadata fetches (repos/OWNER/REPO/issues/NUMBER) don't count against search limits
114
-
115
- ## Parallel Execution Strategy
116
-
117
- To maximize speed, batch API calls by type:
118
-
119
- **Batch 1 (parallel):** All active issue metadata + comments (these are REST calls, not search)
120
- **Batch 2 (parallel):** All known duplicate/related issue checks (REST calls)
121
- **Batch 3 (parallel):** All keyword searches for new duplicates (search API — respect 30/min limit)
122
- **Batch 4 (parallel):** User involvement search + closed issue checks + upstream checks
123
-
124
- Batches 1 and 2 can run simultaneously. Batch 3 should start after a brief pause if Batch 1+2 included many calls. Batch 4 can run with Batch 1.
1
+ # gh CLI Patterns
2
+
3
+ Reusable command templates for all GitHub API calls in this skill. Replace CAPS placeholders
4
+ with actual values.
5
+
6
+ ---
7
+
8
+ ## Issue Metadata
9
+
10
+ Fetch state, labels, comment count, timestamps:
11
+ ```bash
12
+ gh api repos/OWNER/REPO/issues/NUMBER --jq '{state: .state, labels: [.labels[].name], comments: .comments, updated: .updated_at, created: .created_at}'
13
+ ```
14
+
15
+ ## Issue Comments
16
+
17
+ Last 3 comments with author, date, full body:
18
+ ```bash
19
+ gh api repos/OWNER/REPO/issues/NUMBER/comments --jq '.[-3:] | .[] | {author: .user.login, date: (.created_at | split("T")[0]), body: .body}'
20
+ ```
21
+
22
+ All comments (for drafting — verify claims before posting):
23
+ ```bash
24
+ gh api repos/OWNER/REPO/issues/NUMBER/comments --jq '.[] | {author: .user.login, date: .created_at, body: .body}'
25
+ ```
26
+
27
+ Comments since a date:
28
+ ```bash
29
+ gh api repos/OWNER/REPO/issues/NUMBER/comments --jq '[.[] | select(.created_at > "DATE")] | .[] | {author: .user.login, date: (.created_at | split("T")[0]), body: .body}'
30
+ ```
31
+
32
+ **Truncation rules:** Never truncate comments on the primary issue being reviewed — technical
33
+ details (addresses, error codes, test counts) get lost. For secondary fetches (known
34
+ duplicates, upstream), `[0:1500]` is acceptable to manage context size.
35
+
36
+ ## Issue Body
37
+
38
+ Full issue body (read before commenting on unfamiliar issues):
39
+ ```bash
40
+ gh api repos/OWNER/REPO/issues/NUMBER --jq '.body'
41
+ ```
42
+
43
+ ## Search: Issues Involving User
44
+
45
+ Open issues with recent activity:
46
+ ```bash
47
+ gh api "search/issues?q=involves:USERNAME+updated:>DATE+is:open" --jq '.items[] | "#\(.number) \(.repository_url | split("/") | .[-2:] | join("/")) — \(.title) [updated: \(.updated_at)]"'
48
+ ```
49
+
50
+ ## Search: Issues by Author
51
+
52
+ ```bash
53
+ gh api "search/issues?q=author:USERNAME+is:open&per_page=100&sort=updated" --jq '.items[] | "#\(.number) \(.repository_url | split("/") | .[-2:] | join("/")) — \(.title) [updated: \(.updated_at | split("T")[0])]"'
54
+ ```
55
+
56
+ ## Search: Issues by Commenter (excluding authored)
57
+
58
+ ```bash
59
+ gh api "search/issues?q=commenter:USERNAME+is:open+-author:USERNAME&per_page=100&sort=updated" --jq '.items[] | "#\(.number) \(.repository_url | split("/") | .[-2:] | join("/")) — \(.title) [updated: \(.updated_at | split("T")[0])]"'
60
+ ```
61
+
62
+ ## Search: Keyword Search for Duplicates
63
+
64
+ Search for issues matching keywords, created after a specific date:
65
+ ```bash
66
+ gh api "search/issues?q=repo:OWNER/REPO+is:open+created:>DATE+KEYWORD1+KEYWORD2&per_page=10" --jq '.items[] | "#\(.number) — \(.title) [\(.created_at | split("T")[0])] @\(.user.login)"'
67
+ ```
68
+
69
+ Use multiple keyword variations per search to catch different phrasings. Example for an OAuth issue:
70
+ - Search 1: `OAuth redirect MCP`
71
+ - Search 2: `clientId mcp add`
72
+ - Search 3: `Slack plugin authentication`
73
+
74
+ ## Search: Recently Closed Issues
75
+
76
+ ```bash
77
+ gh api "search/issues?q=involves:USERNAME+is:closed+closed:>DATE&per_page=50&sort=updated" --jq '.items[] | "#\(.number) \(.repository_url | split("/") | .[-2:] | join("/")) — \(.title) [closed: \(.closed_at | split("T")[0])]"'
78
+ ```
79
+
80
+ ## Post Comment
81
+
82
+ ```bash
83
+ gh issue comment NUMBER --repo OWNER/REPO --body "$(cat <<'EOF'
84
+ Comment body here.
85
+ Supports **markdown**.
86
+ EOF
87
+ )"
88
+ ```
89
+
90
+ Always use heredoc (`<<'EOF'`) for comment bodies to handle special characters and newlines.
91
+
92
+ ## Quick State Check
93
+
94
+ Check if an issue is still open (fast, minimal data):
95
+ ```bash
96
+ gh api repos/OWNER/REPO/issues/NUMBER --jq '.state'
97
+ ```
98
+
99
+ ## PR Status Check
100
+
101
+ ```bash
102
+ gh api repos/OWNER/REPO/pulls/NUMBER --jq '{state: .state, merged: .merged, title: .title, updated: .updated_at}'
103
+ ```
104
+
105
+ ---
106
+
107
+ ## Rate Limiting
108
+
109
+ GitHub API has rate limits. If running many parallel requests:
110
+ - Authenticated requests: 5000/hour
111
+ - Search API: 30 requests/minute
112
+ - If you hit limits, batch searches and add short delays between search batches
113
+ - Metadata fetches (repos/OWNER/REPO/issues/NUMBER) don't count against search limits
114
+
115
+ ## Parallel Execution Strategy
116
+
117
+ To maximize speed, batch API calls by type:
118
+
119
+ **Batch 1 (parallel):** All active issue metadata + comments (these are REST calls, not search)
120
+ **Batch 2 (parallel):** All known duplicate/related issue checks (REST calls)
121
+ **Batch 3 (parallel):** All keyword searches for new duplicates (search API — respect 30/min limit)
122
+ **Batch 4 (parallel):** User involvement search + closed issue checks + upstream checks
123
+
124
+ Batches 1 and 2 can run simultaneously. Batch 3 should start after a brief pause if Batch 1+2 included many calls. Batch 4 can run with Batch 1.
@@ -1,156 +1,156 @@
1
- # Result File Schema
2
-
3
- > Written by analysis agents, consumed by `compile-report`, `build-tracker`, and `update-tracker`.
4
-
5
- One file per issue: `issue-OWNER-REPO-NUMBER.md` in the temp directory.
6
- Raw API data lives in `raw-OWNER-REPO-NUMBER.json` (written by `fetch-issues`).
7
-
8
- ---
9
-
10
- ## Frontmatter
11
-
12
- ```yaml
13
- ---
14
- type: issue
15
- owner: OWNER
16
- repo: REPO
17
- number: NUMBER
18
- title: "Issue title"
19
- state: open
20
- state_changed: false # true if state changed since last check
21
- labels: label1, label2
22
- has_activity: false # true if new comments since last check
23
- role: "SEE GUIDANCE BELOW"
24
- filed: YYYY-MM-DD
25
- last_check_date: null # date of previous check, null for first analysis
26
- last_commenter: "@username"
27
- last_comment_date: YYYY-MM-DD
28
- comment_count: N
29
- ---
30
- ```
31
-
32
- ### Role Field
33
-
34
- The role MUST describe what the user **did**, not just a label.
35
-
36
- Bad: `"Author"`, `"Commenter"`
37
- Good: `"Author (filed with 3 crash instances, posted workaround)"`,
38
- `"Commenter (confirmed bug + shared exact callbackPort: 3118 fix)"`
39
-
40
- ---
41
-
42
- ## Body Sections
43
-
44
- ### ## Status Summary
45
-
46
- Plain English: where does this issue stand and why does it matter? Write as if briefing
47
- someone who hasn't looked at the issue in a week. Include dates, names, numbers.
48
-
49
- Bad: "Issue is about a bug that causes crashes."
50
- Good: "You filed this on Jan 15 about a crash when renaming MCP servers. Root cause is
51
- tracked upstream in bun#28175. Workaround: name servers differently."
52
-
53
- ### ## Activity
54
-
55
- What happened since last check (or full history if first analysis).
56
-
57
- Format:
58
- ```
59
- - @username (YYYY-MM-DD): What they said WITH specifics.
60
- ```
61
-
62
- ### ## Duplicates and Related
63
-
64
- Two subsections:
65
-
66
- #### ### Known — updates
67
- Status changes on previously known duplicates/adjacent issues. Or "No changes."
68
-
69
- #### ### New finds
70
- Newly discovered duplicates or related issues. Or "None found."
71
-
72
- For each entry, explain whether it shares a **root cause** (duplicate) or just
73
- **symptoms** (adjacent). Don't just list titles — explain WHY it's related.
74
-
75
- Bad: `"#40693 — related rename issue"`
76
- Good: `"#40693 — VS Code UI blocking during rename. Same symptom (rename fails) but
77
- different root cause: UI thread blocking vs JSONL write. Adjacent, not duplicate."`
78
-
79
- ### ## Upstream
80
-
81
- Upstream dependency status — is this issue blocked on or related to an upstream fix?
82
- Write "N/A" if there are no upstream dependencies.
83
-
84
- Bad: `"There's an upstream issue."`
85
- Good: `"Blocked on bun#28175 (open, no activity since Mar 2). Fix landed in Node 22.4 but
86
- Bun hasn't ported it. No workaround available upstream."`
87
-
88
- ### ## Cross-References
89
-
90
- All issue numbers mentioned in the issue body and comments. Helps the tracker build
91
- a cross-reference map. List each with a one-line explanation of why it was mentioned.
92
-
93
- Bad: `"#100, #200, #300"`
94
- Good:
95
- ```
96
- - #28175 — upstream Bun issue causing the root crash
97
- - #40693 — adjacent rename bug (different root cause, shared symptom)
98
- - #41022 — PR that attempted a fix but was reverted
99
- ```
100
-
101
- ### ## Next Steps
102
-
103
- Specific, actionable items driven by the user's **Goal** for this issue (from the tracker).
104
- If the goal is "get my fix merged", focus on what's blocking the merge.
105
- If "get maintainer to respond", suggest ways to increase visibility.
106
- If "monitor for upstream fix", focus on upstream signals.
107
-
108
- Bad: `"Monitor for updates"`, `"Follow up"`
109
- Good: `"Respond to @maintainer's request for memory profiling data"`,
110
- `"Test fix in PR #4521 against your reproduction case"`,
111
- `"Nothing to do — waiting on maintainer review. Check back next week."`
112
-
113
- ### ## Watch For
114
-
115
- Specific, concrete signals to monitor for this issue. These drive what gets checked
116
- on the next run. Avoid generic statements — name exact PRs, labels, or events.
117
-
118
- Bad: `"Watch for updates"`, `"Monitor the repo"`
119
- Good:
120
- ```
121
- - PR #4521 merging (would fix root cause)
122
- - `p0` label being added (escalation signal)
123
- - @core-dev responding to the reproduction request from Mar 28
124
- ```
125
-
126
- ### ## Key Context
127
-
128
- Workarounds (exact commands, not paraphrases), severity signals, technical details
129
- someone would need to discuss this issue knowledgeably.
130
-
131
- Bad: `"Use different server names"`
132
- Good: `"Workaround: set MIMALLOC_ARENA_EAGER_COMMIT=0 before starting. Reduces peak
133
- RSS from 2.4GB to 1.1GB but doesn't eliminate growth."`
134
-
135
- ### ## Tracker Updates
136
-
137
- Machine-readable lines consumed by `update-tracker` and `build-tracker`:
138
-
139
- ```
140
- goal: Get my fix merged | Get maintainer response | Monitor for upstream fix | etc.
141
- status_summary: Open. Labels: bug, p1. JSONL crash on rename. 12 comments total.
142
- what_to_check: PRs modifying renameSession; JSONL title write logic changes.
143
- ```
144
-
145
- Optional:
146
- ```
147
- new_duplicate: #NUMBER — @author, "Title" (date). Why related. [duplicate|adjacent]
148
- ```
149
-
150
- History entries (one per notable event):
151
- ```
152
- history_entry: YYYY-MM-DD | Description of action or event
153
- ```
154
-
155
- What to log: actions taken ("Posted comment"), external events ("Maintainer replied"),
156
- state changes ("Closed via PR #123"). Don't log "no activity" — only real events.
1
+ # Result File Schema
2
+
3
+ > Written by analysis agents, consumed by `compile-report`, `build-tracker`, and `update-tracker`.
4
+
5
+ One file per issue: `issue-OWNER-REPO-NUMBER.md` in the temp directory.
6
+ Raw API data lives in `raw-OWNER-REPO-NUMBER.json` (written by `fetch-issues`).
7
+
8
+ ---
9
+
10
+ ## Frontmatter
11
+
12
+ ```yaml
13
+ ---
14
+ type: issue
15
+ owner: OWNER
16
+ repo: REPO
17
+ number: NUMBER
18
+ title: "Issue title"
19
+ state: open
20
+ state_changed: false # true if state changed since last check
21
+ labels: label1, label2
22
+ has_activity: false # true if new comments since last check
23
+ role: "SEE GUIDANCE BELOW"
24
+ filed: YYYY-MM-DD
25
+ last_check_date: null # date of previous check, null for first analysis
26
+ last_commenter: "@username"
27
+ last_comment_date: YYYY-MM-DD
28
+ comment_count: N
29
+ ---
30
+ ```
31
+
32
+ ### Role Field
33
+
34
+ The role MUST describe what the user **did**, not just a label.
35
+
36
+ Bad: `"Author"`, `"Commenter"`
37
+ Good: `"Author (filed with 3 crash instances, posted workaround)"`,
38
+ `"Commenter (confirmed bug + shared exact callbackPort: 3118 fix)"`
39
+
40
+ ---
41
+
42
+ ## Body Sections
43
+
44
+ ### ## Status Summary
45
+
46
+ Plain English: where does this issue stand and why does it matter? Write as if briefing
47
+ someone who hasn't looked at the issue in a week. Include dates, names, numbers.
48
+
49
+ Bad: "Issue is about a bug that causes crashes."
50
+ Good: "You filed this on Jan 15 about a crash when renaming MCP servers. Root cause is
51
+ tracked upstream in bun#28175. Workaround: name servers differently."
52
+
53
+ ### ## Activity
54
+
55
+ What happened since last check (or full history if first analysis).
56
+
57
+ Format:
58
+ ```
59
+ - @username (YYYY-MM-DD): What they said WITH specifics.
60
+ ```
61
+
62
+ ### ## Duplicates and Related
63
+
64
+ Two subsections:
65
+
66
+ #### ### Known — updates
67
+ Status changes on previously known duplicates/adjacent issues. Or "No changes."
68
+
69
+ #### ### New finds
70
+ Newly discovered duplicates or related issues. Or "None found."
71
+
72
+ For each entry, explain whether it shares a **root cause** (duplicate) or just
73
+ **symptoms** (adjacent). Don't just list titles — explain WHY it's related.
74
+
75
+ Bad: `"#40693 — related rename issue"`
76
+ Good: `"#40693 — VS Code UI blocking during rename. Same symptom (rename fails) but
77
+ different root cause: UI thread blocking vs JSONL write. Adjacent, not duplicate."`
78
+
79
+ ### ## Upstream
80
+
81
+ Upstream dependency status — is this issue blocked on or related to an upstream fix?
82
+ Write "N/A" if there are no upstream dependencies.
83
+
84
+ Bad: `"There's an upstream issue."`
85
+ Good: `"Blocked on bun#28175 (open, no activity since Mar 2). Fix landed in Node 22.4 but
86
+ Bun hasn't ported it. No workaround available upstream."`
87
+
88
+ ### ## Cross-References
89
+
90
+ All issue numbers mentioned in the issue body and comments. Helps the tracker build
91
+ a cross-reference map. List each with a one-line explanation of why it was mentioned.
92
+
93
+ Bad: `"#100, #200, #300"`
94
+ Good:
95
+ ```
96
+ - #28175 — upstream Bun issue causing the root crash
97
+ - #40693 — adjacent rename bug (different root cause, shared symptom)
98
+ - #41022 — PR that attempted a fix but was reverted
99
+ ```
100
+
101
+ ### ## Next Steps
102
+
103
+ Specific, actionable items driven by the user's **Goal** for this issue (from the tracker).
104
+ If the goal is "get my fix merged", focus on what's blocking the merge.
105
+ If "get maintainer to respond", suggest ways to increase visibility.
106
+ If "monitor for upstream fix", focus on upstream signals.
107
+
108
+ Bad: `"Monitor for updates"`, `"Follow up"`
109
+ Good: `"Respond to @maintainer's request for memory profiling data"`,
110
+ `"Test fix in PR #4521 against your reproduction case"`,
111
+ `"Nothing to do — waiting on maintainer review. Check back next week."`
112
+
113
+ ### ## Watch For
114
+
115
+ Specific, concrete signals to monitor for this issue. These drive what gets checked
116
+ on the next run. Avoid generic statements — name exact PRs, labels, or events.
117
+
118
+ Bad: `"Watch for updates"`, `"Monitor the repo"`
119
+ Good:
120
+ ```
121
+ - PR #4521 merging (would fix root cause)
122
+ - `p0` label being added (escalation signal)
123
+ - @core-dev responding to the reproduction request from Mar 28
124
+ ```
125
+
126
+ ### ## Key Context
127
+
128
+ Workarounds (exact commands, not paraphrases), severity signals, technical details
129
+ someone would need to discuss this issue knowledgeably.
130
+
131
+ Bad: `"Use different server names"`
132
+ Good: `"Workaround: set MIMALLOC_ARENA_EAGER_COMMIT=0 before starting. Reduces peak
133
+ RSS from 2.4GB to 1.1GB but doesn't eliminate growth."`
134
+
135
+ ### ## Tracker Updates
136
+
137
+ Machine-readable lines consumed by `update-tracker` and `build-tracker`:
138
+
139
+ ```
140
+ goal: Get my fix merged | Get maintainer response | Monitor for upstream fix | etc.
141
+ status_summary: Open. Labels: bug, p1. JSONL crash on rename. 12 comments total.
142
+ what_to_check: PRs modifying renameSession; JSONL title write logic changes.
143
+ ```
144
+
145
+ Optional:
146
+ ```
147
+ new_duplicate: #NUMBER — @author, "Title" (date). Why related. [duplicate|adjacent]
148
+ ```
149
+
150
+ History entries (one per notable event):
151
+ ```
152
+ history_entry: YYYY-MM-DD | Description of action or event
153
+ ```
154
+
155
+ What to log: actions taken ("Posted comment"), external events ("Maintainer replied"),
156
+ state changes ("Closed via PR #123"). Don't log "no activity" — only real events.