quicksnap 0.2.0__tar.gz

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.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 QuickSnap Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,420 @@
1
+ Metadata-Version: 2.4
2
+ Name: quicksnap
3
+ Version: 0.2.0
4
+ Summary: Never forget the engineering stories behind your code
5
+ Author: QuickSnap Contributors
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/quicksnap/quicksnap
8
+ Project-URL: Repository, https://github.com/quicksnap/quicksnap
9
+ Project-URL: Issues, https://github.com/quicksnap/quicksnap/issues
10
+ Keywords: engineering,stories,interview,portfolio,git,documentation
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Topic :: Software Development :: Documentation
20
+ Requires-Python: >=3.9
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: typer[all]>=0.9.0
24
+ Requires-Dist: rich>=13.0.0
25
+ Requires-Dist: pyyaml>=6.0
26
+ Provides-Extra: ai
27
+ Requires-Dist: httpx>=0.24.0; extra == "ai"
28
+ Provides-Extra: export
29
+ Requires-Dist: fpdf2>=2.7.0; extra == "export"
30
+ Requires-Dist: python-docx>=1.0.0; extra == "export"
31
+ Provides-Extra: dev
32
+ Requires-Dist: pytest>=7.0; extra == "dev"
33
+ Dynamic: license-file
34
+
35
+ # QuickSnap
36
+
37
+ > Git remembers what changed. QuickSnap remembers why.
38
+
39
+ Your second brain for software engineering. Capture, search, and recall your engineering decisions for interviews, performance reviews, and knowledge sharing.
40
+
41
+ ---
42
+
43
+ ## What Is This?
44
+
45
+ Every developer has solved hard problems. Race conditions. Performance bottlenecks. Authentication redesigns. System migrations.
46
+
47
+ Six months later, you can't remember the details. The code is there. The commits are there. But the **reasoning** — why you chose Redis over PostgreSQL, what alternatives you rejected, what tradeoffs you accepted — that's gone.
48
+
49
+ QuickSnap captures those details **right after you finish a task**, while your thinking is still fresh. It turns your daily coding into a searchable archive of interview-ready stories.
50
+
51
+ ---
52
+
53
+ ## How It Works
54
+
55
+ ```
56
+ You finish coding
57
+
58
+ git commit
59
+
60
+ QuickSnap captures automatically
61
+
62
+ Story saved to .snapshots/
63
+
64
+ Months later → search and recall everything
65
+ ```
66
+
67
+ **Without QuickSnap:**
68
+ - You commit code
69
+ - You forget the reasoning
70
+ - Interview comes → blank mind
71
+
72
+ **With QuickSnap:**
73
+ - You commit code
74
+ - Story auto-captured with git context
75
+ - Interview comes → full story ready
76
+
77
+ ---
78
+
79
+ ## The Two Products
80
+
81
+ QuickSnap has two interfaces that share the same core:
82
+
83
+ ### 1. CLI (Primary)
84
+
85
+ A terminal tool. Install with pip, run from any project.
86
+
87
+ ```bash
88
+ pip install -e .
89
+ quicksnap capture # Interactive — answers questions
90
+ quicksnap capture -n # Automatic — fills from git
91
+ quicksnap list # Browse all stories
92
+ quicksnap search redis # Search by keyword
93
+ quicksnap search-natural caching # Natural language search
94
+ quicksnap star auth-fix # STAR format for interviews
95
+ quicksnap bullets auth-fix # Resume bullet points
96
+ quicksnap practice # Random interview questions
97
+ quicksnap interview # Interview practice with self-scoring
98
+ quicksnap generate auth-fix linkedin # Generate LinkedIn post
99
+ quicksnap generate auth-fix blog # Generate blog draft
100
+ quicksnap export-portfolio # Full engineering portfolio
101
+ quicksnap tag auth-fix Backend,Performance # Add tags
102
+ quicksnap untag auth-fix Backend # Remove tags
103
+ quicksnap tags-list # List all tags
104
+ quicksnap sync-export # Export to zip for cross-device sync
105
+ quicksnap sync-import # Import from zip
106
+ ```
107
+
108
+ ## Tech Stack
109
+
110
+ ### CLI
111
+
112
+ | Component | Technology | Why |
113
+ |-----------|-----------|-----|
114
+ | Language | Python 3.9+ | Widely available, fast to develop |
115
+ | CLI framework | Typer | Modern, auto-generates help, type hints |
116
+ | Terminal output | Rich | Beautiful tables, colors, markdown rendering |
117
+ | Git integration | subprocess (git CLI) | No extra dependencies, works everywhere |
118
+ | Storage format | Markdown + JSON | Human-readable + machine-parseable |
119
+ | Config | YAML | Clean, readable configuration |
120
+ | Local AI | Ollama HTTP API | No Python library needed, just HTTP |
121
+ | Cloud AI | httpx (OpenAI/Anthropic/Gemini) | Lightweight HTTP client |
122
+
123
+ ### VS Code Extension
124
+
125
+ | Component | Technology | Why |
126
+ |-----------|-----------|-----|
127
+ | Language | TypeScript | Type safety, VS Code API |
128
+ | UI | VS Code TreeView + Webview | Native look and feel |
129
+ | Git integration | Shell out to CLI | Reuses all CLI logic |
130
+ | Build | tsc + vsce | Standard VS Code toolchain |
131
+
132
+ ---
133
+
134
+ ## Data Model
135
+
136
+ Every snapshot stores:
137
+
138
+ ```json
139
+ {
140
+ "title": "Auth Cache Optimization",
141
+ "date": "2026-07-15",
142
+ "repository": "payments-api",
143
+ "branch": "feature/auth-cache",
144
+ "problem": "Permission lookups caused high latency",
145
+ "context": "API receives ~4M requests/day",
146
+ "challenge": "Permission checks triggered multiple SQL queries",
147
+ "alternatives": ["Database joins", "Redis cache", "Denormalized table"],
148
+ "decision": "Used Redis cache with 10-minute TTL",
149
+ "tradeoffs": ["Permissions may remain stale for 10 minutes"],
150
+ "result": "Average latency reduced from 850ms to 180ms",
151
+ "lessons": "Event-driven invalidation would be better than TTL",
152
+ "surprises": "Redis was faster than expected",
153
+ "risks_taken": "Migrated production auth system",
154
+ "assumptions": "Assumed 90% cache hit rate",
155
+ "almost_failed": "Lost 1 hour of data during migration",
156
+ "advice": "Always test cache invalidation before deploying",
157
+ "tags": ["Performance", "Backend", "Caching", "Redis"],
158
+ "quality_score": 85,
159
+ "files_changed": ["api/auth.py", "db/cache.py"],
160
+ "functions_modified": ["check_permission", "get_cached_role"],
161
+ "commit_messages": ["feat: add redis permission cache"],
162
+ "diff_summary": "git diff output...",
163
+ "star": {
164
+ "situation": "...",
165
+ "task": "...",
166
+ "action": "...",
167
+ "result": "..."
168
+ },
169
+ "bullets": [
170
+ "Reduced API latency by 78% using Redis permission caching",
171
+ "Eliminated redundant SQL queries"
172
+ ],
173
+ "slug": "auth-cache-optimization",
174
+ "schema_version": 2
175
+ }
176
+ ```
177
+
178
+ ---
179
+
180
+ ## AI Modes
181
+
182
+ Three ways to generate stories:
183
+
184
+ ### Mode 1: Manual (Default, No AI)
185
+
186
+ ```bash
187
+ quicksnap capture
188
+ ```
189
+
190
+ Tool asks questions, you answer. Pure offline. No API keys.
191
+
192
+ ### Mode 2: Local AI (Ollama)
193
+
194
+ ```bash
195
+ quicksnap capture --ai local
196
+ ```
197
+
198
+ Reads your git diff, generates summary locally. No data leaves your machine.
199
+
200
+ Requires Ollama running with a model (llama3, qwen, gemma, mistral).
201
+
202
+ ### Mode 3: Cloud AI (Optional)
203
+
204
+ ```bash
205
+ # Set one of these:
206
+ export OPENAI_API_KEY=sk-...
207
+ # or
208
+ export ANTHROPIC_API_KEY=sk-ant-...
209
+ # or
210
+ export GEMINI_API_KEY=...
211
+
212
+ quicksnap capture --ai openai
213
+ ```
214
+
215
+ Generates richer summaries using cloud LLMs.
216
+
217
+ ### Mode 4: Non-Interactive (Fully Automatic)
218
+
219
+ ```bash
220
+ quicksnap capture -n
221
+ # or
222
+ quicksnap capture --non-interactive
223
+ ```
224
+
225
+ No questions. No AI. Just fills everything from git context automatically.
226
+
227
+ ---
228
+
229
+ ## Commands Reference
230
+
231
+ | Command | What It Does | Example |
232
+ |---------|-------------|---------|
233
+ | `capture` | Create a new story | `quicksnap capture` |
234
+ | `capture -n` | Auto-capture from git | `quicksnap capture -n` |
235
+ | `list` | Show all stories | `quicksnap list` |
236
+ | `list --tag Backend` | Filter by tag | `quicksnap list --tag Performance` |
237
+ | `show <slug>` | View a story | `quicksnap show auth-cache` |
238
+ | `search <query>` | Search stories | `quicksnap search redis` |
239
+ | `search-natural <query>` | Natural language search | `quicksnap search-natural caching` |
240
+ | `star <slug>` | STAR format | `quicksnap star auth-cache` |
241
+ | `bullets <slug>` | Resume bullets | `quicksnap bullets auth-cache` |
242
+ | `practice` | Interview practice | `quicksnap practice` |
243
+ | `interview` | Interview with self-scoring | `quicksnap interview --tag Backend` |
244
+ | `generate <slug> <format>` | Generate content | `quicksnap generate auth-fix linkedin` |
245
+ | `tag <slug> <tags>` | Add tags | `quicksnap tag auth-fix Backend,Redis` |
246
+ | `untag <slug> <tags>` | Remove tags | `quicksnap untag auth-fix Backend` |
247
+ | `tags-list` | List all tags | `quicksnap tags-list` |
248
+ | `export-portfolio` | Full portfolio | `quicksnap export-portfolio` |
249
+ | `sync-export` | Export to zip | `quicksnap sync-export` |
250
+ | `sync-import` | Import from zip | `quicksnap sync-import` |
251
+ | `delete-cmd <slug>` | Delete a story | `quicksnap delete-cmd auth-cache` |
252
+ | `init` | Setup in a repo | `quicksnap init` |
253
+
254
+ ---
255
+
256
+ ## VS Code Extension Features
257
+
258
+ | Feature | Trigger | What Happens |
259
+ |---------|---------|--------------|
260
+ | Capture Story | `Ctrl+Shift+P` → "QuickSnap: Capture" | Auto-captures from git, no input needed |
261
+ | Browse Stories | Click history icon in sidebar | Tree view grouped by tags or timeline |
262
+ | View Story | Click a story in sidebar | Opens as markdown in editor |
263
+ | STAR Story | Right-click story → "Show STAR Story" | Generates STAR format |
264
+ | Resume Bullets | Right-click story → "Generate Resume Bullets" | Generates bullet points |
265
+ | Search | `Ctrl+Shift+P` → "QuickSnap: Search" | Filter stories by keyword |
266
+ | Natural Search | `Ctrl+Shift+P` → "QuickSnap: Search (Natural)" | Search with synonyms |
267
+ | Interview | `Ctrl+Shift+P` → "QuickSnap: Interview" | Practice with self-scoring |
268
+ | Generate | `Ctrl+Shift+P` → "QuickSnap: Generate" | Create LinkedIn/blog/interview content |
269
+ | Toggle View | Click calendar icon in sidebar | Switch tag/timeline view |
270
+ | Export Portfolio | `Ctrl+Shift+P` → "QuickSnap: Export Portfolio" | Creates portfolio.md |
271
+ | Auto-capture | After git commit (smart detection) | Only prompts for meaningful commits |
272
+
273
+ ---
274
+
275
+ ## Storage
276
+
277
+ Each project gets a `.snapshots/` folder:
278
+
279
+ ```
280
+ .snapshots/
281
+ ├── index.json # Quick lookup index
282
+ ├── auth-cache.json # Full snapshot data
283
+ ├── auth-cache.md # Human-readable markdown
284
+ ├── db-optimization.json
285
+ ├── db-optimization.md
286
+ └── ...
287
+ ```
288
+
289
+ - **Markdown** — what you read and share
290
+ - **JSON** — what the tool reads and indexes
291
+ - **index.json** — fast listing without reading all files
292
+
293
+ ---
294
+
295
+ ## Configuration
296
+
297
+ Create `.quicksnap.yaml` in your project root:
298
+
299
+ ```yaml
300
+ version: "0.2.0"
301
+ ai_mode: auto # manual | auto | local | openai | anthropic | gemini
302
+ ```
303
+
304
+ VS Code settings (in `settings.json`):
305
+
306
+ ```json
307
+ {
308
+ "quicksnap.cliPath": "quicksnap",
309
+ "quicksnap.notifyAfterCommit": true
310
+ }
311
+ ```
312
+
313
+ ---
314
+
315
+ ## Development
316
+
317
+ ### CLI
318
+
319
+ ```bash
320
+ cd D:\quicksnap
321
+ pip install -e . # Install in dev mode
322
+ quicksnap --help # Test
323
+ quicksnap capture -n # Test auto-capture
324
+ ```
325
+
326
+ ### VS Code Extension
327
+
328
+ ```bash
329
+ cd vscode-extension
330
+ npm install
331
+ npx tsc -p ./ # Compile TypeScript
332
+ vsce package --allow-missing-repository # Build .vsix
333
+ code --install-extension quicksnap-0.1.0.vsix --force
334
+ ```
335
+
336
+ ### Testing
337
+
338
+ ```bash
339
+ python -m pytest tests/ -v
340
+ ```
341
+
342
+ ---
343
+
344
+ ## Why This Matters
345
+
346
+ **For interviews:**
347
+ - Have stories ready for "tell me about a challenging problem"
348
+ - STAR format generated automatically
349
+ - Resume bullets generated from real work
350
+ - Interview practice with self-scoring
351
+
352
+ **For performance reviews:**
353
+ - Portfolio of everything you shipped
354
+ - Quantified impact (latency reduced, bugs fixed)
355
+ - Evidence of growth and learning
356
+
357
+ **For knowledge sharing:**
358
+ - Team members can read your reasoning
359
+ - Onboarding becomes easier
360
+ - Decisions are documented
361
+
362
+ **For yourself:**
363
+ - Remember why you made choices
364
+ - Track your engineering growth
365
+ - Never blank on "what did you work on?"
366
+
367
+ ---
368
+
369
+ ## Common Workflows
370
+
371
+ ### After Finishing a Feature
372
+
373
+ ```
374
+ 1. git commit -m "feat: add user caching"
375
+ 2. Ctrl+Shift+P → "QuickSnap: Capture"
376
+ 3. Done. Story saved with full git context.
377
+ ```
378
+
379
+ ### Before an Interview
380
+
381
+ ```
382
+ 1. quicksnap search performance
383
+ 2. Read your stories
384
+ 3. quicksnap interview --tag Backend
385
+ 4. Practice with self-scoring
386
+ 5. quicksnap star auth-cache
387
+ 6. Review STAR format
388
+ ```
389
+
390
+ ### Updating Resume
391
+
392
+ ```
393
+ 1. quicksnap bullets auth-cache
394
+ 2. Copy bullet points
395
+ 3. Paste into resume
396
+ ```
397
+
398
+ ### Generating LinkedIn Post
399
+
400
+ ```
401
+ 1. quicksnap generate auth-fix linkedin
402
+ 2. Copy the generated post
403
+ 3. Share on LinkedIn
404
+ ```
405
+
406
+ ### Team Knowledge Sharing
407
+
408
+ ```
409
+ 1. quicksnap export-portfolio
410
+ 2. Share portfolio.md with team
411
+ 3. Everyone learns from your decisions
412
+ ```
413
+
414
+ ### Cross-Device Sync
415
+
416
+ ```
417
+ 1. On laptop: quicksnap sync-export
418
+ 2. Copy quicksnap-sync.zip to cloud/USB
419
+ 3. On desktop: quicksnap sync-import quicksnap-sync.zip
420
+ ```