claude-jacked 0.2.3__py3-none-any.whl → 0.2.9__py3-none-any.whl

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 (33) hide show
  1. claude_jacked-0.2.9.dist-info/METADATA +523 -0
  2. claude_jacked-0.2.9.dist-info/RECORD +33 -0
  3. jacked/cli.py +752 -47
  4. jacked/client.py +196 -29
  5. jacked/data/agents/code-simplicity-reviewer.md +87 -0
  6. jacked/data/agents/defensive-error-handler.md +93 -0
  7. jacked/data/agents/double-check-reviewer.md +214 -0
  8. jacked/data/agents/git-pr-workflow-manager.md +149 -0
  9. jacked/data/agents/issue-pr-coordinator.md +131 -0
  10. jacked/data/agents/pr-workflow-checker.md +199 -0
  11. jacked/data/agents/readme-maintainer.md +123 -0
  12. jacked/data/agents/test-coverage-engineer.md +155 -0
  13. jacked/data/agents/test-coverage-improver.md +139 -0
  14. jacked/data/agents/wiki-documentation-architect.md +580 -0
  15. jacked/data/commands/audit-rules.md +103 -0
  16. jacked/data/commands/dc.md +155 -0
  17. jacked/data/commands/learn.md +89 -0
  18. jacked/data/commands/pr.md +4 -0
  19. jacked/data/commands/redo.md +85 -0
  20. jacked/data/commands/techdebt.md +115 -0
  21. jacked/data/prompts/security_gatekeeper.txt +58 -0
  22. jacked/data/rules/jacked_behaviors.md +11 -0
  23. jacked/data/skills/jacked/SKILL.md +162 -0
  24. jacked/index_write_tracker.py +227 -0
  25. jacked/indexer.py +255 -129
  26. jacked/retriever.py +389 -137
  27. jacked/searcher.py +65 -13
  28. jacked/transcript.py +339 -0
  29. claude_jacked-0.2.3.dist-info/METADATA +0 -483
  30. claude_jacked-0.2.3.dist-info/RECORD +0 -13
  31. {claude_jacked-0.2.3.dist-info → claude_jacked-0.2.9.dist-info}/WHEEL +0 -0
  32. {claude_jacked-0.2.3.dist-info → claude_jacked-0.2.9.dist-info}/entry_points.txt +0 -0
  33. {claude_jacked-0.2.3.dist-info → claude_jacked-0.2.9.dist-info}/licenses/LICENSE +0 -0
