晚上回家想学习一下,只有笔记本,最近想买个显示器,便于写代码,请佬友给个建议,买多大的,尽量推荐一个护眼的,预算500个大洋内,程序员毕竟一天十几个小时在电脑旁,好像27寸适合大多数情况,没有左右滑条,不晓得是不是这样的,谢谢 1 个帖子 - 1 位参与者 阅读完整话题
程序员必装的10个Skill,效率直接拉爆!-腾讯云开发者社区-腾讯云 今天搜索便于写程序的skill时发现的这个文章,本人一个没用过,不知道哪些是真正有用的。 Claude Code插件市场: Claude Code Plugins | Skills, MCP Servers & Marketplace Directory 我没用过Claude Code,不知道他的skill会不会适配其他的,例如hermes或者其他 有用过的佬可以分享一下,没用过的可以来看看佬们的建议 不用看上面的链接了 今天搜索便于写程序的skill时发现了个文章,本人一个没用过,不知道哪些是真正有用的,欢迎来探讨。 开发调优 上面的文章点进去一看,两眼一黑,都是啥玩意? 一般就看看 skills.sh 排行榜前面的 skills都是看自己需要,而不是一股脑都装,因地制宜,什么样的项目用什么样的skills [image] 8 个帖子 - 6 位参与者 阅读完整话题
本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社区和佬友监督: 是 以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出 项目简介 Skills Dock 是一个本地优先的桌面应用,用来统一查看、发现和管理散落在不同工具中的 AI Skills,目前支持mac/win/linux三端,希望各位佬可以支持一下,这是我第一个独立开发的开源项目~ 仓库地址: github.com GitHub - 1lck/Skills-Dock: Skill-Dock... Skill-Dock 是一个专门对skill/map进行可视化管理的app,用来统一查看、发现和管理散落在不同工具中的 AI Skills。支持显示skill的调用次数、一键打包导入导出skill、skill分类管理,等等 希望大家能提供一些宝贵的建议,能给个star的话感谢万分! 界面预览 首页总览 首页用于快速查看本地 Skills 的整体状态:本地 Skill 目录、配置项和文件状态,提示缺失、异常或需要关注的项目,便于在多工具环境下保持 Skills 可用且一致。 导入与迁移 导入页面支持从本地目录批量导入 Skills,并在导入前展示解析结果、目标应用覆盖情况和文件差异,适合把已有的 Codex、Claude、Gemini、OpenCode Skill 目录统一迁移到 Skills Dock 管理。 Skill 详情 详情页会展示单个 Skill 的说明文档、安装状态、来源路径和适配应用。你可以在这里预览 SKILL.md 内容,确认能力描述后再决定安装、同步或移除。 数据分析 数据分析页面用于观察 Skills 的数量变化、来源分布、分类占比和近期活动记录,帮助你了解当前本地能力库的组成情况。 设置中心 设置页集中管理各应用的 Skill 路径、自定义目录、自动扫描与显示偏好。不同工具的安装目录可以在这里统一配置,方便后续同步和维护。 1 个帖子 - 1 位参与者 阅读完整话题
4月20日开始Google one(Gemini Pro套餐)在Google AI Studio有更多额度了,在此分享一个本人自制移动端用户专用的油猴脚本。 经常在移动端用Google AI Studio的佬友应该都懂,填充个提示词需要点好几个地方,开启新对话按钮太靠上点击费力,还有不打开侧边栏看不见当前所选的模型,这个脚本就是解决这个问题的,我在输入框上方集成了这些功能的按钮,具体效果如图所示。 // ==UserScript== // @name Google AI Studio 移动端快捷操作栏 // @namespace https://tampermonkey.net/ // @version 5.6 // @description “NEW”按钮用于开启新对话窗口,“ON”按钮用于打开填充System instructions面板,“OFF”按钮用于关闭System instructions面板;按钮上方横列显示当前模型名称。 // @match https://aistudio.google.com/* // @run-at document-idle // @grant none // ==/UserScript== (function () { 'use strict'; const SCAN_INTERVAL = 500; const GAP_TO_INPUT = 20; const wrap = document.createElement('div'); wrap.id = 'aiStudioCustomBtnGroup'; const css = document.createElement('style'); css.textContent = ` #aiStudioCustomBtnGroup { position: fixed; display: flex; flex-direction: column; align-items: center; gap: 5px; z-index: 2147483647; pointer-events: none; transform: translate(-50%, -100%); transition: opacity 0.2s ease; opacity: 0; padding-bottom: 2px; } #custom-model-name { font-family: -apple-system, BlinkMacSystemFont, 'Inter', 'Segoe UI', sans-serif; font-size: 10.5px; font-weight: 600; letter-spacing: 0.04em; color: rgba(50, 42, 36, 0.88); white-space: nowrap; pointer-events: none; user-select: none; padding: 3px 10px; background: rgba(255, 248, 242, 0.82); border-radius: 20px; border: 0.5px solid rgba(180, 140, 110, 0.25); margin-bottom: 1px; } .custom-btn-row { display: flex; gap: 6px; pointer-events: none; align-items: center; justify-content: center; } .custom-circle-btn { display: flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 50%; color: #fff; font-weight: 700; font-size: 11px; letter-spacing: 0.04em; font-family: -apple-system, BlinkMacSystemFont, 'Inter', 'Segoe UI', sans-serif; border: none; pointer-events: auto; cursor: pointer; user-select: none; transition: transform 0.12s ease, filter 0.12s ease; padding: 0; margin: 0; -webkit-font-smoothing: antialiased; background: #CC785C; box-shadow: 0 1px 6px rgba(180, 90, 60, 0.4); } .custom-circle-btn:hover { transform: scale(1.07); filter: brightness(1.1); } .custom-circle-btn:active { transform: scale(0.92); filter: brightness(0.88); } `; document.head.appendChild(css); const modelLabel = document.createElement('div'); modelLabel.id = 'custom-model-name'; modelLabel.textContent = '—'; const makeBtn = (id, txt) => { const el = document.createElement('button'); el.id = id; el.className = 'custom-circle-btn'; el.textContent = txt; return el; }; const btnNew = makeBtn('custom-btn-new', 'NEW'); const btnOn = makeBtn('custom-btn-on', 'ON'); const btnOff = makeBtn('custom-btn-off', 'OFF'); const rowNew = document.createElement('div'); rowNew.className = 'custom-btn-row'; rowNew.appendChild(btnNew); const rowOnOff = document.createElement('div'); rowOnOff.className = 'custom-btn-row'; rowOnOff.append(btnOn, btnOff); wrap.append(modelLabel, rowNew, rowOnOff); document.body.appendChild(wrap); const updatePosition = () => { let targetInput = null; const selectors = ['[placeholder*="Start typing a prompt"]', '[placeholder*="Optional tone"]']; for (const sel of selectors) { const el = document.querySelector(sel); if (el && el.getBoundingClientRect().width > 0) { targetInput = el; break; } } if (targetInput) { const rect = targetInput.getBoundingClientRect(); if (rect.top > 0) { wrap.style.opacity = '1'; wrap.style.left = `${window.innerWidth / 2}px`; wrap.style.top = `${rect.top - GAP_TO_INPUT}px`; } else { wrap.style.opacity = '0'; } } else { wrap.style.opacity = '0'; } requestAnimationFrame(updatePosition); }; const attachToTopLayer = () => { try { const vw = window.innerWidth; const vh = window.innerHeight; let bestEl = document.body; let bestZ = -Infinity; const all = document.body.querySelectorAll('*'); for (let i = 0; i < all.length; i++) { const el = all[i]; if (el === wrap) continue; const rect = el.getBoundingClientRect(); if (rect.width >= vw * 0.9 && rect.height >= vh * 0.9 && rect.left <= vw * 0.1 && rect.top <= vh * 0.1) { const style = getComputedStyle(el); if ((style.position === 'fixed' || style.position === 'absolute') && style.visibility !== 'hidden' && style.display !== 'none') { let zi = parseInt(style.zIndex, 10); if (Number.isNaN(zi)) zi = 0; if (zi >= bestZ) { bestZ = zi; bestEl = el; } } } } if (!bestEl.contains(wrap) || bestEl.lastElementChild !== wrap) { bestEl.appendChild(wrap); } } catch (e) {} }; const readModel = () => { try { const raw = localStorage.getItem('aiStudioUserPreference'); if (!raw) return '—'; const pm = JSON.parse(raw)?.promptModel; return pm ? pm.replace('models/', '') : '—'; } catch (e) { return '—'; } }; let lastModel = ''; const tickModel = () => { const now = readModel(); if (now !== lastModel) { modelLabel.textContent = now; lastModel = now; } }; requestAnimationFrame(updatePosition); setInterval(attachToTopLayer, SCAN_INTERVAL); tickModel(); setInterval(tickModel, 1000); btnNew.addEventListener('click', () => { document.querySelector('a[href*="prompts/new_chat"]')?.click(); setTimeout(() => { document.querySelector("button[data-test-category-id='17']")?.click(); }, 50); }); btnOn.addEventListener('click', () => { const sysBtn = document.querySelector("button[aria-label='System instructions']"); if (sysBtn) { sysBtn.click(); } else { document.querySelector("button[aria-label='Toggle run settings panel']")?.click(); setTimeout(() => { document.querySelector("button[aria-label='System instructions']")?.click(); }, 300); } }); btnOff.addEventListener('click', () => { document.querySelector("button[aria-label='关闭面板'], button[aria-label='Close panel'], button[aria-label='Close']")?.click(); }); })(); 1 个帖子 - 1 位参与者 阅读完整话题