🧪 Skills

Reading Log

Reading Log — Reading Log — track books & reading habits. Personal daily-use tool for tracking and organizing your life. Use when you need Reading Log capabi...

v1.0.0
❤️ 0
⬇️ 9
👁 1
Share

Description


name: reading-log description: "Reading Log — Reading Log — track books & reading habits. Personal daily-use tool for tracking and organizing your life. Use when you need Reading Log capabilities." runtime: python3 license: MIT

Reading Log

Reading Log — track books & reading habits

Why This Skill?

  • Designed for everyday personal use
  • No external dependencies or accounts needed
  • Data stored locally — your privacy, your data
  • Simple commands, powerful results

Commands

  • add [author] Add book to reading list</li> <li><code>start</code> — <title> Start reading a book</li> <li><code>progress</code> — <title> <pct> Update progress (0-100%)</li> <li><code>finish</code> — <title> [rating] Mark book finished (1-5 stars)</li> <li><code>list</code> — [filter] List books (all/reading/done/todo)</li> <li><code>search</code> — <query> Search books</li> <li><code>stats</code> — Reading statistics</li> <li><code>streak</code> — Reading streak</li> <li><code>recommend</code> — [genre] Book recommendations</li> <li><code>shelf</code> — Visual bookshelf</li> <li><code>export</code> — [format] Export (md/csv/json)</li> <li><code>info</code> — Version info</li> </ul> <h2>Quick Start</h2> <pre tabindex="0" style="color:#f8f8f2;background-color:#272822;"><code><span style="display:flex;"><span>reading_log.sh help </span></span></code></pre><blockquote> <p><strong>Note</strong>: This is an original, independent implementation by BytesAgain. Not affiliated with or derived from any third-party project.</p> </blockquote> <hr> <p>Powered by BytesAgain | bytesagain.com | <a href="mailto:hello@bytesagain.com">hello@bytesagain.com</a></p> </div></section><!-- Changelog --><!-- Version History --><!-- Reviews --><div id="reviews-section"><section><h2 class="text-lg font-semibold text-gray-900 mb-4">Reviews (0)</h2><!-- Sign in prompt --> <div class="bg-gray-50 rounded-lg p-4 mb-6 text-sm text-gray-500"><a href="/auth/login" class="text-brand-600 hover:text-brand-700 font-medium">Sign in</a> to write a review.</div><!-- Empty state --> <div class="bg-gray-50 rounded-xl p-8 text-center"><p class="text-sm text-gray-500">No reviews yet. Be the first to review!</p></div></section></div><!-- Comments --><div id="comments-section"><section><h2 class="text-lg font-semibold text-gray-900 mb-4" id="comments">Comments (0)</h2><div class="bg-gray-50 rounded-lg p-4 mb-6 text-sm text-gray-500"><a href="/auth/login" class="text-brand-600 hover:text-brand-700 font-medium">Sign in</a> to join the discussion.</div><div class="bg-gray-50 rounded-xl p-8 text-center"><p class="text-sm text-gray-500">No comments yet. Be the first to share your thoughts!</p></div></section></div></div><!-- Sidebar (1/3) --><div class="space-y-6"><!-- Platforms --><div class="bg-white rounded-xl border border-gray-200 p-5"><h3 class="text-sm font-semibold text-gray-900 mb-3">Compatible Platforms</h3><div class="flex flex-wrap gap-2"></div></div><!-- Tags --><!-- Links --><div class="bg-white rounded-xl border border-gray-200 p-5"><h3 class="text-sm font-semibold text-gray-900 mb-3">Links</h3><div class="space-y-2"><a href="https://clawhub.ai/skills/reading-log" target="_blank" rel="noopener noreferrer" class="flex items-center gap-2 text-sm text-brand-600 hover:text-brand-700">📂 Source Code</a> </div></div><!-- Pricing (DISABLED: free-only mode — always show Free) --><div class="bg-white rounded-xl border border-gray-200 p-5"><h3 class="text-sm font-semibold text-gray-900 mb-3">Pricing</h3><span class="text-sm font-medium text-green-700 bg-green-50 px-3 py-1 rounded-full">Free</span></div></div></div><!-- Related Items --><section class="mt-12"><h2 class="text-xl font-bold text-gray-900 mb-6">Related Configs</h2><div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"><div class="relative"><a href="/item/skill-self-improving-agent" class="card-hover block"><div class="flex items-start justify-between gap-3 mb-3"><div class="flex items-center gap-2 min-w-0"><span class="badge-skill">🧪 Skill</span><h3 class="text-base font-semibold text-gray-900 truncate">self-improving-agent</h3></div><span class="shrink-0 text-xs font-medium text-green-700 bg-green-50 px-2 py-0.5 rounded-full mr-6">Free</span> </div><p class="text-sm text-gray-500 mb-3 line-clamp-2">Captures learnings, errors, and corrections to enable continuous improvement. Use when: (1) A command or operation fails unexpectedly, (2) User corrects Clau...</p><div class="flex items-center justify-between"><div class="flex items-center gap-3 text-xs text-gray-500"><span class="flex items-center gap-0.5"><span>❤️</span> 2.0k</span> <span class="flex items-center gap-0.5"><span>⬇️</span> 218k</span></div></div></a> <button data-compare-slug="skill-self-improving-agent" onclick="event.preventDefault();event.stopPropagation();toggleCompare(this.dataset.compareSlug)" class="absolute top-3 right-3 w-6 h-6 flex items-center justify-center rounded border border-gray-200 text-gray-400 hover:text-brand-600 hover:border-brand-300 transition-colors" title="Add to comparison"><svg class="w-3.5 h-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"></line> <line x1="12" y1="20" x2="12" y2="4"></line> <line x1="6" y1="20" x2="6" y2="14"></line></svg></button></div><div class="relative"><a href="/item/self-improving-agent" class="card-hover block"><div class="flex items-start justify-between gap-3 mb-3"><div class="flex items-center gap-2 min-w-0"><span class="badge-skill">🧪 Skill</span><h3 class="text-base font-semibold text-gray-900 truncate">Self Improving Agent</h3></div><span class="shrink-0 text-xs font-medium text-green-700 bg-green-50 px-2 py-0.5 rounded-full mr-6">Free</span> </div><p class="text-sm text-gray-500 mb-3 line-clamp-2">Captures learnings, errors, and corrections to enable continuous improvement. And also 50+ models for image generation, video generation, text-to-speech, spe...</p><div class="flex items-center justify-between"><div class="flex items-center gap-3 text-xs text-gray-500"><span class="flex items-center gap-0.5"><span>❤️</span> 2.0k</span> <span class="flex items-center gap-0.5"><span>⬇️</span> 206k</span></div></div></a> <button data-compare-slug="self-improving-agent" onclick="event.preventDefault();event.stopPropagation();toggleCompare(this.dataset.compareSlug)" class="absolute top-3 right-3 w-6 h-6 flex items-center justify-center rounded border border-gray-200 text-gray-400 hover:text-brand-600 hover:border-brand-300 transition-colors" title="Add to comparison"><svg class="w-3.5 h-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"></line> <line x1="12" y1="20" x2="12" y2="4"></line> <line x1="6" y1="20" x2="6" y2="14"></line></svg></button></div><div class="relative"><a href="/item/find-skills" class="card-hover block"><div class="flex items-start justify-between gap-3 mb-3"><div class="flex items-center gap-2 min-w-0"><span class="badge-skill">🧪 Skill</span><h3 class="text-base font-semibold text-gray-900 truncate">Find Skills</h3></div><span class="shrink-0 text-xs font-medium text-green-700 bg-green-50 px-2 py-0.5 rounded-full mr-6">Free</span> </div><p class="text-sm text-gray-500 mb-3 line-clamp-2">Search, discover, and install skills from the open agent skills ecosystem to extend agent capabilities for specific tasks or domains.</p><div class="flex items-center justify-between"><div class="flex items-center gap-3 text-xs text-gray-500"><span class="flex items-center gap-0.5"><span>❤️</span> 814</span> <span class="flex items-center gap-0.5"><span>⬇️</span> 199k</span></div></div></a> <button data-compare-slug="find-skills" onclick="event.preventDefault();event.stopPropagation();toggleCompare(this.dataset.compareSlug)" class="absolute top-3 right-3 w-6 h-6 flex items-center justify-center rounded border border-gray-200 text-gray-400 hover:text-brand-600 hover:border-brand-300 transition-colors" title="Add to comparison"><svg class="w-3.5 h-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"></line> <line x1="12" y1="20" x2="12" y2="4"></line> <line x1="6" y1="20" x2="6" y2="14"></line></svg></button></div><div class="relative"><a href="/item/skill-summarize" class="card-hover block"><div class="flex items-start justify-between gap-3 mb-3"><div class="flex items-center gap-2 min-w-0"><span class="badge-skill">🧪 Skill</span><h3 class="text-base font-semibold text-gray-900 truncate">Summarize</h3></div><span class="shrink-0 text-xs font-medium text-green-700 bg-green-50 px-2 py-0.5 rounded-full mr-6">Free</span> </div><p class="text-sm text-gray-500 mb-3 line-clamp-2">--- name: summarize description: Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube). homepage: https://summarize.sh metadata: {"clawdbot":{"emoji":"🧾","requires":{"b</p><div class="flex items-center justify-between"><div class="flex items-center gap-3 text-xs text-gray-500"><span class="flex items-center gap-0.5"><span>❤️</span> 609</span> <span class="flex items-center gap-0.5"><span>⬇️</span> 160k</span></div></div></a> <button data-compare-slug="skill-summarize" onclick="event.preventDefault();event.stopPropagation();toggleCompare(this.dataset.compareSlug)" class="absolute top-3 right-3 w-6 h-6 flex items-center justify-center rounded border border-gray-200 text-gray-400 hover:text-brand-600 hover:border-brand-300 transition-colors" title="Add to comparison"><svg class="w-3.5 h-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"></line> <line x1="12" y1="20" x2="12" y2="4"></line> <line x1="6" y1="20" x2="6" y2="14"></line></svg></button></div></div></section></div></main><footer class="bg-white border-t border-gray-200 mt-16"><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12"><div class="grid grid-cols-2 md:grid-cols-5 gap-8"><!-- Brand --><div class="col-span-2 md:col-span-1"><a href="/" class="flex items-center gap-2 text-lg font-bold text-brand-600"><span>☕</span> <span>Skillbrew</span></a><p class="mt-2 text-sm text-gray-500">Brew your perfect agent</p></div><!-- Product --><div><h3 class="text-sm font-semibold text-gray-900 mb-3">Product</h3><ul class="space-y-2"><li><a href="/browse" class="text-sm text-gray-500 hover:text-gray-700">Browse</a></li><li><a href="/collections" class="text-sm text-gray-500 hover:text-gray-700">Collections</a></li><li><a href="/weekly" class="text-sm text-gray-500 hover:text-gray-700">Weekly</a></li><li><a href="/submit" class="text-sm text-gray-500 hover:text-gray-700">Submit</a></li></ul></div><!-- Community --><div><h3 class="text-sm font-semibold text-gray-900 mb-3">Community</h3><ul class="space-y-2"><li><a href="https://github.com/skillbrew-dev" target="_blank" rel="noopener" class="text-sm text-gray-500 hover:text-gray-700">GitHub</a></li><li><a href="https://discord.gg/zuXQfjUW" target="_blank" rel="noopener" class="text-sm text-gray-500 hover:text-gray-700">Discord</a></li><li><a href="mailto:skillbrew@skillbrew.dev" class="text-sm text-gray-500 hover:text-gray-700">Email</a></li></ul></div><!-- Resources --><div><h3 class="text-sm font-semibold text-gray-900 mb-3">Resources</h3><ul class="space-y-2"><li><a href="/api/docs" class="text-sm text-gray-500 hover:text-gray-700">API Docs</a></li><li><a href="/feed.xml" class="text-sm text-gray-500 hover:text-gray-700">RSS Feed</a></li></ul></div><!-- Legal --><div><h3 class="text-sm font-semibold text-gray-900 mb-3">Legal</h3><ul class="space-y-2"><li><a href="/about" class="text-sm text-gray-500 hover:text-gray-700">About</a></li><li><a href="/privacy" class="text-sm text-gray-500 hover:text-gray-700">Privacy Policy</a></li><li><a href="/terms" class="text-sm text-gray-500 hover:text-gray-700">Terms of Service</a></li></ul></div></div><div class="mt-8 pt-8 border-t border-gray-200"><p class="text-sm text-gray-400 text-center">© 2026 Skillbrew. All rights reserved.</p></div></div></footer><!-- Compare floating bar --><div id="compare-bar" class="fixed bottom-0 left-0 right-0 bg-white border-t border-gray-200 shadow-lg py-3 px-4 z-50 hidden"><div class="max-w-7xl mx-auto flex items-center justify-between"><span class="text-sm text-gray-700"><strong id="compare-count">0</strong> items selected for comparison</span><div class="flex items-center gap-2"><button onclick="clearCompareSet()" class="px-3 py-1.5 text-sm text-gray-500 hover:text-gray-700 transition-colors">Clear</button> <button onclick="goCompare()" class="px-4 py-1.5 text-sm font-medium text-white bg-brand-600 rounded-lg hover:bg-brand-700 transition-colors">Compare Now</button></div></div></div><script> document.body.addEventListener('htmx:responseError', function(event) { if (event.detail.xhr.status === 401) { window.location.href = '/auth/login?return_url=' + encodeURIComponent(window.location.pathname); } }); // Include CSRF token in all HTMX requests document.body.addEventListener('htmx:configRequest', function(evt) { var meta = document.querySelector('meta[name="csrf-token"]'); if (meta) { evt.detail.headers['X-CSRF-Token'] = meta.content; } }); // Compare set (localStorage) function getCompareSet() { try { return JSON.parse(localStorage.getItem('sb_compare') || '[]'); } catch { return []; } } function saveCompareSet(set) { localStorage.setItem('sb_compare', JSON.stringify(set)); updateCompareBar(); } function toggleCompare(slug) { let set = getCompareSet(); const idx = set.indexOf(slug); if (idx >= 0) { set.splice(idx, 1); } else { if (set.length >= 3) { set.shift(); } set.push(slug); } saveCompareSet(set); updateCompareButtons(); } function clearCompareSet() { saveCompareSet([]); updateCompareButtons(); } function goCompare() { const set = getCompareSet(); if (set.length >= 2) { window.location.href = '/compare?items=' + set.join(','); } } function updateCompareBar() { const set = getCompareSet(); const bar = document.getElementById('compare-bar'); const count = document.getElementById('compare-count'); if (bar) { if (set.length >= 2) { bar.classList.remove('hidden'); } else { bar.classList.add('hidden'); } if (count) count.textContent = set.length; } } function updateCompareButtons() { const set = getCompareSet(); document.querySelectorAll('[data-compare-slug]').forEach(btn => { const slug = btn.dataset.compareSlug; if (set.includes(slug)) { btn.classList.add('bg-brand-50', 'text-brand-600', 'border-brand-300'); btn.classList.remove('text-gray-400', 'border-gray-200'); btn.title = 'Remove from comparison'; } else { btn.classList.remove('bg-brand-50', 'text-brand-600', 'border-brand-300'); btn.classList.add('text-gray-400', 'border-gray-200'); btn.title = 'Add to comparison'; } }); } document.addEventListener('DOMContentLoaded', function() { updateCompareBar(); updateCompareButtons(); }); document.body.addEventListener('htmx:afterSwap', function() { updateCompareButtons(); }); </script></body></html>