@@ -1,483 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: claude-jacked
3
- Version: 0.2.3
4
- Summary: Cross-machine semantic search for Claude Code sessions
5
- Project-URL: Homepage, https://github.com/jackneil/claude-jacked
6
- Project-URL: Repository, https://github.com/jackneil/claude-jacked
7
- Project-URL: Issues, https://github.com/jackneil/claude-jacked/issues
8
- Author-email: Jack Neil <jack@jackmd.com>
9
- License-Expression: MIT
10
- License-File: LICENSE
11
- Keywords: ai,claude,context,qdrant,semantic-search
12
- Classifier: Development Status :: 4 - Beta
13
- Classifier: Intended Audience :: Developers
14
- Classifier: License :: OSI Approved :: MIT License
15
- Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.10
17
- Classifier: Programming Language :: Python :: 3.11
18
- Classifier: Programming Language :: Python :: 3.12
19
- Requires-Python: >=3.10
20
- Requires-Dist: click>=8.0.0
21
- Requires-Dist: python-dotenv>=1.0.0
22
- Requires-Dist: qdrant-client>=1.7.0
23
- Requires-Dist: rich>=13.0.0
24
- Provides-Extra: dev
25
- Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
26
- Requires-Dist: pytest>=7.0.0; extra == 'dev'
27
- Description-Content-Type: text/markdown
28
-
29
- # claude-jacked
30
-
31
- Supercharge your Claude Code workflow with cross-machine session search, review agents, and workflow commands.
32
-
33
- ## Install (Copy This Into Claude Code)
34
-
35
- > 📋 [View on GitHub](https://github.com/jackneil/claude-jacked#install-copy-this-into-claude-code) for copy button
36
-
37
- ```
38
- Install claude-jacked for me. First check what's already set up, then help me with anything missing:
39
-
40
- DIAGNOSTIC PHASE (run these first to see current state):
41
- - Detect my operating system
42
- - Check if pipx is installed: pipx --version (or: python -m pipx --version)
43
- - Check if jacked CLI is installed: jacked --version (or on Windows: where jacked)
44
- - Check if Qdrant credentials are set in current shell: echo $QDRANT_CLAUDE_SESSIONS_ENDPOINT
45
- - Check if hook is installed: look in ~/.claude/settings.json for "jacked index"
46
- - If jacked exists and env vars visible: jacked status && jacked configure --show
47
-
48
- WINDOWS EXTRA CHECK (Git Bash doesn't inherit Windows System Environment):
49
- - If env vars NOT visible in bash, check Windows System Environment:
50
- powershell.exe -Command "[System.Environment]::GetEnvironmentVariable('QDRANT_CLAUDE_SESSIONS_ENDPOINT', 'Machine')"
51
- powershell.exe -Command "[System.Environment]::GetEnvironmentVariable('QDRANT_CLAUDE_SESSIONS_ENDPOINT', 'User')"
52
- - If vars exist in Windows but not bash: they need to be added to ~/.bashrc
53
-
54
- REPORT what's already configured vs what's missing before proceeding.
55
-
56
- SETUP PHASE (only do steps that are missing):
57
- 1. If no Python 3.11+: help install miniconda
58
- 2. If no pipx: pip install pipx && pipx ensurepath
59
- 3. If jacked not installed: pipx install claude-jacked
60
- 4. If no Qdrant credentials anywhere: walk me through cloud.qdrant.io setup
61
- 5. If env vars in Windows but not bash: add export lines to ~/.bashrc, then source it
62
- 6. If env vars missing entirely: help add to shell profile
63
- 7. If hook/agents not installed: jacked install
64
- 8. If no indexed sessions: jacked backfill
65
-
66
- VERIFY: jacked status && jacked configure --show
67
-
68
- Ask if this is personal use or team setup.
69
- If team: explain that everyone needs the same Qdrant cluster credentials.
70
-
71
- WINDOWS NOTES:
72
- - Claude Code uses Git Bash, which does NOT inherit Windows System Environment variables
73
- - If you set env vars in Windows Settings, you ALSO need them in ~/.bashrc for Git Bash
74
- - pipx installs jacked to: C:\Users\<user>\pipx\venvs\claude-jacked\Scripts\jacked.exe
75
- - If "jacked" isn't found, find it with: where jacked OR ls /c/Users/$USER/pipx/venvs/claude-jacked/Scripts/
76
- - In Git Bash, backslash paths get mangled. Use forward slashes: /c/Users/...
77
- ```
78
-
79
- ---
80
-
81
- ## What's In Here
82
-
83
- | Component | Description |
84
- |-----------|-------------|
85
- | **jacked CLI** | Cross-machine semantic search for Claude Code sessions via Qdrant |
86
- | **10 Agents** | Double-check reviewer, PR workflow, test coverage, code simplicity, and more |
87
- | **2 Commands** | `/dc` (double-check), `/pr` (PR workflow) |
88
- | **1 Skill** | `/jacked` for searching past sessions from within Claude |
89
-
90
- ## Why This Exists
91
-
92
- Claude Code has a context problem:
93
-
94
- 1. **Sessions don't sync across machines** - Work on your desktop, can't resume on laptop
95
- 2. **Auto-compact destroys context** - Hit the limit and your carefully built context gets summarized into oblivion
96
- 3. **Finding past work is painful** - "How did I solve that auth bug last week?" means grep-ing through JSONL files
97
-
98
- This repo addresses these problems:
99
-
100
- - **jacked** indexes all your sessions to Qdrant Cloud for semantic search from anywhere
101
- - **Agents** like `double-check-reviewer` catch mistakes before they ship
102
- - **Commands** like `/dc` trigger comprehensive reviews at the right moments
103
-
104
- The goal: never lose useful context, never repeat solved problems, catch issues early.
105
-
106
- ---
107
-
108
- ## Manual Install
109
-
110
- ### Install the CLI
111
-
112
- **Use pipx** (recommended - installs globally, always on PATH):
113
-
114
- ```bash
115
- pipx install claude-jacked
116
- ```
117
-
118
- Don't have pipx? `pip install pipx && pipx ensurepath`
119
-
120
- **Why not regular pip?** If you `pip install` into a conda env or virtualenv, the `jacked` command only works when that env is active. Claude Code hooks run in a fresh shell without your env activated → `jacked: command not found`. pipx avoids this by installing to an isolated global location that's always on PATH.
121
-
122
- ### Set Up Qdrant Cloud
123
-
124
- The session search features require Qdrant Cloud for vector storage and embedding:
125
-
126
- 1. Sign up at [cloud.qdrant.io](https://cloud.qdrant.io) (requires paid tier ~$30/mo for server-side embedding)
127
- 2. Create a cluster and get your URL + API key
128
- 3. Add to your shell profile:
129
-
130
- ```bash
131
- export QDRANT_CLAUDE_SESSIONS_ENDPOINT="https://your-cluster.qdrant.io"
132
- export QDRANT_CLAUDE_SESSIONS_API_KEY="your-api-key"
133
- ```
134
-
135
- ### Install Everything
136
-
137
- ```bash
138
- jacked install
139
- ```
140
-
141
- This installs:
142
- - All agents to `~/.claude/agents/`
143
- - All commands to `~/.claude/commands/`
144
- - The `/jacked` skill to `~/.claude/skills/`
145
- - Auto-index hook (indexes sessions after every Claude response)
146
-
147
- Restart Claude Code after running this.
148
-
149
- ### Index Your Sessions
150
-
151
- ```bash
152
- jacked backfill # Index all existing sessions
153
- jacked status # Verify it's working
154
- jacked search "something you worked on before"
155
- ```
156
-
157
- **Note:** If you only want the agents and commands (not the session search), you can manually copy just those files from the repo without setting up Qdrant. But the main `jacked` functionality requires it.
158
-
159
- ---
160
-
161
- ## Team Setup
162
-
163
- Share knowledge across your team by using the same Qdrant cluster.
164
-
165
- ### How It Works
166
-
167
- 1. **Everyone on the team** uses the same `QDRANT_CLAUDE_SESSIONS_ENDPOINT` and `QDRANT_CLAUDE_SESSIONS_API_KEY`
168
- 2. **Each person sets** their `JACKED_USER_NAME` to identify their sessions
169
- 3. **Search results** show who created each session (YOU vs @teammate)
170
- 4. **Ranking prioritizes** your own sessions, then teammates, with recency boost
171
-
172
- ### Team Environment Setup
173
-
174
- ```bash
175
- # Everyone uses the same cluster
176
- export QDRANT_CLAUDE_SESSIONS_ENDPOINT="https://team-cluster.qdrant.io"
177
- export QDRANT_CLAUDE_SESSIONS_API_KEY="team-api-key"
178
-
179
- # Each person sets their name
180
- export JACKED_USER_NAME="sarah" # or "mike", "jack", etc.
181
- ```
182
-
183
- ### Search Examples
184
-
185
- ```bash
186
- jacked search "auth implementation" # Ranked: your stuff first, then team
187
- jacked search "auth" --mine # Only your sessions
188
- jacked search "auth" --user sarah # Only Sarah's sessions
189
- ```
190
-
191
- ### Multi-Factor Ranking
192
-
193
- Results are ranked by:
194
- | Factor | Weight | Description |
195
- |--------|--------|-------------|
196
- | Semantic | Core | How well the query matches the session content |
197
- | Ownership | 1.0 / 0.8 | Your sessions weighted higher than teammates |
198
- | Repository | 1.0 / 0.7 | Current repo weighted higher than others |
199
- | Recency | Decay | Recent sessions weighted higher (35-week half-life) |
200
-
201
- Customize weights via environment variables:
202
- ```bash
203
- export JACKED_TEAMMATE_WEIGHT=0.8 # Teammate session multiplier
204
- export JACKED_OTHER_REPO_WEIGHT=0.7 # Other repo multiplier
205
- export JACKED_TIME_DECAY_HALFLIFE_WEEKS=35 # Weeks until half relevance
206
- ```
207
-
208
- ---
209
-
210
- ## Agents
211
-
212
- Installed automatically by `jacked install` to `~/.claude/agents/`.
213
-
214
- | Agent | What It Does |
215
- |-------|--------------|
216
- | `double-check-reviewer` | CTO/CSO-level review for security, auth gaps, data leaks |
217
- | `code-simplicity-reviewer` | Reviews for over-engineering and unnecessary complexity |
218
- | `defensive-error-handler` | Audits error handling and adds defensive patterns |
219
- | `git-pr-workflow-manager` | Manages branches, commits, and PR organization |
220
- | `pr-workflow-checker` | Checks PR status and handles PR lifecycle |
221
- | `issue-pr-coordinator` | Scans issues, groups related ones, manages PR workflows |
222
- | `test-coverage-engineer` | Analyzes and improves test coverage |
223
- | `test-coverage-improver` | Adds doctests and test files systematically |
224
- | `readme-maintainer` | Keeps README in sync with code changes |
225
- | `wiki-documentation-architect` | Creates/maintains GitHub Wiki documentation |
226
-
227
- ### Usage
228
-
229
- Claude automatically uses these agents when appropriate. You can also invoke them explicitly:
230
-
231
- ```
232
- Use the double-check-reviewer agent to review what we just built
233
- ```
234
-
235
- ---
236
-
237
- ## Commands
238
-
239
- Installed automatically by `jacked install` to `~/.claude/commands/`.
240
-
241
- | Command | What It Does |
242
- |---------|--------------|
243
- | `/dc` | Triggers comprehensive double-check review (auto-detects if planning vs implementation) |
244
- | `/pr` | Checks PR status, manages workflow for current branch |
245
-
246
- ### Usage
247
-
248
- ```
249
- /dc # Review current work
250
- /pr # Check PR status
251
- ```
252
-
253
- ---
254
-
255
- ## Skills
256
-
257
- Installed automatically by `jacked install` to `~/.claude/skills/`.
258
-
259
- | Skill | What It Does |
260
- |-------|--------------|
261
- | `/jacked` | Search past sessions and load context |
262
-
263
- ### Usage
264
-
265
- ```
266
- /jacked implement user authentication
267
- ```
268
-
269
- Claude searches your indexed sessions, shows matches, and lets you load relevant context.
270
-
271
- **Note:** Searches all indexed sessions (yours + teammates if team setup). Results are ranked by: semantic match × ownership (yours first) × repo (current first) × recency. Use `--mine` for only your sessions.
272
-
273
- ---
274
-
275
- ## Jacked CLI Reference
276
-
277
- ### Commands
278
-
279
- ```bash
280
- jacked search "query" # Semantic search with multi-factor ranking
281
- jacked search "query" --mine # Only your sessions
282
- jacked search "query" --user sarah # Only this teammate's sessions
283
- jacked search "query" --repo path # Boost results from this repo
284
-
285
- jacked list # List indexed sessions
286
- jacked list --repo myproject # Filter by repo name
287
-
288
- jacked retrieve <session_id> # Get full transcript
289
- jacked retrieve <id1> <id2> # Get multiple transcripts
290
- jacked retrieve <id> --summary # Get summary only
291
-
292
- jacked index /path/to/session.jsonl --repo /path # Index specific session
293
- jacked backfill # Index all existing sessions
294
- jacked backfill --force # Re-index everything
295
-
296
- jacked status # Check Qdrant connectivity
297
- jacked delete <session_id> # Remove session from index
298
- jacked install # Install hook + skill + agents + commands
299
- jacked configure # Show config help
300
- jacked configure --show # Show current config values
301
- ```
302
-
303
- ### How It Works
304
-
305
- ```
306
- ┌─────────────────────────────────────────────────────────────┐
307
- │ YOUR MACHINE │
308
- │ │
309
- │ Claude Code │
310
- │ ├── Stop hook → jacked index (after every response) │
311
- │ └── /jacked skill → search + load context │
312
- │ │
313
- │ ~/.claude/projects/ │
314
- │ └── {repo}/ │
315
- │ └── {session}.jsonl ←── parsed and indexed │
316
- └─────────────────────────────────────────────────────────────┘
317
-
318
- │ HTTPS
319
-
320
- ┌─────────────────────────────────────────────────────────────┐
321
- │ QDRANT CLOUD │
322
- │ │
323
- │ • Server-side embedding (no local ML needed) │
324
- │ • Vectors + full transcripts stored │
325
- │ • Accessible from any machine │
326
- └─────────────────────────────────────────────────────────────┘
327
- ```
328
-
329
- ---
330
-
331
- ## Configuration
332
-
333
- ### Environment Variables
334
-
335
- **Required:**
336
- | Variable | Description |
337
- |----------|-------------|
338
- | `QDRANT_CLAUDE_SESSIONS_ENDPOINT` | Qdrant Cloud cluster URL |
339
- | `QDRANT_CLAUDE_SESSIONS_API_KEY` | Qdrant API key |
340
-
341
- **Identity (for team sharing):**
342
- | Variable | Default | Description |
343
- |----------|---------|-------------|
344
- | `JACKED_USER_NAME` | git user.name | Your name for session attribution |
345
- | `SMART_FORK_MACHINE_NAME` | hostname | Override machine name |
346
-
347
- **Ranking weights:**
348
- | Variable | Default | Description |
349
- |----------|---------|-------------|
350
- | `JACKED_TEAMMATE_WEIGHT` | 0.8 | Multiplier for teammate sessions |
351
- | `JACKED_OTHER_REPO_WEIGHT` | 0.7 | Multiplier for other repos |
352
- | `JACKED_TIME_DECAY_HALFLIFE_WEEKS` | 35 | Weeks until session relevance halves |
353
-
354
- **Other:**
355
- | Variable | Default | Description |
356
- |----------|---------|-------------|
357
- | `QDRANT_CLAUDE_SESSIONS_COLLECTION` | `claude_sessions` | Collection name |
358
- | `CLAUDE_PROJECTS_DIR` | `~/.claude/projects` | Claude projects directory |
359
-
360
- ### Hook Configuration
361
-
362
- The `jacked install` command adds this to `~/.claude/settings.json`:
363
-
364
- ```json
365
- {
366
- "hooks": {
367
- "Stop": [{
368
- "matcher": "",
369
- "hooks": [{
370
- "type": "command",
371
- "command": "jacked index --repo \"$CLAUDE_PROJECT_DIR\""
372
- }]
373
- }]
374
- }
375
- }
376
- ```
377
-
378
- ---
379
-
380
- ## Security Warning
381
-
382
- **Jacked sends session data to Qdrant Cloud.** This includes:
383
-
384
- - Full conversation transcripts
385
- - Repo paths and machine names
386
- - Anything you paste into sessions (including secrets)
387
-
388
- Recommendations:
389
- - Don't paste API keys/passwords in Claude sessions
390
- - Keep your Qdrant API key secure
391
- - Consider self-hosting Qdrant for sensitive work
392
-
393
- ---
394
-
395
- ## Troubleshooting
396
-
397
- ### "QDRANT_CLAUDE_SESSIONS_ENDPOINT not set"
398
-
399
- Add to your shell profile (`~/.bashrc`, `~/.zshrc`, or PowerShell profile):
400
-
401
- ```bash
402
- export QDRANT_CLAUDE_SESSIONS_ENDPOINT="https://your-cluster.qdrant.io"
403
- export QDRANT_CLAUDE_SESSIONS_API_KEY="your-key"
404
- ```
405
-
406
- ### "No matching sessions found"
407
-
408
- ```bash
409
- jacked backfill # Index existing sessions first
410
- jacked status # Verify connectivity
411
- ```
412
-
413
- ### "jacked: command not found"
414
-
415
- You probably installed with `pip` into a virtualenv/conda env that isn't active. Fix:
416
-
417
- ```bash
418
- pipx install claude-jacked
419
- ```
420
-
421
- This installs globally so the hook can find it regardless of which env is active.
422
-
423
- ### Windows: Path Issues in Git Bash
424
-
425
- Claude Code uses Git Bash on Windows, which mangles backslash paths. When you run `C:\Users\jack\.local\bin\jacked.exe`, bash turns it into garbage like `C:Usersjack.localbinjacked.exe`.
426
-
427
- **Where pipx installs jacked on Windows:**
428
- ```
429
- C:\Users\<your-username>\pipx\venvs\claude-jacked\Scripts\jacked.exe
430
- ```
431
-
432
- **Solutions:**
433
-
434
- 1. **Use cmd.exe wrapper** (most reliable in Git Bash):
435
- ```bash
436
- cmd.exe /c "C:\Users\jack\pipx\venvs\claude-jacked\Scripts\jacked.exe status"
437
- ```
438
-
439
- 2. **Add Scripts folder to PATH** (one-time fix):
440
- Add `C:\Users\<you>\pipx\venvs\claude-jacked\Scripts` to your Windows PATH environment variable.
441
-
442
- 3. **Use forward slashes** (sometimes works):
443
- ```bash
444
- /c/Users/jack/pipx/venvs/claude-jacked/Scripts/jacked.exe status
445
- ```
446
-
447
- **Finding where jacked is installed:**
448
- ```cmd
449
- where jacked
450
- ```
451
- or
452
- ```cmd
453
- dir C:\Users\%USERNAME%\pipx\venvs\claude-jacked\Scripts\jacked.exe
454
- ```
455
-
456
- ### Agents not loading
457
-
458
- Make sure files are in the right place:
459
- - Global: `~/.claude/agents/`
460
- - Project: `.claude/agents/` in your repo root
461
-
462
- ---
463
-
464
- ## Development
465
-
466
- ```bash
467
- git clone https://github.com/jackneil/claude-jacked
468
- cd claude-jacked
469
- pip install -e ".[dev]"
470
- pytest
471
- ```
472
-
473
- ---
474
-
475
- ## License
476
-
477
- MIT
478
-
479
- ## Credits
480
-
481
- Built for [Claude Code](https://claude.ai/code) by Anthropic.
482
-
483
- Uses [Qdrant](https://qdrant.tech/) for vector search.
@@ -1,13 +0,0 @@
1
- jacked/__init__.py,sha256=aVi7IpwXTJWSR8wBe4GHbAB4QlWyWvCobMQZ165Ytk8,609
2
- jacked/cli.py,sha256=UFiKZils6gVH-qvRmjXysktjTMpdtY2JUjf4x1Kcsw4,19838
3
- jacked/client.py,sha256=gshIvT3ZRk9V3KFwALzCgeC49Rzp04nFQgtXdBSTdIs,12068
4
- jacked/config.py,sha256=DeC1no5rFsvlb6JaU2PzLyyhI4DaJrxrsfqVugWuC4Q,8606
5
- jacked/indexer.py,sha256=CIEaJVrcT7UelXaE-xA5Mv5MyJsuA-ajBJZtjG6Gvgw,11448
6
- jacked/retriever.py,sha256=MI6FvcWMR567JOtZhL2EYgAhd2Q-zem_rtsnW6DruzM,8389
7
- jacked/searcher.py,sha256=5HSzcKGoQ7cIF2yocor78w_a_5roLICp2pE9jSsXEkE,10661
8
- jacked/transcript.py,sha256=ulhilZfc_HueT5sV0CA70nCza9Sj0txjq-bKu9IdWEc,14168
9
- claude_jacked-0.2.3.dist-info/METADATA,sha256=WCutLRGQmjFU5BCwRrSf8xiGyHzUoinNLVJm5WKWBp4,16919
10
- claude_jacked-0.2.3.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
11
- claude_jacked-0.2.3.dist-info/entry_points.txt,sha256=52JDhetd7OsE9iJryGrQIL3PWhum_QCeLuTeQ9-CTqQ,43
12
- claude_jacked-0.2.3.dist-info/licenses/LICENSE,sha256=m8NmsH7P5G4VH3VyHWPQUTl2weuNTh1-eaH0RbUcn3k,1066
13
- claude_jacked-0.2.3.dist-info/RECORD,,