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.
- package/LICENSE +21 -21
- package/README.md +5 -0
- package/bin/install.cjs +981 -950
- package/hooks/repo-search-nudge.js +32 -32
- package/package.json +1 -1
- package/skills/estack-active-learning-tutor/SKILL.md +339 -339
- package/skills/estack-better-title/SKILL.md +64 -64
- package/skills/estack-better-title/scripts/rename.sh +55 -55
- package/skills/estack-chris-voss/SKILL.md +80 -80
- package/skills/estack-chris-voss/references/elliot-notes.md +120 -120
- package/skills/estack-chris-voss/references/voss-principles.md +210 -210
- package/skills/estack-customer-discovery/SKILL.md +60 -60
- package/skills/estack-flight-planner/SKILL.md +332 -332
- package/skills/estack-flight-planner/references/config_schema.md +156 -156
- package/skills/estack-flight-planner/references/flight_history_schema.md +97 -97
- package/skills/estack-flight-planner/references/shuttle_schedules.md +98 -98
- package/skills/estack-flight-planner/scripts/check_setup.sh +89 -89
- package/skills/estack-flight-planner/scripts/fetch_flights.py +99 -99
- package/skills/estack-flight-planner/scripts/filter_flights.py +265 -265
- package/skills/estack-flight-planner/scripts/pair_shuttles.py +173 -173
- package/skills/estack-github-issue-tracker/SKILL.md +322 -322
- package/skills/estack-github-issue-tracker/bin/tracker-tools.cjs +1358 -1358
- package/skills/estack-github-issue-tracker/references/gh-cli-patterns.md +124 -124
- package/skills/estack-github-issue-tracker/references/result-file-schema.md +156 -156
- package/skills/estack-github-issue-tracker/references/tracker-schema.md +96 -96
- package/skills/estack-github-issue-tracker/tracker-template.md +58 -58
- package/skills/estack-leadership-coach/SKILL.md +235 -0
- package/skills/estack-leadership-coach/adding-references.md +280 -0
- package/skills/estack-leadership-coach/frameworks/delegation/flows/post-mortem.md +120 -0
- package/skills/estack-leadership-coach/frameworks/delegation/flows/pre-delegation.md +138 -0
- package/skills/estack-leadership-coach/frameworks/delegation/phases/1-intake.md +145 -0
- package/skills/estack-leadership-coach/frameworks/delegation/phases/2-trm-assessment.md +119 -0
- package/skills/estack-leadership-coach/frameworks/delegation/phases/3-enrollment.md +132 -0
- package/skills/estack-leadership-coach/frameworks/delegation/phases/4-build-brief.md +171 -0
- package/skills/estack-leadership-coach/frameworks/delegation/phases/5-monitoring.md +134 -0
- package/skills/estack-leadership-coach/frameworks/delegation/phases/6-reverse-delegation.md +118 -0
- package/skills/estack-leadership-coach/frameworks/delegation/phases/7-diagnose.md +200 -0
- 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
- 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
- package/skills/estack-leadership-coach/references/.source-files/deci-ryan_self-determination-theory__selfdeterminationtheory-org-theory-overview-page.md +61 -0
- package/skills/estack-leadership-coach/references/.source-files/gallup_engagement-research__gallup-3-key-insights-into-the-global-workplace-2024.md +57 -0
- 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
- package/skills/estack-leadership-coach/references/.source-files/gallup_engagement-research__gallup-state-of-the-global-workplace-2026-global-data-summary.md +73 -0
- package/skills/estack-leadership-coach/references/.source-files/gallup_engagement-research__gallup-state-of-the-global-workplace-2026-report-landing.md +42 -0
- package/skills/estack-leadership-coach/references/.source-files/hormozi-leila_4-stages__leila-hormozi-the-art-of-delegation-blog-post.md +91 -0
- 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
- package/skills/estack-leadership-coach/references/.source-files/sanchez_main-street-millionaire__codie-sanchez-afford-anything-podcast-ep-565-show-notes.md +89 -0
- package/skills/estack-leadership-coach/references/.source-files/sullivan_who-not-how__dan-sullivan-impact-filter-tool-and-guide-booklet.md +565 -0
- 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
- package/skills/estack-leadership-coach/references/.source-files/van-edwards_cues__vanessa-van-edwards-roger-dooley-cues-interview.md +194 -0
- package/skills/estack-leadership-coach/references/deci-ryan_self-determination-theory.md +166 -0
- package/skills/estack-leadership-coach/references/doerr_measure-what-matters.md +154 -0
- package/skills/estack-leadership-coach/references/ferriss_4hww.md +189 -0
- package/skills/estack-leadership-coach/references/gallup_engagement-research.md +105 -0
- package/skills/estack-leadership-coach/references/gerber_e-myth-revisited.md +118 -0
- package/skills/estack-leadership-coach/references/grove_high-output-management.md +95 -0
- package/skills/estack-leadership-coach/references/hormozi-alex_followthrough.md +152 -0
- package/skills/estack-leadership-coach/references/hormozi-leila_4-stages.md +146 -0
- package/skills/estack-leadership-coach/references/oncken-wass_monkeys-hbr-1974.md +128 -0
- package/skills/estack-leadership-coach/references/sanchez_main-street-millionaire.md +196 -0
- package/skills/estack-leadership-coach/references/sullivan_who-not-how.md +137 -0
- package/skills/estack-leadership-coach/references/van-edwards_cues.md +189 -0
- package/skills/estack-migrate-claude-session-history/SKILL.md +226 -0
- package/skills/estack-migrate-claude-session-history/references/path-encoding.md +55 -0
- package/skills/estack-migrate-claude-session-history/references/troubleshooting.md +96 -0
- package/skills/estack-migrate-claude-session-history/scripts/migrate-claude-history.js +1123 -0
- package/skills/estack-migrate-claude-session-history/scripts/test-append-note.js +48 -0
- package/skills/estack-migrate-claude-session-history/scripts/test-validate-migration.py +326 -0
- package/skills/estack-migrate-claude-session-history/scripts/validate-migration.py +493 -0
- package/skills/estack-pdf-to-md/SKILL.md +180 -0
- package/skills/estack-pdf-to-md/scripts/pdf_to_md.py +596 -0
- package/skills/estack-productivity-prioritization-coach/SKILL.md +124 -0
- package/skills/estack-productivity-prioritization-coach/sources/01-tony-robbins-rpm.md +39 -0
- package/skills/estack-productivity-prioritization-coach/sources/02-justin-sung-task-prioritization.md +34 -0
- package/skills/estack-prompt-builder-coach/SKILL.md +81 -81
- package/skills/estack-prompt-builder-coach/definition-of-done-generator.md +42 -42
- package/skills/estack-prompt-builder-coach/prompt-builder.md +37 -37
- package/skills/estack-prompt-builder-coach/task-shaper.md +36 -36
- package/skills/estack-prompt-builder-coach/vague-ask-auditor.md +37 -37
- package/skills/estack-read-claude-session-history/SKILL.md +204 -204
- package/skills/estack-read-claude-session-history/references/jsonl-schema.md +126 -126
- package/skills/estack-read-claude-session-history/references/modes.md +423 -423
- package/skills/estack-read-claude-session-history/references/recipes.md +271 -271
- package/skills/estack-read-claude-session-history/scripts/lib/__init__.py +1 -1
- package/skills/estack-read-claude-session-history/scripts/lib/parser.py +460 -460
- package/skills/estack-read-claude-session-history/scripts/lib/paths.py +234 -234
- package/skills/estack-read-claude-session-history/scripts/lib/search.py +179 -179
- package/skills/estack-read-claude-session-history/scripts/lib/subagents.py +88 -88
- package/skills/estack-read-claude-session-history/scripts/lib/tools.py +144 -144
- package/skills/estack-read-claude-session-history/scripts/read_transcript.py +1776 -1776
- package/skills/estack-read-claude-session-history/scripts/tests/conftest.py +40 -40
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/README.md +20 -20
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/all-noise.jsonl +4 -4
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/basic-session.jsonl +2 -2
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/engagement-gaps.jsonl +9 -9
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/engagement-noise.jsonl +7 -7
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/engagement-parallel-a.jsonl +3 -3
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/engagement-parallel-b.jsonl +3 -3
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/engagement-waiting.jsonl +5 -5
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/interrupted.jsonl +2 -2
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/multi-compact.jsonl +8 -8
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/pending-user.jsonl +2 -2
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/subagent-no-meta/subagents/agent-aaa.jsonl +2 -2
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/subagent-no-meta.jsonl +2 -2
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/subagent-parent/subagents/agent-xyz123.jsonl +2 -2
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/subagent-parent/subagents/agent-xyz123.meta.json +1 -1
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/subagent-parent.jsonl +4 -4
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/time-spread.jsonl +6 -6
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/timeline-day-test.jsonl +5 -5
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/tool-zoo.jsonl +10 -10
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/truncated.jsonl +2 -2
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/unicode.jsonl +2 -2
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/with-advisor.jsonl +3 -3
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/with-compact.jsonl +5 -5
- package/skills/estack-read-claude-session-history/scripts/tests/fixtures/with-thinking.jsonl +2 -2
- package/skills/estack-read-claude-session-history/scripts/tests/test_backup_roots.py +56 -56
- package/skills/estack-read-claude-session-history/scripts/tests/test_engagement.py +239 -239
- package/skills/estack-read-claude-session-history/scripts/tests/test_json_format.py +201 -201
- package/skills/estack-read-claude-session-history/scripts/tests/test_modes.py +199 -199
- package/skills/estack-read-claude-session-history/scripts/tests/test_parser.py +195 -195
- package/skills/estack-read-claude-session-history/scripts/tests/test_paths.py +133 -133
- package/skills/estack-read-claude-session-history/scripts/tests/test_search.py +78 -78
- package/skills/estack-read-claude-session-history/scripts/tests/test_subagents.py +43 -43
- package/skills/estack-read-claude-session-history/scripts/tests/test_timeline.py +179 -179
- package/skills/estack-read-claude-session-history/scripts/tests/test_timezone_and_project.py +212 -212
- package/skills/estack-read-claude-session-history/scripts/tests/test_tools.py +80 -80
- package/skills/estack-repo-search/SKILL.md +65 -65
- package/skills/estack-vscode-file-recovery/SKILL.md +188 -0
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: estack-better-title
|
|
3
|
-
version: 1.0.3
|
|
4
|
-
description: (better-title) Suggest better chat session titles and rename the session
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
allowed-tools: Bash, AskUserQuestion
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Better Title
|
|
10
|
-
|
|
11
|
-
The current session ID is: ${CLAUDE_SESSION_ID}
|
|
12
|
-
|
|
13
|
-
## Your task
|
|
14
|
-
|
|
15
|
-
Suggest **3 descriptive titles** for this chat session based on the conversation so far. The goal is to make sessions easy to find later.
|
|
16
|
-
|
|
17
|
-
### Before drafting, do this quick mental pass
|
|
18
|
-
|
|
19
|
-
Ask yourself:
|
|
20
|
-
1. What were the **goals** going in?
|
|
21
|
-
2. What **got built / decided / fixed** that the user might reference later?
|
|
22
|
-
3. What was **noise** — mistakes, abandoned approaches, things they had to redirect you on, dead ends? (These do NOT belong in the title.)
|
|
23
|
-
4. What's **temporary** vs. **lasting**? Temporary states should be mentioned briefly, not led with.
|
|
24
|
-
|
|
25
|
-
Write the title from those answers, NOT from a chronological recap of the chat.
|
|
26
|
-
|
|
27
|
-
### Good titles
|
|
28
|
-
|
|
29
|
-
- Summarize **what was accomplished**, not what was attempted
|
|
30
|
-
- **Title the outputs, not the journey** — exclude mistakes, dead ends, and abandoned approaches. They're not searchable and not useful context for future-you.
|
|
31
|
-
- **Use plain language a future-you would search for.** Avoid jargon like "passthrough," "edge cases," "toggle logic," "auto-cd," "refactored," "overhaul." Say what it does in normal words.
|
|
32
|
-
- **Weight by long-term reference value.** If something will stop mattering in weeks or months (temporary fixes, current-state notes, "until X is available" workarounds), mention it briefly but don't lead with it.
|
|
33
|
-
- List key outputs separated by dashes, commas, or similar (e.g. "Reverse-Engineering /rename, PR #33165 Comment, and Building /estack-better-title Skill")
|
|
34
|
-
- Cover 2-4 main outputs. Resist cramming everything in — first-pass attempts tend to over-include.
|
|
35
|
-
- Are detailed enough that someone skimming a session list can tell exactly what they'd find inside
|
|
36
|
-
- Typically 8-20 words — longer is fine if it adds useful detail
|
|
37
|
-
|
|
38
|
-
## Format
|
|
39
|
-
|
|
40
|
-
Present the 3 options using `AskUserQuestion` with a single-select question (`multiSelect: false`):
|
|
41
|
-
- Each option's `label` is the full title text
|
|
42
|
-
- Each option's `description` is a brief rationale for why it's a good title
|
|
43
|
-
- The user can also select "Other" (provided automatically) to give feedback
|
|
44
|
-
|
|
45
|
-
## Interaction loop
|
|
46
|
-
|
|
47
|
-
- If the user selects one of the 3 titles, use that title.
|
|
48
|
-
- If the user selects "Other" and provides feedback (e.g. "shorter", "more specific", "mention X"), generate 3 new suggestions incorporating their feedback and present again via `AskUserQuestion`.
|
|
49
|
-
- Keep iterating until the user selects a title or gives you an exact title.
|
|
50
|
-
|
|
51
|
-
## Renaming
|
|
52
|
-
|
|
53
|
-
Once the user has chosen a title, run the rename script using a quoted heredoc to pass the title safely:
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
bash "${CLAUDE_SKILL_DIR}/scripts/rename.sh" "${CLAUDE_SESSION_ID}" <<'__CLAUDE_TITLE__'
|
|
57
|
-
<chosen title>
|
|
58
|
-
__CLAUDE_TITLE__
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
Replace `<chosen title>` with the actual chosen title. The quoted heredoc (`<<'__CLAUDE_TITLE__'`) prevents the shell from interpreting any special characters in the title — quotes, apostrophes, dollar signs, backticks, etc. are all passed through literally. After running, confirm the rename succeeded.
|
|
62
|
-
|
|
63
|
-
**Important:** The live UI border won't update until the next session resume — the persisted title will show in the session list and on next `/resume`.
|
|
64
|
-
|
|
1
|
+
---
|
|
2
|
+
name: estack-better-title
|
|
3
|
+
version: 1.0.3
|
|
4
|
+
description: (better-title) Suggest better chat session titles and rename the session
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
allowed-tools: Bash, AskUserQuestion
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Better Title
|
|
10
|
+
|
|
11
|
+
The current session ID is: ${CLAUDE_SESSION_ID}
|
|
12
|
+
|
|
13
|
+
## Your task
|
|
14
|
+
|
|
15
|
+
Suggest **3 descriptive titles** for this chat session based on the conversation so far. The goal is to make sessions easy to find later.
|
|
16
|
+
|
|
17
|
+
### Before drafting, do this quick mental pass
|
|
18
|
+
|
|
19
|
+
Ask yourself:
|
|
20
|
+
1. What were the **goals** going in?
|
|
21
|
+
2. What **got built / decided / fixed** that the user might reference later?
|
|
22
|
+
3. What was **noise** — mistakes, abandoned approaches, things they had to redirect you on, dead ends? (These do NOT belong in the title.)
|
|
23
|
+
4. What's **temporary** vs. **lasting**? Temporary states should be mentioned briefly, not led with.
|
|
24
|
+
|
|
25
|
+
Write the title from those answers, NOT from a chronological recap of the chat.
|
|
26
|
+
|
|
27
|
+
### Good titles
|
|
28
|
+
|
|
29
|
+
- Summarize **what was accomplished**, not what was attempted
|
|
30
|
+
- **Title the outputs, not the journey** — exclude mistakes, dead ends, and abandoned approaches. They're not searchable and not useful context for future-you.
|
|
31
|
+
- **Use plain language a future-you would search for.** Avoid jargon like "passthrough," "edge cases," "toggle logic," "auto-cd," "refactored," "overhaul." Say what it does in normal words.
|
|
32
|
+
- **Weight by long-term reference value.** If something will stop mattering in weeks or months (temporary fixes, current-state notes, "until X is available" workarounds), mention it briefly but don't lead with it.
|
|
33
|
+
- List key outputs separated by dashes, commas, or similar (e.g. "Reverse-Engineering /rename, PR #33165 Comment, and Building /estack-better-title Skill")
|
|
34
|
+
- Cover 2-4 main outputs. Resist cramming everything in — first-pass attempts tend to over-include.
|
|
35
|
+
- Are detailed enough that someone skimming a session list can tell exactly what they'd find inside
|
|
36
|
+
- Typically 8-20 words — longer is fine if it adds useful detail
|
|
37
|
+
|
|
38
|
+
## Format
|
|
39
|
+
|
|
40
|
+
Present the 3 options using `AskUserQuestion` with a single-select question (`multiSelect: false`):
|
|
41
|
+
- Each option's `label` is the full title text
|
|
42
|
+
- Each option's `description` is a brief rationale for why it's a good title
|
|
43
|
+
- The user can also select "Other" (provided automatically) to give feedback
|
|
44
|
+
|
|
45
|
+
## Interaction loop
|
|
46
|
+
|
|
47
|
+
- If the user selects one of the 3 titles, use that title.
|
|
48
|
+
- If the user selects "Other" and provides feedback (e.g. "shorter", "more specific", "mention X"), generate 3 new suggestions incorporating their feedback and present again via `AskUserQuestion`.
|
|
49
|
+
- Keep iterating until the user selects a title or gives you an exact title.
|
|
50
|
+
|
|
51
|
+
## Renaming
|
|
52
|
+
|
|
53
|
+
Once the user has chosen a title, run the rename script using a quoted heredoc to pass the title safely:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
bash "${CLAUDE_SKILL_DIR}/scripts/rename.sh" "${CLAUDE_SESSION_ID}" <<'__CLAUDE_TITLE__'
|
|
57
|
+
<chosen title>
|
|
58
|
+
__CLAUDE_TITLE__
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Replace `<chosen title>` with the actual chosen title. The quoted heredoc (`<<'__CLAUDE_TITLE__'`) prevents the shell from interpreting any special characters in the title — quotes, apostrophes, dollar signs, backticks, etc. are all passed through literally. After running, confirm the rename succeeded.
|
|
62
|
+
|
|
63
|
+
**Important:** The live UI border won't update until the next session resume — the persisted title will show in the session list and on next `/resume`.
|
|
64
|
+
|
|
65
65
|
---
|
|
66
66
|
|
|
67
67
|
## Skill Feedback
|
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Renames a Claude Code session by appending title entries (append-only, never rewrites)
|
|
3
|
-
# Usage: rename.sh <session-id> <title>
|
|
4
|
-
# or: pass the title on stdin to rename.sh <session-id>
|
|
5
|
-
|
|
6
|
-
set -euo pipefail
|
|
7
|
-
|
|
8
|
-
SESSION_ID="${1-}"
|
|
9
|
-
TITLE="${2-}"
|
|
10
|
-
|
|
11
|
-
# If no title argument, read from stdin (supports heredoc input)
|
|
12
|
-
if [[ -z "$TITLE" ]]; then
|
|
13
|
-
TITLE="$(cat)"
|
|
14
|
-
fi
|
|
15
|
-
|
|
16
|
-
if [[ -z "$SESSION_ID" || -z "$TITLE" ]]; then
|
|
17
|
-
echo "Error: Usage: rename.sh <session-id> <title>" >&2
|
|
18
|
-
echo " or: pass the title on stdin to rename.sh <session-id>" >&2
|
|
19
|
-
exit 1
|
|
20
|
-
fi
|
|
21
|
-
|
|
22
|
-
# Reject multiline titles (JSONL entries must be single lines)
|
|
23
|
-
if [[ "$TITLE" == *$'\n'* || "$TITLE" == *$'\r'* ]]; then
|
|
24
|
-
echo "Error: title must be a single line" >&2
|
|
25
|
-
exit 1
|
|
26
|
-
fi
|
|
27
|
-
|
|
28
|
-
# Use Node's JSON.stringify for safe escaping of all special characters
|
|
29
|
-
TITLE_JSON="$(node -e 'process.stdout.write(JSON.stringify(process.argv[1]))' "$TITLE")"
|
|
30
|
-
|
|
31
|
-
# Find the session JSONL file
|
|
32
|
-
SESSION_FILE=$(find "$HOME/.claude/projects/" -maxdepth 2 -name "${SESSION_ID}.jsonl" -type f 2>/dev/null | head -1)
|
|
33
|
-
|
|
34
|
-
if [[ -z "$SESSION_FILE" ]]; then
|
|
35
|
-
echo "Error: Could not find session file for ${SESSION_ID}" >&2
|
|
36
|
-
exit 1
|
|
37
|
-
fi
|
|
38
|
-
|
|
39
|
-
# Build the exact lines we intend to append
|
|
40
|
-
CUSTOM_LINE="$(printf '{"type":"custom-title","customTitle":%s,"sessionId":"%s"}' "$TITLE_JSON" "$SESSION_ID")"
|
|
41
|
-
AGENT_LINE="$(printf '{"type":"agent-name","agentName":%s,"sessionId":"%s"}' "$TITLE_JSON" "$SESSION_ID")"
|
|
42
|
-
|
|
43
|
-
# Check if both last entries already match (idempotent — skip if already current)
|
|
44
|
-
LAST_CUSTOM="$(grep '^{"type":"custom-title"' "$SESSION_FILE" | tail -n 1 || true)"
|
|
45
|
-
LAST_AGENT="$(grep '^{"type":"agent-name"' "$SESSION_FILE" | tail -n 1 || true)"
|
|
46
|
-
|
|
47
|
-
if [[ "$LAST_CUSTOM" == "$CUSTOM_LINE" && "$LAST_AGENT" == "$AGENT_LINE" ]]; then
|
|
48
|
-
echo "Session already named: ${TITLE}"
|
|
49
|
-
exit 0
|
|
50
|
-
fi
|
|
51
|
-
|
|
52
|
-
# Append-only: never rewrite the file, just add new entries at the end
|
|
53
|
-
printf '%s\n%s\n' "$CUSTOM_LINE" "$AGENT_LINE" >> "$SESSION_FILE"
|
|
54
|
-
|
|
55
|
-
echo "Renamed session to: ${TITLE}"
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Renames a Claude Code session by appending title entries (append-only, never rewrites)
|
|
3
|
+
# Usage: rename.sh <session-id> <title>
|
|
4
|
+
# or: pass the title on stdin to rename.sh <session-id>
|
|
5
|
+
|
|
6
|
+
set -euo pipefail
|
|
7
|
+
|
|
8
|
+
SESSION_ID="${1-}"
|
|
9
|
+
TITLE="${2-}"
|
|
10
|
+
|
|
11
|
+
# If no title argument, read from stdin (supports heredoc input)
|
|
12
|
+
if [[ -z "$TITLE" ]]; then
|
|
13
|
+
TITLE="$(cat)"
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
if [[ -z "$SESSION_ID" || -z "$TITLE" ]]; then
|
|
17
|
+
echo "Error: Usage: rename.sh <session-id> <title>" >&2
|
|
18
|
+
echo " or: pass the title on stdin to rename.sh <session-id>" >&2
|
|
19
|
+
exit 1
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
# Reject multiline titles (JSONL entries must be single lines)
|
|
23
|
+
if [[ "$TITLE" == *$'\n'* || "$TITLE" == *$'\r'* ]]; then
|
|
24
|
+
echo "Error: title must be a single line" >&2
|
|
25
|
+
exit 1
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
# Use Node's JSON.stringify for safe escaping of all special characters
|
|
29
|
+
TITLE_JSON="$(node -e 'process.stdout.write(JSON.stringify(process.argv[1]))' "$TITLE")"
|
|
30
|
+
|
|
31
|
+
# Find the session JSONL file
|
|
32
|
+
SESSION_FILE=$(find "$HOME/.claude/projects/" -maxdepth 2 -name "${SESSION_ID}.jsonl" -type f 2>/dev/null | head -1)
|
|
33
|
+
|
|
34
|
+
if [[ -z "$SESSION_FILE" ]]; then
|
|
35
|
+
echo "Error: Could not find session file for ${SESSION_ID}" >&2
|
|
36
|
+
exit 1
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
# Build the exact lines we intend to append
|
|
40
|
+
CUSTOM_LINE="$(printf '{"type":"custom-title","customTitle":%s,"sessionId":"%s"}' "$TITLE_JSON" "$SESSION_ID")"
|
|
41
|
+
AGENT_LINE="$(printf '{"type":"agent-name","agentName":%s,"sessionId":"%s"}' "$TITLE_JSON" "$SESSION_ID")"
|
|
42
|
+
|
|
43
|
+
# Check if both last entries already match (idempotent — skip if already current)
|
|
44
|
+
LAST_CUSTOM="$(grep '^{"type":"custom-title"' "$SESSION_FILE" | tail -n 1 || true)"
|
|
45
|
+
LAST_AGENT="$(grep '^{"type":"agent-name"' "$SESSION_FILE" | tail -n 1 || true)"
|
|
46
|
+
|
|
47
|
+
if [[ "$LAST_CUSTOM" == "$CUSTOM_LINE" && "$LAST_AGENT" == "$AGENT_LINE" ]]; then
|
|
48
|
+
echo "Session already named: ${TITLE}"
|
|
49
|
+
exit 0
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
# Append-only: never rewrite the file, just add new entries at the end
|
|
53
|
+
printf '%s\n%s\n' "$CUSTOM_LINE" "$AGENT_LINE" >> "$SESSION_FILE"
|
|
54
|
+
|
|
55
|
+
echo "Renamed session to: ${TITLE}"
|
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: estack-chris-voss
|
|
3
|
-
version: 1.0.2
|
|
4
|
-
description: >
|
|
5
|
-
(chris-voss) Applies Chris Voss negotiation principles from *Never Split the Difference* to any situation
|
|
6
|
-
where understanding human psychology, persuasion, or influence would improve the output. Use
|
|
7
|
-
when the user is navigating a situation involving another person, drafting communication that
|
|
8
|
-
needs to land a certain way, or asking for advice on how to approach a difficult conversation —
|
|
9
|
-
even if they don't explicitly ask for negotiation help. Do not use for coding, math, or factual
|
|
10
|
-
lookups.
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# Chris Voss Negotiation Skill
|
|
14
|
-
|
|
15
|
-
You have deep, internalized knowledge of *Never Split the Difference* by Chris Voss. Your job is
|
|
16
|
-
to naturally inject his principles into whatever the user is working on — making the output more
|
|
17
|
-
persuasive, emotionally intelligent, and strategically sound — even when they didn't ask for it.
|
|
18
|
-
|
|
19
|
-
This skill applies any time the quality of the answer depends on understanding how people receive
|
|
20
|
-
information, make decisions, or get moved to act. That includes live interpersonal situations
|
|
21
|
-
(conversations, negotiations, conflict) but also any output with an implicit audience: a pitch
|
|
22
|
-
deck, a pricing structure, a proposal, a cold message, an argument. Voss's principles — loss
|
|
23
|
-
aversion, emotional anchoring, labeling, calibrated framing, tactical empathy — apply whenever
|
|
24
|
-
a human will eventually be on the receiving end of what's being built.
|
|
25
|
-
|
|
26
|
-
Think of yourself as a negotiation consultant sitting beside the user. Read the situation,
|
|
27
|
-
identify where Voss's lens adds value, and apply the right tools without making it a lecture.
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## How to Apply This Skill
|
|
32
|
-
|
|
33
|
-
Read the user's situation, then draw from the principles below to improve, rewrite, or advise.
|
|
34
|
-
You don't need to label every technique you're using — just use them. If it helps the user to
|
|
35
|
-
understand *why* something works, briefly explain it, but don't turn every response into a lecture.
|
|
36
|
-
|
|
37
|
-
**Prioritize:**
|
|
38
|
-
- Giving the user exact words or a rewritten draft when they need one
|
|
39
|
-
- Identifying the emotional or psychological dynamics at play — in the room or in the reader
|
|
40
|
-
- Pointing out where the user might be giving away power or framing things suboptimally
|
|
41
|
-
- Preempting objections and resistance before they arise
|
|
42
|
-
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
## Core Principles Reference
|
|
46
|
-
|
|
47
|
-
Read `references/voss-principles.md` for the full structured knowledge base, and
|
|
48
|
-
`references/elliot-notes.md` for additional personal highlights and edge cases. Below is a
|
|
49
|
-
quick index of when to reach for each tool:
|
|
50
|
-
|
|
51
|
-
| Situation | Primary Tools |
|
|
52
|
-
|---|---|
|
|
53
|
-
| Need a reply to a silent email/text | "Have you given up on X?" framing, No-oriented question |
|
|
54
|
-
| Writing a persuasive ask/request | Accusation audit, lead with value, FOMO framing |
|
|
55
|
-
| Pitching an idea, product, or company | Loss aversion framing, emotional anchoring, accusation audit |
|
|
56
|
-
| Structuring pricing or an offer | Precise numbers, Ackerman logic, nonmonetary add-on |
|
|
57
|
-
| Anticipating pushback or rejection | Label negatives upfront, accusation audit |
|
|
58
|
-
| Tense conversation / conflict | Labeling, mirroring, downward voice tone |
|
|
59
|
-
| Someone not engaged / shutting down | Mirroring, calibrated questions, "That's right" pursuit |
|
|
60
|
-
| Trying to build trust quickly | Similarity principle, tactical empathy, acknowledge the negative |
|
|
61
|
-
| Getting someone to commit (not just agree) | Rule of 3, "how/what" implementation questions |
|
|
62
|
-
| Someone being unreasonable | Look for black swans — there's something you don't know yet |
|
|
63
|
-
| Deadline pressure | Reframe: deadlines are often self-imposed and flexible |
|
|
64
|
-
| Positioning or messaging for an audience | Emotional framing, loss aversion, accusation audit |
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
## Output Style
|
|
69
|
-
|
|
70
|
-
- **For messages/emails/outreach**: Rewrite or draft directly, applying Voss principles implicitly.
|
|
71
|
-
- **For pitches, decks, proposals**: Shape framing, ordering, and language around how the audience
|
|
72
|
-
will emotionally receive it — not just what's logically true.
|
|
73
|
-
- **For live situations/conversations**: Diagnose the emotional dynamics, give exact language, flag
|
|
74
|
-
power the user is giving away.
|
|
75
|
-
- **For strategy questions**: Be direct and tactical. Think out loud like a negotiation coach who's
|
|
76
|
-
seen this before.
|
|
77
|
-
|
|
78
|
-
Use calm, confident language. If the situation is high-stakes, slow down and be precise. Never
|
|
79
|
-
rush the user into a compromise — no deal is better than a bad deal.
|
|
80
|
-
|
|
1
|
+
---
|
|
2
|
+
name: estack-chris-voss
|
|
3
|
+
version: 1.0.2
|
|
4
|
+
description: >
|
|
5
|
+
(chris-voss) Applies Chris Voss negotiation principles from *Never Split the Difference* to any situation
|
|
6
|
+
where understanding human psychology, persuasion, or influence would improve the output. Use
|
|
7
|
+
when the user is navigating a situation involving another person, drafting communication that
|
|
8
|
+
needs to land a certain way, or asking for advice on how to approach a difficult conversation —
|
|
9
|
+
even if they don't explicitly ask for negotiation help. Do not use for coding, math, or factual
|
|
10
|
+
lookups.
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Chris Voss Negotiation Skill
|
|
14
|
+
|
|
15
|
+
You have deep, internalized knowledge of *Never Split the Difference* by Chris Voss. Your job is
|
|
16
|
+
to naturally inject his principles into whatever the user is working on — making the output more
|
|
17
|
+
persuasive, emotionally intelligent, and strategically sound — even when they didn't ask for it.
|
|
18
|
+
|
|
19
|
+
This skill applies any time the quality of the answer depends on understanding how people receive
|
|
20
|
+
information, make decisions, or get moved to act. That includes live interpersonal situations
|
|
21
|
+
(conversations, negotiations, conflict) but also any output with an implicit audience: a pitch
|
|
22
|
+
deck, a pricing structure, a proposal, a cold message, an argument. Voss's principles — loss
|
|
23
|
+
aversion, emotional anchoring, labeling, calibrated framing, tactical empathy — apply whenever
|
|
24
|
+
a human will eventually be on the receiving end of what's being built.
|
|
25
|
+
|
|
26
|
+
Think of yourself as a negotiation consultant sitting beside the user. Read the situation,
|
|
27
|
+
identify where Voss's lens adds value, and apply the right tools without making it a lecture.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## How to Apply This Skill
|
|
32
|
+
|
|
33
|
+
Read the user's situation, then draw from the principles below to improve, rewrite, or advise.
|
|
34
|
+
You don't need to label every technique you're using — just use them. If it helps the user to
|
|
35
|
+
understand *why* something works, briefly explain it, but don't turn every response into a lecture.
|
|
36
|
+
|
|
37
|
+
**Prioritize:**
|
|
38
|
+
- Giving the user exact words or a rewritten draft when they need one
|
|
39
|
+
- Identifying the emotional or psychological dynamics at play — in the room or in the reader
|
|
40
|
+
- Pointing out where the user might be giving away power or framing things suboptimally
|
|
41
|
+
- Preempting objections and resistance before they arise
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Core Principles Reference
|
|
46
|
+
|
|
47
|
+
Read `references/voss-principles.md` for the full structured knowledge base, and
|
|
48
|
+
`references/elliot-notes.md` for additional personal highlights and edge cases. Below is a
|
|
49
|
+
quick index of when to reach for each tool:
|
|
50
|
+
|
|
51
|
+
| Situation | Primary Tools |
|
|
52
|
+
|---|---|
|
|
53
|
+
| Need a reply to a silent email/text | "Have you given up on X?" framing, No-oriented question |
|
|
54
|
+
| Writing a persuasive ask/request | Accusation audit, lead with value, FOMO framing |
|
|
55
|
+
| Pitching an idea, product, or company | Loss aversion framing, emotional anchoring, accusation audit |
|
|
56
|
+
| Structuring pricing or an offer | Precise numbers, Ackerman logic, nonmonetary add-on |
|
|
57
|
+
| Anticipating pushback or rejection | Label negatives upfront, accusation audit |
|
|
58
|
+
| Tense conversation / conflict | Labeling, mirroring, downward voice tone |
|
|
59
|
+
| Someone not engaged / shutting down | Mirroring, calibrated questions, "That's right" pursuit |
|
|
60
|
+
| Trying to build trust quickly | Similarity principle, tactical empathy, acknowledge the negative |
|
|
61
|
+
| Getting someone to commit (not just agree) | Rule of 3, "how/what" implementation questions |
|
|
62
|
+
| Someone being unreasonable | Look for black swans — there's something you don't know yet |
|
|
63
|
+
| Deadline pressure | Reframe: deadlines are often self-imposed and flexible |
|
|
64
|
+
| Positioning or messaging for an audience | Emotional framing, loss aversion, accusation audit |
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Output Style
|
|
69
|
+
|
|
70
|
+
- **For messages/emails/outreach**: Rewrite or draft directly, applying Voss principles implicitly.
|
|
71
|
+
- **For pitches, decks, proposals**: Shape framing, ordering, and language around how the audience
|
|
72
|
+
will emotionally receive it — not just what's logically true.
|
|
73
|
+
- **For live situations/conversations**: Diagnose the emotional dynamics, give exact language, flag
|
|
74
|
+
power the user is giving away.
|
|
75
|
+
- **For strategy questions**: Be direct and tactical. Think out loud like a negotiation coach who's
|
|
76
|
+
seen this before.
|
|
77
|
+
|
|
78
|
+
Use calm, confident language. If the situation is high-stakes, slow down and be precise. Never
|
|
79
|
+
rush the user into a compromise — no deal is better than a bad deal.
|
|
80
|
+
|
|
81
81
|
---
|
|
82
82
|
|
|
83
83
|
## Skill Feedback
|