skill-forge-hub 0.3.0 → 0.4.0

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 (35) hide show
  1. package/README.md +7 -6
  2. package/annual-report/SKILL.md +7 -7
  3. package/annual-report/resources/content-rules.md +11 -9
  4. package/annual-report/resources/data-collection.md +3 -3
  5. package/annual-report/resources/date-parsing.md +1 -1
  6. package/annual-report/resources/disk-and-html.md +5 -5
  7. package/annual-report/resources/industry-dictionary.md +3 -1
  8. package/annual-report/resources/reference.html +11 -11
  9. package/annual-report/resources/usage-guide.md +56 -15
  10. package/annual-report/user-config.md +1 -1
  11. package/cli.js +1 -0
  12. package/daily-report/SKILL.md +6 -5
  13. package/daily-report/resources/content-rules.md +27 -23
  14. package/daily-report/resources/data-collection.md +5 -5
  15. package/daily-report/resources/date-parsing.md +1 -1
  16. package/daily-report/resources/disk-and-html.md +1 -1
  17. package/daily-report/resources/industry-dictionary.md +3 -1
  18. package/daily-report/resources/reference.html +18 -14
  19. package/daily-report/resources/usage-guide.md +4 -4
  20. package/daily-report/user-config.md +1 -1
  21. package/magic-deck/SKILL.md +3 -3
  22. package/magic-deck/resources/deck-spec.md +36 -25
  23. package/magic-deck/resources/reference.html +319 -56
  24. package/magic-deck/user-config.md +2 -2
  25. package/meta-forge/resources/usage-guide.md +1 -1
  26. package/package.json +1 -1
  27. package/weekly-report/SKILL.md +6 -5
  28. package/weekly-report/resources/content-rules.md +38 -27
  29. package/weekly-report/resources/data-collection.md +5 -5
  30. package/weekly-report/resources/date-parsing.md +1 -1
  31. package/weekly-report/resources/disk-and-html.md +2 -2
  32. package/weekly-report/resources/industry-dictionary.md +5 -3
  33. package/weekly-report/resources/reference.html +49 -16
  34. package/weekly-report/resources/usage-guide.md +6 -6
  35. package/weekly-report/user-config.md +2 -2
@@ -21,7 +21,7 @@
21
21
  | srf-web-uop | - | d:\Web_Projects\srf-web-uop |
22
22
  | Spec-Core-Smart-Canteen | - | d:\Workspace_QCoder\Spec-Core-Smart-Canteen |
23
23
 
24
- - 「-」= 该仓库在当前系统不存在,跳过;当前系统对应列全为「-」(陌生机器)时跳过 git 收集,只按会话/文字内容生成
24
+ - 「-」= 该仓库在当前系统不存在,跳过;当前系统对应列全为「-」(陌生机器)时跳过 提交记录收集,只按会话/文字内容生成
25
25
 
26
26
  命令模板:
27
27
 
@@ -32,9 +32,9 @@ git -C <仓库路径> log --since="YYYY-MM-DD 00:00:00" --until="YYYY-MM-DD 23:5
32
32
  - 汇总每个提交涉及的**文件数**与**增删行数**(来自 --stat),作为量化数据
33
33
  - **行数统计口径(防生成物噪音)**:统计增删行数前必须先剔除生成物路径(如 `.speccore/code-graph/` 下的 graph.json:单文件可能贡献数十万行,会撑爆指标);numstat 输出为 `add\tdel\tpath` 三列,用 `grep -vE $'\t\.speccore/code-graph/'` 按制表符+路径过滤(正则匹配行首无效);统计后若行数仍异常巨大(>5 万行),用 `sort -rn | head -8` 定位元凶文件再排除;日报指标卡(提交次数/涉及文件数/代码行数)与 HTML 量化指标行均用过滤后口径
34
34
  - 同主题多提交(含多次提交与 MR 合并记录)合并为一条任务点,量化数据累加
35
- - git 无法给出实际耗时,用时取合理估算值,允许用户事后修正
35
+ - 提交记录无法给出实际耗时,用时取合理估算值,允许用户事后修正
36
36
  - 无当日提交的仓库不写入日报
37
- - 仓库路径(当前系统列)不存在/非 git 仓库时静默跳过该仓库(不报错、不写入)
37
+ - 仓库路径(当前系统列)不存在/非代码仓库时静默跳过该仓库(不报错、不写入)
38
38
  - 用户说「只写 xxx 的日报 / 只聚合 xxx 仓库」时只收集指定仓库
39
- - git 之外的默认来源:本次会话中用户已提及/口述的工作内容(任务、进度、风险等对话信息)一并聚合,与 git 记录去重合并
40
- - 用户明确说"只整理这段文字/只按这段"时,忽略 git 与会话上下文,只用指定文字
39
+ - 提交记录之外的默认来源:本次会话中用户已提及/口述的工作内容(任务、进度、风险等对话信息)一并聚合,与 提交记录去重合并
40
+ - 用户明确说"只整理这段文字/只按这段"时,忽略提交记录与会话上下文,只用指定文字
@@ -14,7 +14,7 @@
14
14
  | 20261020 / 2026-10-20 | 直接使用 |
15
15
  | 10月20号到10月25号的日报 / 11.05~11.07 / 上周一到上周五 / 10月20号到今天 | 连续日期批量生成:两端分别按本表单点规则解析(终点缺年份沿用起点年份、终点月份早于起点月份视为下一年,如「12月28号到1月3号」;终点可写「今天/昨天」),按日期正序逐日生成一份日报 |
16
16
 
17
- - 目标日期写入日报标题与 git log 的 --since/--until
17
+ - 目标日期写入日报标题与提交记录聚合的起止范围
18
18
  - 批量生成流程:先一次性收集区间内所有日期的提交(逐日分片 --since/--until),再按日期正序逐日生成(每日可引用后一天数据做「明日计划」,见「输出内容与数据来源」节),最后统一落盘与截图;批量时只自动打开最后一天(最新一天)的 html、其余仅落盘不开浏览器,避免开多个标签页;对话中按日期分隔输出各天 md 正文
19
19
  - 落盘子目录名永远用解析出的目标日期("昨天的日报"→ 昨天日期),与生成当天/生成时刻无关,不因跨零点而改变
20
20
  - 未提及任何日期词(如"今天/昨天/10月20号")时,一律默认今天直接生成,不追问用户
@@ -8,7 +8,7 @@
8
8
  - 每次生成落盘哪些文件读取顶部「默认配置」的 `FORMATS`(默认 md/txt/html/content-png 四个,md/txt/html 文件名 `daily-report-YYYYMMDD.<格式>`、截图文件名 `daily-report-YYYYMMDD-content.png`;txt 为纯文本版);`DISK: false` 时全部不落盘
9
9
  - 对话中照常输出 md 正文(不受 FORMATS 影响);`OPEN_HTML: true` 且本次落盘了 html 时,自动打开浏览器(macOS:`open <html文件>`;Windows PowerShell:`Start-Process <html文件>`)
10
10
  - FORMATS 含 content-png 时额外生成内容区截图 `daily-report-YYYYMMDD-content.png`:整页内容区截图一张(头部标题卡片 + 今日任务进度/明日计划/风险阻塞点三张分节卡片整体截出,头部卡片必须带上,图片四周保留对称合适的外边距约 40px 留白):html 内置 `?shot=content` 参数(页面 JS 检测后仅统一 body 四周 padding 40px、不隐藏任何元素(头部标题卡/三张分节卡/页脚全部保留),正常浏览不受影响);用 Chrome headless 访问带参 URL 截图(路径按系统选:macOS=`/Applications/Google Chrome.app/Contents/MacOS/Google Chrome`;Windows 按序探测 `C:\Program Files\Google\Chrome\Application\chrome.exe` → `C:\Program Files (x86)\Google\Chrome\Application\chrome.exe` → `%LOCALAPPDATA%\Google\Chrome\Application\chrome.exe`,经 node child_process 执行 `--headless --disable-gpu --no-sandbox --hide-scrollbars --user-data-dir=<临时目录> --screenshot=<png路径> --window-size=760,<估算高度> --virtual-time-budget=4000 "file:///<html路径>?shot=content"`(Windows 下 URL 写作 file:///C:/...,用 node url.pathToFileURL 生成),跑完删除临时目录;禁止用 `--headless=new`(单例模式会静默失败生成占位图);若 Chrome 不存在则换 Edge(macOS=`/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge`;Windows=`C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe` → `C:\Program Files\Microsoft\Edge\Application\msedge.exe`),都找不到时跳过截图并在对话注明);高度按整页内容区估算(body 上下留白~80 + 头部标题卡片~180 + 每节卡片(45+条目数×70+40,含各卡片 margin-bottom 18) + 余量~15,底部留白仅 body 下 padding 40px、与顶部对称,余量只防截断不可多给),截图后用 Read 校验:头部标题卡片与三张分节卡片整体完整在图内、四周留白对称合适、不截断,底部留白过大则减高度、截断则加高度重截
11
- - md/txt/html 均含生成时间行,精确到时分秒(如 2026-10-22 19:10:38);HTML 采用参考图式深蓝面板风格 + ask 同款发光动效的融合样式(不换其它色系,颜色全部用 CSS 变量统一 ask 色板:--cyan #0ea5e9、--bg #0a1929、--card #0b1e37、--border rgba(14,165,233,.15)、--text #bae6fd、--muted #5b7fa5、--green #14b8a6、--orange #f97316、--purple #6366f1、--rose #f43f5e):禁用任何 CDN 与外部网络引用(@import、外链 CSS/JS/图片/网络字体一律禁止,页面必须公司内网离线双击可打开、零外部依赖),字体全用系统本地字体栈 ui-monospace/'SF Mono'/SFMono-Regular/Menlo/Consolas/'Microsoft YaHei'/monospace(macOS 走 SF Mono/Menlo、Windows 走 Consolas,中文回退 Microsoft YaHei;字母数字等宽自带科技感),正文同栈 400、标题同栈 900 渐变文字(var(--cyan) #0ea5e9→var(--purple) #6366f1,background-clip:text,发光用 ask-result 模板同款 text-shadow 双圈(titleGlow 动画 3s 呼吸:基线 20px/.4 + 60px/.15 ↔ 峰值 30px/.7 + 80px/.3,h1 留静态基线;24px 小字同参数观感与官方一致,禁止改三圈小模糊——会糊在字内边界不清));页面背景纯深蓝黑 #0a1929(参考图同款色值)、正文浅青 #bae6fd、全屏极轻微噪点纹理(body::before fixed 覆盖层,background-image 用 SVG feTurbulence data URI(<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='100%' height='100%' filter='url(#n)'/></svg>),opacity .04,pointer-events:none,z-index 0 在卡片之下,消除大面积纯色死板感),body 纯 #0a1929 背景不加径向辉光(onboarding 同款);全屏背景叠加 speccore dashboard 同款三层科技感底纹:60px 网格底纹(.grid-pattern fixed inset 0,background-image linear-gradient(rgba(0,240,255,.03) 1px, transparent 1px) 纵横双向、background-size 60px 60px、z-index 0)+ 彩色星点层(.stars fixed inset 0,8 个 1-1.5px 星点 radial-gradient(1px 1px at <位置>, <色>, transparent) 多背景组合:白色 rgba(255,255,255,.3-.4) 与青色 rgba(0,240,255,.45-.5)、紫色 rgba(168,85,247,.4)、绿色 rgba(0,255,136,.4),位置分散 10%-90%,z-index 0)+ 全屏 2px 周期细扫描线(.scanlines fixed inset 0,repeating-linear-gradient(0deg, transparent 0 2px, rgba(0,240,255,.015) 2px 4px),z-index 999 罩最上层,pointer-events none;三层均 fixed 不随滚动,营造星野+网格+扫描的科技氛围,不破坏参考图纯深蓝黑质感);内容区宽度响应窗口自适应(.wrap width:clamp(640px, 60%, 1200px) + margin:0 auto:最小 640px、最大 1200px、中间按窗口 60% 缩放,页面左右留白对称);头部卡片参考图式实心深蓝底(var(--card) 实心 #0b1e37,略亮于背景、更偏蓝)+ 8px 周期细密水平条纹(background-image 叠加 repeating-linear-gradient(180deg, rgba(255,255,255,.012) 0 1px, transparent 1px 8px))+ 上下边缘 1px 微亮描边(border-top/border-bottom 1px solid #0f3350,参考图「边缘点亮一线」效果,与 ask 四边浮光扫描线动画共存、动画层在上)+ 圆角 6px + 外发光与 inset 内发光(0 0 20px rgba(14,165,233,.08) + inset 0 1px 24px rgba(14,165,233,.04)),overflow:hidden,标题区仅标题与青色胶囊生成时间徽章(badge 后直接收尾,不加底部细线/装饰光带,避免悬空多余线);标题与徽章下加 TL;DR 一句话摘要行(.summary-line flex 布局 max-width 540px 居中:左侧 .summary-tag「TL;DR」青色小标签 系统等宽 10px 粗体、rgba(14,165,233,.35) 细边圆角 4px、rgba(14,165,233,.07) 底、青色 text-shadow 光晕 + 右侧 .summary-text 12.5px 浅青正文 line-height 1.75 text-align left;摘要带判断给结论——整体节奏/主要风险/明日重点,不罗列条目);分节卡片同参考图式质感(实心深蓝底 #0b1e37 + 8px 周期细密水平条纹 + 上下边缘 1px 微亮描边 #0f3350 + 圆角缩小至 6px + overflow:hidden,保留阴影与 inset 内发光,去掉原全框青色细边),每张分节卡片左侧带参考图式左缘色条(8px 宽竖线贯穿整卡高度,节色渐变带同色光晕:完成 linear-gradient(180deg,#5eead4,#14b8a6) / 计划 linear-gradient(180deg,#fdba74,#f97316) / 风险 linear-gradient(180deg,#fda4af,#e11d48),box-shadow 0 0 12px 同色 30% 透明度;卡片内容 padding-left 24px 避让色条),节标题带 18px 同色渐变 SVG 语义图标+文字微光晕(h2 flex 布局 gap 10px,图标替换原竖向短条:完成=圆形对勾、计划=日历、风险=三角警示;inline SVG 内 linearGradient 同节色系渐变 完成 #5eead4→#14b8a6 / 计划 #fdba74→#f97316 / 风险 #fda4af→#e11d48 + 白色描边细节 + drop-shadow 同色光晕;标题色:完成青绿 #5eead4、计划橙 #fdba74、风险玫红 #fda4af + h2 文字同色双圈发光字 3s 呼吸 secGlow 动画(基线 14px/.45+40px/.18 ↔ 峰值 22px/.75+60px/.3,各节动画用本节主题色,与主标题同节奏;仅节标题文字发光,SVG 图标与日期徽章不加))+ 「今日任务进度」节标题右侧带目标日期小胶囊徽章 sec-date(margin-left:auto 推右、flex:0 0 auto;11px var(--muted) 字、padding 3px 10px、圆角 999px、青色细边 rgba(14,165,233,.18)、背景 rgba(14,165,233,.05),如 2026-10-22;仅完成节显示、计划/风险节不加,让截图自带具体日期)+ 条目 3D 立体圆球序号徽章(28px 白字,立体感克制的柔和球面——弱化版三段收窄色阶:受光球面渐变 radial-gradient(受光点 circle at 30% 28%,浅亮→主色→深色:完成 #7dd9cf→#14b8a6→#0d9488、计划 #fdc69a→#f97316→#ea580c、风险 #fdaab4→#f43f5e→#e11d48)+ inset 右下内暗影 -3px -4px 6px rgba(0,0,0,.3) 与左上内亮缘 1px 2px 3px rgba(255,255,255,.2) + ::before 左上椭圆高光点(position:relative 定位,top 5px/left 7px、8x6px、rotate -28deg、白色径向渐隐 rgba(255,255,255,.7)→0)+ 底部投影 0 2px 4px rgba(0,0,0,.25) 与同色光晕 0 0 8px + 数字 text-shadow 0 1px 1px rgba(0,0,0,.25) 贴球面) + 条目内部留白:li 水平 padding 10px(hover 淡青底 rgba(14,165,233,.06) 与文字间留 10px 间距)+ 序号圆形徽章 28px(数字距圆边约 8px,不贴圆边)+ 列表轻微缩进 12px(ol/ul padding 0 12px)+ 描述与进度双层错落排版(描述 15px、进度用时 12px 青灰小字 #5b7fa5、百分比加粗强调且两侧 margin 0 2px 呼吸留白、进度与用时之间用「 - 」连接(与 md/txt 版一致,不用 · )、条目间青色虚线分隔);风险节条目三环展开:desc 主行(问题)+ meta 影响行(12px 青灰小字「影响:xxx」)+ .advice 建议行(12px 青色小字,「建议:」加粗前缀,margin-top 6px);md/txt 版同条目依次写问题、影响、建议,文本格式不变+ 青色渐变 40px 大胶囊「一键复制」按钮(var(--cyan)→#0284c7,30px 青色光晕,hover 45px 光晕上浮,模板同款;flex 居中布局,内置 16px 内联 SVG 双矩形复制图标(白色 currentColor 描边、图标与文字 gap 8px、禁用 emoji 图标),复制成功后图标切换为对勾 SVG、文字短暂变「已复制」);头部 speccore ask 风格发光特效(与 ask 页面完全同款):四边 1px 青色浮光线,渐变 transparent→var(--cyan)→transparent 整条线平移扫动(亮段长、无 box-shadow 光晕,四边亮段构成顺时针环绕循环,与 ask 看板卡片完全同款(上横线 scanX 左→右、右竖线 scanY 上→下、下横线 scanX-rev 右→左、左竖线 scanY-rev 下→上,四线同周期同速度 3s linear 单向平移);实现为 1px 整线渐变元素平铺整条边(上/下横线 left:0/right:0 + height:1px + linear-gradient(90deg, transparent, var(--cyan), transparent);左/右竖线 top:0/bottom:0 + width:1px + linear-gradient(180deg, transparent, var(--cyan), transparent)),随线体 translateX/translateY 平移 ±100%(相对线长):scanX -100%→100%、scanX-rev 100%→-100%、scanY -100%→100%、scanY-rev 100%→-100%;亮段(线中央渐变段)完整穿越卡片后消失于两端界外(卡片 overflow:hidden 裁剪),带「出现→穿越→消失」节奏;禁止自创 background-position 滚动/常驻辉光/往返摆动/亮段半嵌常驻等变体)+ 顶部光斑 ask 同款 cardGlow(radial-gradient ellipse at 50% 10% rgba(14,165,233,.25)→transparent 70%,opacity .5→1 + scale 1→1.6,transform-origin top center,3s 循环;头部卡片与每张分节卡片内均放 .card-glow 光斑层,覆盖整卡顶部)+ 标题文字青色光晕呼吸(text-shadow 双圈 3s 循环);入场动画:头部淡入下滑、卡片依次错峰上浮淡入(完成 0.26s/计划 0.4s/风险 0.54s)、按钮弹入(卡片入场动画 fadeDown/fadeUp/riseIn 的 fill-mode 必须用 backwards 严禁 both——both 使动画结束后最后一帧 transform:none 永久覆盖 hover 的 3D 偏转 transform,CSS 动画 applied 值优先级高于普通声明,hover 偏转会完全失效;cometFade 与按钮 pop 保持 both 不受此限);hover 微交互:卡片上浮+阴影加深+inset 发光增强、条目淡青底、序号徽章放大微旋(li:hover .idx transform:scale(1.18) rotate(-4deg)、球内数字放大 12→14px、数字必须用 <b> 包裹(.idx b{display:inline-block;transition:transform .2s ease})+ li:hover .idx b{transform:rotate(-6deg)} 数字在球内独立微旋;用户澄清 hover 变大的字体仅小球内数字,desc 正文保持 15px 不变不加斜体;销售 demo 版类名 .num:li:hover .num scale(1.22) rotate(-6deg)、数字 13→15px 同样 <b> 包裹 + rotate(-6deg))、按钮上浮/按压回缩;页脚 10px muted 文字(无分隔线、不加边框),署名固定 GENERATED BY SPECCORE TEAM · <目标日期>(日期动态,如 GENERATED BY SPECCORE TEAM · 20261022);三段分节列表,任务点保持中文顿号序号;当日节奏条(.day-strip 任务进度节内三时段横条:上午/下午/晚上按提交数分段高亮、.strip-item position:relative、hover 弹出 .strip-tip 浮层(bottom:calc(100% + 6px) 向上弹出避卡片 overflow:hidden 裁剪;position:absolute、translateX(-50%) scale(.85)→hover scale(1)、opacity 0→1、pointer-events:none、z-index:30、background:#0b2a4a、border:1px solid rgba(14,165,233,.4)、圆角、小字两行「时段 · N 次提交」+主题词));节奏条下量化指标行(.day-metrics flex 居中 gap:22px、10.5px muted 字、数字用 .day-metrics b 青色等宽加粗(3 次提交 / 56 个文件 / +1.8k −285 行,删行数字 .minus 用 --rose 玫红);纯文字模式无 git 数据时省略此行);进度条终点圆点 + 流星扫描填充(.pbar-fill 必须 display:block + position:relative——行内 span 忽略 width/height 会变成 0×0,填充与圆点全部不可见;.pbar-fill::before 终点圆点 7px 径向渐变圆 right:0 + transform:translate(50%,-50%) 骑在填充右缘(done 青绿 radial-gradient(circle at 35% 30%,#a7f3d0,#2dd4bf 62%,#0d9488)、plan 橙 #fdba74/#f97316/#c2410c,box-shadow 同色光晕、z-index:2;.pbar-track/.pbar-fill 均不得加 overflow:hidden——圆点右半伸出填充 3.5px 骑边渲染);流星 = JS 注入 .pbar-track 内的 .pbar-sweep(absolute 左贴轨道、width:0 起点隐藏、height:16px、transform:translateY(-50%) 垂直居中、z-index:1、pointer-events:none)+ sweep 右缘 .pbar-comet 光体(absolute left:100% 贴 sweep 右缘随宽度移动,严禁 right:62%/right:100% 等右侧定位——彗星会停在轨道中段、进度 100% 时也到不了终点;子弹头形光核:20×11px 横向泪滴 border-radius:55% 100% 100% 55% / 85% 100% 100% 85%(右端全圆弧=前进弹头、左端 55%/85% 大圆角=后部饱满钝圆接尾不露尖(比 35%/60% 更钝,禁尖窄收尾),严禁 13×7 小椭圆方块感、严禁 20px 大圆球形态)background 三层:底层 linear-gradient(90deg,rgba(153,246,228,.3),rgba(224,254,255,.6) 55%,#fff) 铺底(形状内不得透底)+ 右前缘青蓝冷光 radial-gradient(ellipse 70% 85% at 74% 45%,rgba(125,211,252,.9),transparent) + 青白核 radial-gradient(circle 12px at 66% 50%,#fff,rgba(224,254,255,.95) 45%,rgba(153,246,228,.5) 75%,transparent)(circle 半径必须显式 12px——自动半径按最远角计、四角渐隐至透明会露出轨道深色背景成「黑三角」,显式半径让光核饱满),box-shadow 双圈柔光 0 0 5px 2px rgba(186,230,253,.75) + 0 0 12px 4px rgba(45,212,191,.3)——光晕总高控制在 2~2.5 倍条高以内,不用 drop-shadow;整体前大后收窄的扫帚流星:头部 20×11 大头 → ::after 彗尾 right:40%、84×12px 细长锥形拖尾 linear-gradient(90deg,transparent,rgba(153,246,228,.18) 26%,rgba(186,230,253,.55) 64%,rgba(255,255,255,.9)) + clip-path:polygon(4% 40%,16% 24%,100% 0,100% 100%,16% 76%,4% 60%)(左端收成 2.4px 高平口钝头、右端全高平接光核、16% 处起渐收——远窄近宽,禁矩形方块形、禁 1px 尖点)+ blur 1px + z-index:0——长度约 4 倍头宽;剥落粒子流(JS 为每颗 .pbar-comet 注入 30 个 span.cp,绝对定位在光核中后段出生):30 粒三带分布(上方飘散带 17 粒 by -6~-0.5 向上飘散 + 中部渗漏带 6 粒 by +0.5~+5.5 + 深蓝带 7 粒 by +7~+9.5 贴光核下缘)椭圆小块前大后小(3.2×2.2 → 1.2×0.9px,宽高不等 + rotate -12°~12° 不规则椭圆,禁用标准圆形、禁用 box-shadow 静态星屑——静态点没有剥落飘散的生命感),出生点从头部稍靠后(left 9~17px)开始,y 紧贴中心水平线(中线 ±2.5px,各粒角度基本一致不散乱),cpFlow 1.5~1.8s cubic-bezier(.2,.05,.55,1) infinite + 负延迟 -0.1~-1.5s 错峰:0%→10% 淡入渐现(渐渐出现)、10%→100% 沿水平线加速向后飘 translate3d(-45~-62px, dy, 0)(加速向后)、55% 后 opacity 渐隐 + scale(.16) 渐小(向尾部消失)、dy 三带取值:上方 -3.5~-7 上飘展开(用户反馈上方粒子少且飘散不够远,13→17 再加密、dy 再扩大,下方相对合适不增)、中部 +1.5~+3.5 向下渗漏、深蓝 +5~+7 向后甩出(深蓝带 cp-deep 深蓝渐变+深蓝光晕、dur 1.06~1.25s 更久停留),box-shadow 光晕 0%→55% 增强再减弱(每粒生命期一次明灭=呼吸发光,周期 1.5~1.8s 与主体 2.4s 呼吸非整数倍错开,禁止同频齐步闪);粒子 z-index:1 在彗尾之上(尾 z-index:0)、opacity:0 起步呼吸发光分层不同频:主体光核与彗尾 2.4s 周期呼吸(comet 双动画 cometFade + glowPulse 2.4s ease-in-out infinite:box-shadow 双圈光晕 0%↔50% 周期扩缩;::after 挂 tailGlow 2.4s ease-in-out infinite:filter blur(1px) brightness(1) ↔ blur(1.5px) brightness(1.28) 亮度呼吸),粒子 1.5~1.8s 明灭与主体 2.4s 呼吸非整数倍错开(视觉错落不同频);opacity:0 常驻隐藏);.pbar-track.sheen-on 时 sweep transition:width 1.1s cubic-bezier(.3,.8,.4,1) 生长(comet 贴 sweep 右缘 left:100% 随宽度从左扫到右),comet 的 animation 严禁写在 .pbar-comet 基类(基类动画页面加载 t=0 即播、1.1s 后 both 定格 opacity:0,而扫动 setTimeout 1.5s 才开始——时序错位会让流星全程不可见);必须挂在 .pbar-track.sheen-on .pbar-comet 选择器上(cometFade 1.1s ease-out both, glowPulse 2.4s ease-in-out infinite 逗号并列双动画:cometFade 7% 淡入、86% 保持、100% 到终点消失、glowPulse 光晕呼吸循环;::after 彗尾另挂 tailGlow 2.4s ease-in-out infinite 亮度呼吸),靠 playSweep 内 remove/add sheen-on 类切换重启动画,与 dotPulse 同机制;扫动终点按各条目标进度 data-w:sheen 内 sweep inline width 终点 = data-w(done 条 100% 扫满轨道、有进度的 plan 条如 30% 即 30% 停在进度点不越界)——sweep 宽度过渡与 fill 宽度过渡同参数天然同步,comet 与彗尾/星屑无需任何反向补偿(scaleX 压缩方案会把彗尾一同拉长数倍,禁用);填充同步生长:入场 sheen(el,'wave') 给 fill 设 transition width 1.1s 同 easing + width 0→data-w,与流星同步——流星扫到哪、填充长到哪,流星到终点消失、留下各自进度,之后填充保持不再变化;圆点 .pbar-done/.pbar-plan .pbar-track.sheen-on .pbar-fill::before animation:dotPulse 1.1s(90% 处 filter:brightness(2) + 白光 drop-shadow 爆亮,done/plan 通用)流星到达终点时爆亮——dotPulse 选择器必须与 JS 加类位置一致:JS 把 sheen-on 加在 .pbar-track 上,严禁写 .pbar-fill.sheen-on::before(JS 从不在 fill 上加类,选择器永不命中、爆亮不触发);流星注入与入场波浪覆盖完成条 + 有进度的计划条(JS 遍历 .pbar-track:plan 且进度<=0 的条 return 跳过——0 进度的计划条不注入流星、不扫、保持静态),其余条 data-w 记录目标进度后 fill 归零;入场波浪:setTimeout 1500+i*420ms 逐条 sheen(el,'wave') 错峰(上→下必然可见);hover 重扫:li 上 mouseenter+pointerenter 双监听,sheen(el,'hover') 只 remove/add fill 与 track 的 sheen-on 类重放流星扫过(comet 再扫一遍,0 进度的 plan 条同样跳过),fill 宽度与颜色完全不重置(进度不再变化),sheen(el,src) 按来源独立节流(wave 1s / hover 300ms);重启动画 remove 类→sweep inline 归零 width:0(transition:none 无过渡)→void offsetWidth 强制回流→同步 add 类→sweep inline 目标 width=data-w(恢复 transition;双 RAF 在 headless 虚拟时间下不推进,不可用));液态玻璃(@supports((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))) 内 .header-card/.section 加 backdrop-filter:blur(16px) saturate(1.35) + background-color:rgba(11,30,55,.42),不支持的老浏览器走默认实心深蓝不白屏);CRT 扫描光带(.scanband position:fixed、left:0/right:0、height:150px、linear-gradient(180deg,transparent,rgba(0,240,255,.03) 50%,transparent)、animation:scanMove 11s linear infinite(top -22%→112%)、pointer-events:none、z-index:998,置于 scanlines 之下一层);卡片级 3D 微倾斜(严禁全页级 mousemove 倾斜——页面容器整页旋转会让所有卡片一起偏转,与「仅当前卡片响应」不符):每张卡片 hover 时仅该卡片随鼠标偏转,卡片 transform 写 perspective(900px) + rotateY(calc(var(--mx,0)*2.5deg)) rotateX(calc(var(--my,0)*-2.5deg))(±1.25° 极轻微),与 hover 上浮 translateY(-2px) 合并写同一条 transform(严禁拆两条相互覆盖);hover 态选择器带 tilt(header-card/overview/section 或 header-card/card),非 hover 卡片不倾斜;JS 对每张卡片监听 mousemove 计算卡内相对位置((clientX-rect.left)/rect.width*2-1 归一化 -1~1)只更新该卡 --mx/--my,mouseleave 归零回正,transition transform .18s 平滑;移动端无 mousemove 保持 0 不倾斜);禁止写 @media (prefers-reduced-motion: reduce) 禁用动画的媒体查询块(官方模板无此块,用户系统开启减少动画时该块会禁用全部动效,是竖线不动/发光不呼吸的根因);页面 JS 需支持 `?shot=content` 参数(检测 location.search 含 shot=content 时仅统一 body 四周 padding 40px(不隐藏任何元素),供整页内容区截图用、保证截图四周留白对称合适)
11
+ - md/txt/html 均含生成时间行,精确到时分秒(如 2026-10-22 19:10:38);HTML 采用参考图式深蓝面板风格 + ask 同款发光动效的融合样式(不换其它色系,颜色全部用 CSS 变量统一 ask 色板:--cyan #0ea5e9、--bg #0a1929、--card #0b1e37、--border rgba(14,165,233,.15)、--text #bae6fd、--muted #5b7fa5、--green #14b8a6、--orange #f97316、--purple #6366f1、--rose #f43f5e):禁用任何 CDN 与外部网络引用(@import、外链 CSS/JS/图片/网络字体一律禁止,页面必须公司内网离线双击可打开、零外部依赖),字体全用系统本地字体栈 ui-monospace/'SF Mono'/SFMono-Regular/Menlo/Consolas/'Microsoft YaHei'/monospace(macOS 走 SF Mono/Menlo、Windows 走 Consolas,中文回退 Microsoft YaHei;字母数字等宽自带科技感),正文同栈 400、标题同栈 900 渐变文字(var(--cyan) #0ea5e9→var(--purple) #6366f1,background-clip:text,发光用 ask-result 模板同款 text-shadow 双圈(titleGlow 动画 3s 呼吸:基线 20px/.4 + 60px/.15 ↔ 峰值 30px/.7 + 80px/.3,h1 留静态基线;24px 小字同参数观感与官方一致,禁止改三圈小模糊——会糊在字内边界不清));页面背景纯深蓝黑 #0a1929(参考图同款色值)、正文浅青 #bae6fd、全屏极轻微噪点纹理(body::before fixed 覆盖层,background-image 用 SVG feTurbulence data URI(<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='100%' height='100%' filter='url(#n)'/></svg>),opacity .04,pointer-events:none,z-index 0 在卡片之下,消除大面积纯色死板感),body 纯 #0a1929 背景不加径向辉光(onboarding 同款);全屏背景叠加 speccore dashboard 同款三层科技感底纹:60px 网格底纹(.grid-pattern fixed inset 0,background-image linear-gradient(rgba(0,240,255,.03) 1px, transparent 1px) 纵横双向、background-size 60px 60px、z-index 0)+ 彩色星点层(.stars fixed inset 0,8 个 1-1.5px 星点 radial-gradient(1px 1px at <位置>, <色>, transparent) 多背景组合:白色 rgba(255,255,255,.3-.4) 与青色 rgba(0,240,255,.45-.5)、紫色 rgba(168,85,247,.4)、绿色 rgba(0,255,136,.4),位置分散 10%-90%,z-index 0)+ 全屏 2px 周期细扫描线(.scanlines fixed inset 0,repeating-linear-gradient(0deg, transparent 0 2px, rgba(0,240,255,.015) 2px 4px),z-index 999 罩最上层,pointer-events none;三层均 fixed 不随滚动,营造星野+网格+扫描的科技氛围,不破坏参考图纯深蓝黑质感);内容区宽度响应窗口自适应(.wrap width:clamp(640px, 60%, 1200px) + margin:0 auto:最小 640px、最大 1200px、中间按窗口 60% 缩放,页面左右留白对称);头部卡片参考图式实心深蓝底(var(--card) 实心 #0b1e37,略亮于背景、更偏蓝)+ 8px 周期细密水平条纹(background-image 叠加 repeating-linear-gradient(180deg, rgba(255,255,255,.012) 0 1px, transparent 1px 8px))+ 上下边缘 1px 微亮描边(border-top/border-bottom 1px solid #0f3350,参考图「边缘点亮一线」效果,与 ask 四边浮光扫描线动画共存、动画层在上)+ 圆角 6px + 外发光与 inset 内发光(0 0 20px rgba(14,165,233,.08) + inset 0 1px 24px rgba(14,165,233,.04)),overflow:hidden,标题区仅标题与青色胶囊生成时间徽章(badge 后直接收尾,不加底部细线/装饰光带,避免悬空多余线);标题与徽章下加 TL;DR 一句话摘要行(.summary-line flex 布局 max-width 540px 居中:左侧 .summary-tag「TL;DR」青色小标签 系统等宽 10px 粗体、rgba(14,165,233,.35) 细边圆角 4px、rgba(14,165,233,.07) 底、青色 text-shadow 光晕 + 右侧 .summary-text 12.5px 浅青正文 line-height 1.75 text-align left;摘要带判断给结论——整体节奏/主要风险/明日重点,不罗列条目);分节卡片同参考图式质感(实心深蓝底 #0b1e37 + 8px 周期细密水平条纹 + 上下边缘 1px 微亮描边 #0f3350 + 圆角缩小至 6px + overflow:hidden,保留阴影与 inset 内发光,去掉原全框青色细边),每张分节卡片左侧带参考图式左缘色条(8px 宽竖线贯穿整卡高度,节色渐变带同色光晕:完成 linear-gradient(180deg,#5eead4,#14b8a6) / 计划 linear-gradient(180deg,#fdba74,#f97316) / 风险 linear-gradient(180deg,#fda4af,#e11d48),box-shadow 0 0 12px 同色 30% 透明度;卡片内容 padding-left 24px 避让色条),节标题带 18px 同色渐变 SVG 语义图标+文字微光晕(h2 flex 布局 gap 10px,图标替换原竖向短条:完成=圆形对勾、计划=日历、风险=三角警示;inline SVG 内 linearGradient 同节色系渐变 完成 #5eead4→#14b8a6 / 计划 #fdba74→#f97316 / 风险 #fda4af→#e11d48 + 白色描边细节 + drop-shadow 同色光晕;标题色:完成青绿 #5eead4、计划橙 #fdba74、风险玫红 #fda4af + h2 文字同色双圈发光字 3s 呼吸 secGlow 动画(基线 14px/.45+40px/.18 ↔ 峰值 22px/.75+60px/.3,各节动画用本节主题色,与主标题同节奏;仅节标题文字发光,SVG 图标与日期徽章不加))+ 「今日任务进度」节标题右侧带目标日期小胶囊徽章 sec-date(margin-left:auto 推右、flex:0 0 auto;11px var(--muted) 字、padding 3px 10px、圆角 999px、青色细边 rgba(14,165,233,.18)、背景 rgba(14,165,233,.05),如 2026-10-22;仅完成节显示、计划/风险节不加,让截图自带具体日期)+ 条目 3D 立体圆球序号徽章(28px 白字,立体感克制的柔和球面——弱化版三段收窄色阶:受光球面渐变 radial-gradient(受光点 circle at 30% 28%,浅亮→主色→深色:完成 #7dd9cf→#14b8a6→#0d9488、计划 #fdc69a→#f97316→#ea580c、风险 #fdaab4→#f43f5e→#e11d48)+ inset 右下内暗影 -3px -4px 6px rgba(0,0,0,.3) 与左上内亮缘 1px 2px 3px rgba(255,255,255,.2) + ::before 左上椭圆高光点(position:relative 定位,top 5px/left 7px、8x6px、rotate -28deg、白色径向渐隐 rgba(255,255,255,.7)→0)+ 底部投影 0 2px 4px rgba(0,0,0,.25) 与同色光晕 0 0 8px + 数字 text-shadow 0 1px 1px rgba(0,0,0,.25) 贴球面) + 条目内部留白:li 水平 padding 10px(hover 淡青底 rgba(14,165,233,.06) 与文字间留 10px 间距)+ 序号圆形徽章 28px(数字距圆边约 8px,不贴圆边)+ 列表轻微缩进 12px(ol/ul padding 0 12px)+ 描述与进度双层错落排版(描述 15px、进度用时 12px 青灰小字 #5b7fa5、百分比加粗强调且两侧 margin 0 2px 呼吸留白、进度与用时之间用「 - 」连接(与 md/txt 版一致,不用 · )、条目间青色虚线分隔);风险节条目四环展开:desc 主行(问题)+ meta 影响行(12px 青灰小字「影响:xxx」)+ .advice 建议行(12px 青色小字,「建议:」加粗前缀,margin-top 6px)+ .owner 责任与时间行(12px 紫色 #a78bfa 小字,「责任与时间:」加粗前缀,margin-top 4px,口述无责任信息时省略此行);md/txt 版同条目依次写问题、影响、建议、责任与时间(第四项口述有时必写),文本格式不变+ 青色渐变 40px 大胶囊「一键复制」按钮(var(--cyan)→#0284c7,30px 青色光晕,hover 45px 光晕上浮,模板同款;flex 居中布局,内置 16px 内联 SVG 双矩形复制图标(白色 currentColor 描边、图标与文字 gap 8px、禁用 emoji 图标),复制成功后图标切换为对勾 SVG、文字短暂变「已复制」);头部 speccore ask 风格发光特效(与 ask 页面完全同款):四边 1px 青色浮光线,渐变 transparent→var(--cyan)→transparent 整条线平移扫动(亮段长、无 box-shadow 光晕,四边亮段构成顺时针环绕循环,与 ask 看板卡片完全同款(上横线 scanX 左→右、右竖线 scanY 上→下、下横线 scanX-rev 右→左、左竖线 scanY-rev 下→上,四线同周期同速度 3s linear 单向平移);实现为 1px 整线渐变元素平铺整条边(上/下横线 left:0/right:0 + height:1px + linear-gradient(90deg, transparent, var(--cyan), transparent);左/右竖线 top:0/bottom:0 + width:1px + linear-gradient(180deg, transparent, var(--cyan), transparent)),随线体 translateX/translateY 平移 ±100%(相对线长):scanX -100%→100%、scanX-rev 100%→-100%、scanY -100%→100%、scanY-rev 100%→-100%;亮段(线中央渐变段)完整穿越卡片后消失于两端界外(卡片 overflow:hidden 裁剪),带「出现→穿越→消失」节奏;禁止自创 background-position 滚动/常驻辉光/往返摆动/亮段半嵌常驻等变体)+ 顶部光斑 ask 同款 cardGlow(radial-gradient ellipse at 50% 10% rgba(14,165,233,.25)→transparent 70%,opacity .5→1 + scale 1→1.6,transform-origin top center,3s 循环;头部卡片与每张分节卡片内均放 .card-glow 光斑层,覆盖整卡顶部)+ 标题文字青色光晕呼吸(text-shadow 双圈 3s 循环);入场动画:头部淡入下滑、卡片依次错峰上浮淡入(完成 0.26s/计划 0.4s/风险 0.54s)、按钮弹入(卡片入场动画 fadeDown/fadeUp/riseIn 的 fill-mode 必须用 backwards 严禁 both——both 使动画结束后最后一帧 transform:none 永久覆盖 hover 的 3D 偏转 transform,CSS 动画 applied 值优先级高于普通声明,hover 偏转会完全失效;cometFade 与按钮 pop 保持 both 不受此限);hover 微交互:卡片上浮+阴影加深+inset 发光增强、条目淡青底、序号徽章放大微旋(li:hover .idx transform:scale(1.18) rotate(-4deg)、球内数字放大 12→14px、数字必须用 <b> 包裹(.idx b{display:inline-block;transition:transform .2s ease})+ li:hover .idx b{transform:rotate(-6deg)} 数字在球内独立微旋;用户澄清 hover 变大的字体仅小球内数字,desc 正文保持 15px 不变不加斜体;销售 demo 版类名 .num:li:hover .num scale(1.22) rotate(-6deg)、数字 13→15px 同样 <b> 包裹 + rotate(-6deg))、按钮上浮/按压回缩;页脚 10px muted 文字(无分隔线、不加边框),署名固定 GENERATED BY SPECCORE TEAM · <目标日期>(日期动态,如 GENERATED BY SPECCORE TEAM · 20261022);三段分节列表,任务点保持中文顿号序号;当日节奏条(.day-strip 任务进度节内三时段横条:上午/下午/晚上按提交数分段高亮、.strip-item position:relative、hover 弹出 .strip-tip 浮层(bottom:calc(100% + 6px) 向上弹出避卡片 overflow:hidden 裁剪;position:absolute、translateX(-50%) scale(.85)→hover scale(1)、opacity 0→1、pointer-events:none、z-index:30、background:#0b2a4a、border:1px solid rgba(14,165,233,.4)、圆角、小字两行「时段 · N 次提交」+主题词));数字选择:用户口述的业务结果指标(响应时间/错误率/转化率/成功率等)优先写入,提交统计(提交数/文件数/行数)仅在无业务指标时兜底,两者都有时业务指标在前、提交统计后置或省略;数字凡有对比基准必带(环比/同比/目标完成度至少其一,如「+18%」「达目标 90%」),无基准来源时不作要求 - 节奏条下量化指标行(.day-metrics flex 居中 gap:22px、10.5px muted 字、数字用 .day-metrics b 青色等宽加粗(3 次提交 / 56 个文件 / +1.8k −285 行,删行数字 .minus 用 --rose 玫红);纯文字模式无 提交数据时省略此行);进度条终点圆点 + 流星扫描填充(.pbar-fill 必须 display:block + position:relative——行内 span 忽略 width/height 会变成 0×0,填充与圆点全部不可见;.pbar-fill::before 终点圆点 7px 径向渐变圆 right:0 + transform:translate(50%,-50%) 骑在填充右缘(done 青绿 radial-gradient(circle at 35% 30%,#a7f3d0,#2dd4bf 62%,#0d9488)、plan 橙 #fdba74/#f97316/#c2410c,box-shadow 同色光晕、z-index:2;.pbar-track/.pbar-fill 均不得加 overflow:hidden——圆点右半伸出填充 3.5px 骑边渲染);流星 = JS 注入 .pbar-track 内的 .pbar-sweep(absolute 左贴轨道、width:0 起点隐藏、height:16px、transform:translateY(-50%) 垂直居中、z-index:1、pointer-events:none)+ sweep 右缘 .pbar-comet 光体(absolute left:100% 贴 sweep 右缘随宽度移动,严禁 right:62%/right:100% 等右侧定位——彗星会停在轨道中段、进度 100% 时也到不了终点;子弹头形光核:20×11px 横向泪滴 border-radius:55% 100% 100% 55% / 85% 100% 100% 85%(右端全圆弧=前进弹头、左端 55%/85% 大圆角=后部饱满钝圆接尾不露尖(比 35%/60% 更钝,禁尖窄收尾),严禁 13×7 小椭圆方块感、严禁 20px 大圆球形态)background 三层:底层 linear-gradient(90deg,rgba(153,246,228,.3),rgba(224,254,255,.6) 55%,#fff) 铺底(形状内不得透底)+ 右前缘青蓝冷光 radial-gradient(ellipse 70% 85% at 74% 45%,rgba(125,211,252,.9),transparent) + 青白核 radial-gradient(circle 12px at 66% 50%,#fff,rgba(224,254,255,.95) 45%,rgba(153,246,228,.5) 75%,transparent)(circle 半径必须显式 12px——自动半径按最远角计、四角渐隐至透明会露出轨道深色背景成「黑三角」,显式半径让光核饱满),box-shadow 双圈柔光 0 0 5px 2px rgba(186,230,253,.75) + 0 0 12px 4px rgba(45,212,191,.3)——光晕总高控制在 2~2.5 倍条高以内,不用 drop-shadow;整体前大后收窄的扫帚流星:头部 20×11 大头 → ::after 彗尾 right:40%、84×12px 细长锥形拖尾 linear-gradient(90deg,transparent,rgba(153,246,228,.18) 26%,rgba(186,230,253,.55) 64%,rgba(255,255,255,.9)) + clip-path:polygon(4% 40%,16% 24%,100% 0,100% 100%,16% 76%,4% 60%)(左端收成 2.4px 高平口钝头、右端全高平接光核、16% 处起渐收——远窄近宽,禁矩形方块形、禁 1px 尖点)+ blur 1px + z-index:0——长度约 4 倍头宽;剥落粒子流(JS 为每颗 .pbar-comet 注入 30 个 span.cp,绝对定位在光核中后段出生):30 粒三带分布(上方飘散带 17 粒 by -6~-0.5 向上飘散 + 中部渗漏带 6 粒 by +0.5~+5.2 + 深蓝带 7 粒 by +5.5~+8 贴光核下缘)椭圆小块前大后小(3.2×2.2 → 1.2×0.9px,宽高不等 + rotate -12°~12° 不规则椭圆,禁用标准圆形、禁用 box-shadow 静态星屑——静态点没有剥落飘散的生命感),出生点从头部稍靠后(left 9~17px)开始,y 紧贴中心水平线(中线 ±2.5px,各粒角度基本一致不散乱),cpFlow 1.5~1.8s cubic-bezier(.2,.05,.55,1) infinite + 负延迟 -0.1~-1.5s 错峰:0%→10% 淡入渐现(渐渐出现)、10%→100% 沿水平线加速向后飘 translate3d(-45~-62px, dy, 0)(加速向后)、55% 后 opacity 渐隐 + scale(.16) 渐小(向尾部消失)、dy 三带取值:上方 -3.5~-7 上飘展开(用户反馈上方粒子少且飘散不够远,13→17 再加密、dy 再扩大,下方相对合适不增)、中部 +1.5~+3.5 向下渗漏、深蓝 +5~+7 向后甩出(深蓝带 cp-deep 深蓝渐变+深蓝光晕、dur 1.06~1.25s 更久停留),box-shadow 光晕 0%→55% 增强再减弱(每粒生命期一次明灭=呼吸发光,周期 1.5~1.8s 与主体 1.8s 呼吸非整数倍错开,禁止同频齐步闪);粒子 z-index:1 在彗尾之上(尾 z-index:0)、opacity:0 起步呼吸发光分层不同频:主体光核 1.8s 与彗尾 2.4s 周期呼吸(comet 双动画 cometFade + glowPulse 1.8s ease-in-out infinite:白晕+青晕光晕 0%↔50% 周期扩缩(50% 时白光晕为主 = 白色呼吸,扫过 1.1s 内可见一轮明暗);::after 挂 tailGlow 2.4s ease-in-out infinite:filter blur(1px) brightness(1) ↔ blur(1.5px) brightness(1.28) 亮度呼吸),粒子 1.5~1.8s 明灭与主体 1.8s 呼吸非整数倍错开(视觉错落不同频);opacity:0 常驻隐藏);.pbar-track.sheen-on 时 sweep transition:width 1.1s cubic-bezier(.3,.8,.4,1) 生长(comet 贴 sweep 右缘 left:100% 随宽度从左扫到右),comet 的 animation 严禁写在 .pbar-comet 基类(基类动画页面加载 t=0 即播、1.1s 后 both 定格 opacity:0,而扫动 setTimeout 1.5s 才开始——时序错位会让流星全程不可见);必须挂在 .pbar-track.sheen-on .pbar-comet 选择器上(cometFade 1.1s ease-out both, glowPulse 1.8s ease-in-out infinite 逗号并列双动画:cometFade 7% 淡入、86% 保持、100% 到终点消失、glowPulse 白晕呼吸循环;::after 彗尾另挂 tailGlow 2.4s ease-in-out infinite 亮度呼吸),靠 playSweep 内 remove/add sheen-on 类切换重启动画,与 dotPulse 同机制;扫动终点按各条目标进度 data-w:sheen 内 sweep inline width 终点 = data-w(done 条 100% 扫满轨道、有进度的 plan 条如 30% 即 30% 停在进度点不越界)——sweep 宽度过渡与 fill 宽度过渡同参数天然同步,comet 与彗尾/星屑无需任何反向补偿(scaleX 压缩方案会把彗尾一同拉长数倍,禁用);填充同步生长:入场 sheen(el,'wave') 给 fill 设 transition width 1.1s 同 easing + width 0→data-w,与流星同步——流星扫到哪、填充长到哪,流星到终点消失、留下各自进度,之后填充保持不再变化;圆点 .pbar-done/.pbar-plan .pbar-track.sheen-on .pbar-fill::before animation:dotPulse 1.1s(90% 处 filter:brightness(2) + 白光 drop-shadow 爆亮,done/plan 通用)流星到达终点时爆亮——dotPulse 选择器必须与 JS 加类位置一致:JS 把 sheen-on 加在 .pbar-track 上,严禁写 .pbar-fill.sheen-on::before(JS 从不在 fill 上加类,选择器永不命中、爆亮不触发);流星注入与入场波浪覆盖完成条 + 有进度的计划条(JS 遍历 .pbar-track:plan 且进度<=0 的条 return 跳过——0 进度的计划条不注入流星、不扫、保持静态),其余条 data-w 记录目标进度后 fill 归零;入场波浪:setTimeout 1500+i*420ms 逐条 sheen(el,'wave') 错峰(上→下必然可见);hover 重扫:li 上 mouseenter+pointerenter 双监听,sheen(el,'hover') 只 remove/add fill 与 track 的 sheen-on 类重放流星扫过(comet 再扫一遍,0 进度的 plan 条同样跳过),fill 宽度与颜色完全不重置(进度不再变化),sheen(el,src) 按来源独立节流(wave 1s / hover 300ms);重启动画 remove 类→sweep inline 归零 width:0(transition:none 无过渡)→void offsetWidth 强制回流→同步 add 类→sweep inline 目标 width=data-w(恢复 transition;双 RAF 在 headless 虚拟时间下不推进,不可用));液态玻璃(@supports((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))) 内 .header-card/.section 加 backdrop-filter:blur(16px) saturate(1.35) + background-color:rgba(11,30,55,.42),不支持的老浏览器走默认实心深蓝不白屏);CRT 扫描光带(.scanband position:fixed、left:0/right:0、height:150px、linear-gradient(180deg,transparent,rgba(0,240,255,.03) 50%,transparent)、animation:scanMove 11s linear infinite(top -22%→112%)、pointer-events:none、z-index:998,置于 scanlines 之下一层);卡片级 3D 微倾斜(严禁全页级 mousemove 倾斜——页面容器整页旋转会让所有卡片一起偏转,与「仅当前卡片响应」不符):每张卡片 hover 时仅该卡片随鼠标偏转,卡片 transform 写 perspective(900px) + rotateY(calc(var(--mx,0)*2.5deg)) rotateX(calc(var(--my,0)*-2.5deg))(±1.25° 极轻微),与 hover 上浮 translateY(-2px) 合并写同一条 transform(严禁拆两条相互覆盖);hover 态选择器带 tilt(header-card/overview/section 或 header-card/card),非 hover 卡片不倾斜;JS 对每张卡片监听 mousemove 计算卡内相对位置((clientX-rect.left)/rect.width*2-1 归一化 -1~1)只更新该卡 --mx/--my,mouseleave 归零回正,transition transform .18s 平滑;移动端无 mousemove 保持 0 不倾斜);禁止写 @media (prefers-reduced-motion: reduce) 禁用动画的媒体查询块(官方模板无此块,用户系统开启减少动画时该块会禁用全部动效,是竖线不动/发光不呼吸的根因);页面 JS 需支持 `?shot=content` 参数(检测 location.search 含 shot=content 时仅统一 body 四周 padding 40px(不隐藏任何元素),供整页内容区截图用、保证截图四周留白对称合适)
12
12
  - HTML 顶部带「一键复制」按钮:点击复制的是 txt 版纯文本全文(复制源必须用 txt 文件内容:含换行、无 #/##/> 等 Markdown 符号,严禁用 md 内容当复制源),按钮短暂变"已复制";JS 用 navigator.clipboard.writeText,失败回退隐藏 textarea + document.execCommand('copy')(兼容 file:// 打开)
13
13
  - 用户临时说"不落盘/别写文件"时(覆盖 DISK):只在对话输出,不写文件、不开浏览器;临时说"写到桌面/存到 X"(覆盖 DIR)、"只要 md/只出 html/只要内容区截图/只要截图/这次不截图"(覆盖 FORMATS)、"别开浏览器"(覆盖 OPEN_HTML)同理,均只对当次生效、不改配置
14
14
  - 同名目录处理:日期子目录已存在时直接复用(不重建、不清空),仅覆盖 FORMATS 清单内的同名文件(md/txt/html/content-png),目录内其它文件(时间戳另存的历史文件、full.png 等用户自放文件)一律保留不动、绝不删除或清空(该目录可能是用户此前自建、作其它用途的目录,我们只并列写入自己的专属命名文件,不与用户文件冲突混淆);落盘前查看目录内已有内容,若存在非本 skill 命名的其它文件(daily-report-/weekly-report- 前缀之外),对话中提示用户「该目录内已有其它文件,本次日报已与它们并列存放,未做任何改动」;同一日期重复生成默认直接覆盖原文件,用户说"保留之前的/另存/不覆盖"时,文件名追加时间戳(如 `daily-report-20261022-1530.html`)另存不覆盖
@@ -9,8 +9,10 @@
9
9
  | 量化指标 | 提交数·文件数·行数 | 拜访数·商机数·回款额 | 曝光·转化·GMV | 交付数·上线数 | 简历数·到面率·入职数 | 凭证数·回款·预算执行率 | 投放额·线索数·ROI | 工单量·解决率·满意度 | 里程碑达成数·任务完成数·变更数 | 会务场次·采购完成数·资产盘点数 | 合同审核数·案件进展·合规项数 | 页面稿数·规范组件数·走查问题数 |
10
10
  | 节奏条 | 提交时段节奏 | 拜访时段节奏 | 活动推进节奏 | 迭代推进节奏 | 面试安排节奏 | 结账对账节奏 | 投放推进节奏 | 工单处理节奏 | 里程碑推进节奏 | 会务采购节奏 | 合同案件节奏 | 设计交付节奏 |
11
11
  | 风险话术 | 阻塞点/技术债 | 竞争/预算审批 | 资源/渠道效果 | 需求变更/排期 | 用人缺口 | 资金/合规 | 渠道成本 | 舆情/高峰 | 范围蔓延/资源冲突 | 供应商延期/预算超支 | 合规风险/诉讼时效 | 需求反复/排期挤压 |
12
+ | 价值翻译 | 稳定性·效率·成本·体验 | 收入·客单价·转化·回款 | 曝光·线索·留存·ROI | 用户增长·留存·满意度 | 人效·到岗率·留存率 | 成本节约·资金效率·合规 | 曝光·线索·转化·品牌 | 满意度·处理时效·客诉率 | 准时率·交付质量·成本偏差 | 流程效率·成本·满意度 | 风险规避·合规·时效 | 转化·体验·一致性 |
12
13
 
13
- - 用户角色画像:顶部「默认配置」的 ROLE 定义用户默认角色与主要工作内容(当前:程序员,企业内技术开发,负责前端、后端方向);未提职业时按 ROLE 画像取词(当前等价研发词条:git 提交聚合 + 提交/版本术语 + 提交数/文件数/行数指标)
14
+ - 用户角色画像:顶部「默认配置」的 ROLE 定义用户默认角色与主要工作内容(当前:程序员,企业内技术开发,负责前端、后端方向);未提职业时按 ROLE 画像取词(当前等价研发词条:提交记录聚合 + 提交/版本术语 + 提交数/文件数/行数指标)
15
+ - 价值翻译(技术动作→业务结果):技术动作一律翻译为业务结果表述——研发翻向稳定性/效率/成本/体验(「重写 SQL 加索引」→「查询响应 3.2s→0.4s」),其它岗位按「价值翻译」行各自方向取义(销售→收入/转化、客服→满意度/时效等);提交统计(提交数/文件数/行数)仅为兜底指标,口述含业务结果时业务结果优先;仅含动作无结果时保留动作描述,并在对话中提示可补充结果指标
14
16
  - 触发:话术含职业词(销售/运营/产品/HR/财务/市场/客服/项目/PMO/行政/法务/设计等)→ 标题、工作单元术语、量化指标、节奏条主题、风险话术全部按该词典词条生成
15
17
  - 临时换角色:说「以 XX 的身份写日报」(如「以销售经理的身份写」)→ 当次按该角色词条生成,不改配置
16
18
  - 永久换角色:说「以后默认用 XX 角色 / 我的职业是 XX / 我的主要工作是 XX」→ 更新顶部 ROLE 配置(永久生效);词典没有的角色按用户描述新增词条
@@ -195,6 +195,10 @@ li:hover .idx{ transform:scale(1.18) rotate(-4deg); font-size:14px; }
195
195
  .meta{ font-size:12px; color:var(--muted); margin-top:5px; }
196
196
  .meta .qt{ color:#7fa8cc; }
197
197
  .meta b{ color:var(--cyan); font-weight:900; margin:0 2px; text-shadow:0 0 8px rgba(14,165,233,.5); }
198
+ .advice{ font-size:12px; color:var(--cyan); margin-top:6px; }
199
+ .advice b{ font-weight:900; }
200
+ .owner{ font-size:12px; color:#a78bfa; margin-top:4px; }
201
+ .owner b{ font-weight:900; }
198
202
  .pbar-track{ position:relative; margin-top:9px; height:5px; border-radius:999px; background:rgba(14,165,233,.12); }
199
203
  .pbar-fill{
200
204
  display:block; position:relative; height:100%; border-radius:999px; width:0;
@@ -230,7 +234,7 @@ li:hover .idx{ transform:scale(1.18) rotate(-4deg); font-size:14px; }
230
234
  background:
231
235
  linear-gradient(90deg,rgba(186,230,253,.7),rgba(224,254,255,.95) 30%,#fff 46%,rgba(244,255,255,1) 58%,rgba(224,254,255,.9) 72%,rgba(186,230,253,.65)),
232
236
  radial-gradient(circle 2px at 40% 50%,#fff,rgba(224,254,255,.92) 55%,rgba(125,211,252,.4) 85%,transparent);
233
- filter:drop-shadow(0 0 2px rgba(186,230,253,.7)) drop-shadow(0 0 5px rgba(45,212,191,.25));
237
+ filter:drop-shadow(0 0 1.5px rgba(255,255,255,.9)) drop-shadow(0 0 7px rgba(255,255,255,.5)) drop-shadow(0 0 14px rgba(224,254,255,.35)) drop-shadow(0 0 22px rgba(125,211,252,.2));
234
238
  }
235
239
 
236
240
  .pbar-comet::after{
@@ -271,11 +275,11 @@ li:hover .idx{ transform:scale(1.18) rotate(-4deg); font-size:14px; }
271
275
  animation:cometFade 1.1s ease-out both;
272
276
  }
273
277
  .pbar-track.sheen-on .pbar-comet::after{ animation:tailGlow 2.4s ease-in-out infinite; }
274
- .pbar-track.sheen-on .pbar-comet::before{ animation:glowPulse 2.4s ease-in-out infinite; }
278
+ .pbar-track.sheen-on .pbar-comet::before{ animation:glowPulse 1.8s ease-in-out infinite; }
275
279
  @keyframes cometFade{ 0%{opacity:0;} 7%{opacity:1;} 86%{opacity:1;} 100%{opacity:0;} }
276
280
  @keyframes glowPulse{
277
- 0%,100%{ filter:drop-shadow(0 0 2px rgba(186,230,253,.7)) drop-shadow(0 0 5px rgba(45,212,191,.25)); }
278
- 50%{ filter:drop-shadow(0 0 4px rgba(186,230,253,.95)) drop-shadow(0 0 8px rgba(45,212,191,.45)); }
281
+ 0%,100%{ filter:drop-shadow(0 0 1.5px rgba(255,255,255,.9)) drop-shadow(0 0 7px rgba(255,255,255,.5)) drop-shadow(0 0 14px rgba(224,254,255,.35)) drop-shadow(0 0 22px rgba(125,211,252,.2)); }
282
+ 50%{ filter:drop-shadow(0 0 3px rgba(255,255,255,1)) drop-shadow(0 0 9px rgba(255,255,255,.65)) drop-shadow(0 0 18px rgba(255,255,255,.35)) drop-shadow(0 0 28px rgba(224,254,255,.25)) drop-shadow(0 0 10px rgba(45,212,191,.35)); }
279
283
  }
280
284
  @keyframes tailGlow{
281
285
  0%,100%{ filter:blur(1px) brightness(1); }
@@ -506,16 +510,16 @@ var TXT = "今日日报 - 20261106\n\n生成时间:2026-11-06 17:30:39\n\nTL;D
506
510
  [ 6, 2.2, 4.0, 2.9, 6, -0.95, 0.96, -86, 2.2],
507
511
  [ 3, 3.6, 3.4, 2.4, 12, -0.10, 0.94, -82, 2.8],
508
512
  [ 7, 4.8, 2.8, 2.0, -5, -0.35, 0.92, -92, 3.2],
509
- [ 5, 5.6, 2.2, 1.6, 9, -0.50, 0.90, -94, 3.5],
513
+ [ 5, 5.2, 2.2, 1.6, 9, -0.50, 0.90, -94, 3.5],
510
514
  [ 8, 1.2, 2.0, 1.4, -7, -0.60, 0.92, -90, 1.5],
511
- // 深蓝带 7 粒(by +7~+9.5=光核下缘下 1~3.5px 贴缘出生,dy +5~+7 向后甩出下散展开,cp-deep 深蓝渐变+深蓝光晕,dur 1.06~1.25s 更久停留)
512
- [ 6, 7.0, 5.0, 3.6, -8, -0.15, 1.20, -90, 5.5],
513
- [ 3, 8.0, 4.4, 3.2, 6, -0.45, 1.25, -98, 6.2],
514
- [ 7, 9.0, 3.8, 2.7, 12, -0.70, 1.12, -94, 5.6],
515
- [ 4, 9.5, 3.3, 2.4, -5, -0.05, 1.18, -106, 6.8],
516
- [ 6, 7.8, 2.9, 2.1, 9, -0.25, 1.08, -102, 6.5],
517
- [ 3, 8.8, 2.5, 1.8, -10, -0.55, 1.10, -110, 6.8],
518
- [ 8, 7.4, 2.1, 1.5, 7, -0.80, 1.06, -112, 5.0]
515
+ // 深蓝带 7 粒(by +5.5~+8=光核下缘外 0.5~3px 贴缘出生(与上方贴缘距离一致),dy +5~+7 向后甩出下散展开,cp-deep 深蓝渐变+深蓝光晕,dur 1.06~1.25s 更久停留)
516
+ [ 6, 5.5, 5.0, 3.6, -8, -0.15, 1.20, -90, 5.5],
517
+ [ 3, 6.5, 4.4, 3.2, 6, -0.45, 1.25, -98, 6.2],
518
+ [ 7, 7.5, 3.8, 2.7, 12, -0.70, 1.12, -94, 5.6],
519
+ [ 4, 8.0, 3.3, 2.4, -5, -0.05, 1.18, -106, 6.8],
520
+ [ 6, 6.3, 2.9, 2.1, 9, -0.25, 1.08, -102, 6.5],
521
+ [ 3, 7.3, 2.5, 1.8, -10, -0.55, 1.10, -110, 6.8],
522
+ [ 8, 5.9, 2.1, 1.5, 7, -0.80, 1.06, -112, 5.0]
519
523
  ];
520
524
  document.querySelectorAll('.pbar-comet').forEach(function(comet){
521
525
  for (var i = 0; i < CP.length; i++){
@@ -531,7 +535,7 @@ var TXT = "今日日报 - 20261106\n\n生成时间:2026-11-06 17:30:39\n\nTL;D
531
535
  p.style.animationDuration = c[6] + 's';
532
536
  p.style.setProperty('--dx', c[7] + 'px');
533
537
  p.style.setProperty('--dy', c[8] + 'px');
534
- if (c[1] >= 7){
538
+ if (c[1] >= 5.5){
535
539
  p.className = 'cp cp-deep';
536
540
  p.style.background = 'linear-gradient(90deg, rgba(2,132,199,.4), rgba(56,189,248,.95) 45%, #e0f2fe 86%)';
537
541
  p.style.boxShadow = '0 0 6px 2.5px rgba(56,189,248,.9)';
@@ -11,17 +11,17 @@
11
11
  - 同一日期重复生成会直接覆盖原文件;说「保留之前的」→ 文件名追加时间戳另存不覆盖
12
12
  - 说「日报和周报都要」→ 日报、周报按各自流程分别生成,同日数据自动去重
13
13
  - 说「打开/查看今天的日报」→ 该报告文件已存在时直接打开不重新生成;不存在则按正常流程生成
14
- - 说「只算我的提交」→ 只聚合本人提交(git log 加 --author=<用户名>);默认仓库内全部提交都计入
14
+ - 开发类用户可说「只算我的提交」→ 只聚合本人提交;默认仓库内全部提交都计入
15
15
  - 说「只写 xxx 的日报 / 只聚合 xxx 仓库」→ 只收集指定仓库的提交,跳过其它仓库
16
16
 
17
17
  ## 口头追加任务
18
18
  - 说「补充一下:上午改了角标接口,下午跟测试联调」→ 自动按语义拆成多条任务,润色为规范格式并入「今日任务进度」
19
19
  - 拆分信号:时间词(上午/下午/晚上)、连接词(还有/另外/以及)、分号顿号列举、数字列举
20
20
  - 补充内容带分段词时按段并入:「明日计划:xxx」→ 明日计划段;「风险:xxx」→ 风险阻塞点段(说「风险暂无/无风险」→ 风险段写「暂无」);不带分段词默认并入「今日任务进度」
21
- - 与 git 提交聚合出的任务自动去重,同一件事只保留一条
21
+ - 与提交记录聚合出的任务自动去重,同一件事只保留一条
22
22
 
23
- ## 贴文字 / 发图片 / 给文件整理日报(无 git 提交也适用)
24
- - 直接贴一段文字说「整理成日报 / 把这段文字整理成日报」→ 以文字为主源生成,不依赖 git 提交(非开发岗位也可用);说「只整理这段文字 / 只按这段 / 不用 git」同样跳过 git 与会话上下文
23
+ ## 贴文字 / 发图片 / 给文件整理日报(没有提交记录也适用)
24
+ - 直接贴一段文字说「整理成日报 / 把这段文字整理成日报」→ 以文字为主源生成,不依赖提交记录(非开发岗位也可用);说「只整理这段文字 / 只按这段」同样跳过其它来源与会话上下文
25
25
  - 发图片(截图/照片等 jpg/png/webp)或给文件(md/txt/docx/pdf 等)说「整理成日报」→ 先用 Read 读取:图片按视觉理解提取图中文字信息,md/txt 直接读文本,docx/pdf 优先尝试 pandoc 转文本(无 pandoc 则请用户粘贴文字),再按纯文字模式整理
26
26
  - 图片模糊/内容读不清时:先把已提取的部分展示给用户确认或补充,不瞎编没读到的内容
27
27
  - 自动分段归类:文字里写「明天/接下来/计划…」→ 明日计划;「风险/阻塞/问题/卡住…」→ 风险阻塞点;其余 → 今日任务进度(用户已明确分段则按用户分段)
@@ -21,7 +21,7 @@ ROLE: 全栈开发工程师(企业内技术开发) # 用户默认职业角
21
21
  CONFIRM: never # 落盘前确认:never = 直接生成落盘不确认(默认);text = 纯文字整理模式先出效果确认后再落盘;always = 任何方式生成都先确认;临时说「先看看效果」当次先确认、说「不用确认」当次跳过
22
22
  ```
23
23
 
24
- > 临时口头要求(仅对当次生效,不修改上方配置):说「不落盘/别写文件」→ 当次 DISK=false;说「写到桌面/存到 ~/report(macOS)或 D:\report(Windows)」→ 当次改用该 DIR;说「只要 md / 只出 html / 只要内容区截图」→ 当次只落指定格式;说「这次不截图」→ 当次不生成内容区截图;说「只要截图/重新截个图」→ 当次只对现有 html 执行内容区截图(不重新收集 git、不重写 md/txt/html 内容文件);说「别开浏览器」→ 当次 OPEN_HTML=false;说「这次按 xxx 模板来」→ 当次临时换模板(不改配置);说「以后都用这个模板」→ 自动写入下方「📝 自定义模板」节并把 TEMPLATE 改为 custom(永久生效);说「先看看效果/先出效果再落盘」→ 当次先出效果确认后再落盘;说「不用确认/直接落盘」→ 当次跳过确认直接落盘。
24
+ > 临时口头要求(仅对当次生效,不修改上方配置):说「不落盘/别写文件」→ 当次 DISK=false;说「写到桌面/存到 ~/report(macOS)或 D:\report(Windows)」→ 当次改用该 DIR;说「只要 md / 只出 html / 只要内容区截图」→ 当次只落指定格式;说「这次不截图」→ 当次不生成内容区截图;说「只要截图/重新截个图」→ 当次只对现有 html 执行内容区截图(不重新收集数据、不重写 md/txt/html 内容文件);说「别开浏览器」→ 当次 OPEN_HTML=false;说「这次按 xxx 模板来」→ 当次临时换模板(不改配置);说「以后都用这个模板」→ 自动写入下方「📝 自定义模板」节并把 TEMPLATE 改为 custom(永久生效);说「先看看效果/先出效果再落盘」→ 当次先出效果确认后再落盘;说「不用确认/直接落盘」→ 当次跳过确认直接落盘。
25
25
 
26
26
  ## 📝 自定义模板(TEMPLATE: custom 时启用,用户可手改,适配各类岗位)
27
27
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: magic-deck
3
- description: 把内容做成 HTML 形态、PPT 体验的魔法幻灯(单文件离线打开、零外部依赖)。内置播放引擎(自动播放/循环/间隔可设/从头或当前播放)、键盘热键(翻页/直达/截图/复制/全屏)、五套内置模板(经典商务/极简留白/杂志画册/黑金发布/时间线叙事)+ 四套主题即点即换(整份或单页自由换肤)、页内连接与外部链接、逐页 PNG 截图(本页/选页批量,选页面板默认全选=一键导出全部页)与本页/选页批量文字复制(均不含任何操作元素)、全屏放映纯净模式(无关元素自动退场)。当用户请求把内容做成幻灯片/PPT/演示文稿、生成 HTML 幻灯、做分享页/汇报页,提到 magic-deck 或 /magic-deck,或询问其用法(怎么用/使用说明/能干什么)时使用。
3
+ description: 把内容做成 HTML 形态、PPT 体验的魔法幻灯(单文件离线打开、零外部依赖)。内置播放引擎(自动播放/循环/间隔可设/从头或当前播放)、键盘热键(翻页/直达/截图/复制/全屏)、五套内置模板(经典商务/极简留白/杂志画册/黑金发布/时间线叙事,放映时经「🎨 模板」面板随时切换——可应用到全部页/仅本页/勾选页,标题自动映射到模板固定位置)+ 四套主题即点即换(整份或单页自由换肤)、页内连接与外部链接、逐页 PNG 截图(本页/选页批量,选页面板默认全选=一键导出全部页)与本页/选页批量文字复制(均不含任何操作元素)、全屏放映纯净模式(无关元素自动退场)。当用户请求把内容做成幻灯片/PPT/演示文稿、生成 HTML 幻灯、做分享页/汇报页,提到 magic-deck 或 /magic-deck,或询问其用法(怎么用/使用说明/能干什么)时使用。
4
4
  allowed-tools: Bash, Read, Write
5
5
  disable-model-invocation: false
6
6
  ---
@@ -13,7 +13,7 @@ disable-model-invocation: false
13
13
 
14
14
  0. **读用户配置**(TEMPLATE/THEME/WIDTH/HEIGHT/SEC/FILENAME/DIR 等)→ 先 Read 同目录 `user-config.md`
15
15
  1. **收集内容**:解析用户提供的内容(文字/文件/结构化要点),确定页数与每页版式
16
- 2. **生成 HTML**(按 TEMPLATE 选版式骨架、四主题 CSS 变量、单页主题按钮、播放引擎、热键、截图/复制、全屏纯净模式)→ 先 Read `resources/reference.html` + `resources/deck-spec.md` 两份,以 reference.html 为骨架逐处替换内容
16
+ 2. **生成 HTML**(每页写语义结构——.s-head 标题 / .card 卡片 / .points 要点 / .bignum 数据,按 TEMPLATE 在对应页 slide 挂 data-template 声明默认版式;四主题 CSS 变量、单页主题按钮、模板面板、播放引擎、热键、截图/复制、全屏纯净模式)→ 先 Read `resources/reference.html` + `resources/deck-spec.md` 两份,以 reference.html 为骨架逐处替换内容
17
17
  3. **落盘与命名**:写 `<文件名>.html` 到 DIR 目录,自动打开浏览器供用户放映。命名三级优先:①用户口头指定文件名 → 用指定名;②未指定且 FILENAME=auto → 按本次内容主题+用途总结中文名(如「智能探针系统-产品介绍」,让用户日后能按名找回继续改);③FILENAME 写死固定名 → 用固定名。重名一律自动加日期后缀,绝不覆盖;落盘目录复用不清空、不改动目录内既有文件
18
18
  4. **使用咨询**(用户只问「怎么用」等用法、未要求生成)→ 输出纯文字使用指南(功能/热键/截图/复制/全屏/主题),不生成 HTML
19
19
 
@@ -24,7 +24,7 @@ disable-model-invocation: false
24
24
  ## 规则速览
25
25
 
26
26
  - 单文件 HTML 离线双击可打开:禁用 CDN/@import/外链 CSS/JS/图片/网络字体,字体用系统栈
27
- - 模板五套(版式骨架,生成时按 TEMPLATE/口头点名选定)与主题四套(配色,运行时整份或「仅本页」单页换肤)正交组合;`.slide` 自带 `background:var(--bg)` 使单页换肤整页变色
27
+ - 模板五套(版式骨架)与主题四套(配色)正交组合,均运行时即点即换:模板经「🎨 模板」面板应用(全部页/仅本页/勾选页),生成时按 TEMPLATE/口头点名在 slide 挂 data-template 声明默认版式;标题自动映射——timeline 取卡片标题做节点、keynote 取页标题做大观点、magazine 左文右图分栏,切回经典商务恢复原排版内容不丢;`.slide` 自带 `background:var(--bg)` 使单页换肤整页变色
28
28
  - 工具栏控件统一 flex 垂直居中:`.toolbar/.group` flex + align-items:center + gap;`.tbtn` inline-flex + gap:6px + line-height:1;checkbox 14×14 与文字 6px 间距,文字不贴控件、上下不偏斜
29
29
  - 页面 1280×720 舞台 + 按窗口等比缩放(--sc),窗口任意大小不变形
30
30
  - 结构顺序:背景装饰 → 顶部进度条 → 工具栏 → 页码 → 提示 → 左右箭头 → 舞台页组 → 说明弹层 → 播放引擎
@@ -10,6 +10,7 @@
10
10
  - **舞台 1280×720(16:9)**,按窗口等比缩放(--sc),窗口任意大小不变形
11
11
  - **截图与复制只含主体**:截图克隆当前 slide、复制取 slide innerText,绝不包含工具栏/页码/箭头/提示等操作元素
12
12
  - **全屏纯净**:`:root:fullscreen` 下所有操作元素与背景氛围层(.bg-glow/.bg-grid)全部隐藏、页面底色纯黑 `#000`,只留舞台主体(与 PPT 软件放映一致:幻灯按比例充满画面,比例不匹配处补黑边,绝无主题氛围边框/光斑/网格)
13
+ - **模板运行时切换**:模板(版式)与主题(配色)正交;模板经「🎨 模板」面板随时切换(全部页面/仅本页/勾选页),标题自动映射到模板固定位置,切回经典商务恢复原排版、内容一条不丢
13
14
  - 操作元素(toolbar/pageno/hint/nav/help-mask)全部 fixed 定位在舞台之外,永远不进 slide 内部
14
15
 
15
16
  ## 1. 骨架结构(body 顺序固定)
@@ -18,7 +19,8 @@
18
19
  <div class="bg-glow"></div> <!-- 背景光斑(两个径向渐变 + 底色) -->
19
20
  <div class="bg-grid"></div> <!-- 网格纹理(72px 格,径向 mask 渐隐) -->
20
21
  <div class="progress"><div class="fill" id="progFill"></div></div> <!-- 顶部 3px 渐变进度 -->
21
- <div class="toolbar"> <!-- 右上工具栏:主题组 + 播放组 + 工具组 -->
22
+ <div class="toolbar"> <!-- 右上工具栏:模板组 + 主题组 + 播放组 + 工具组 -->
23
+ <div class="group"><button class="tbtn" id="btnTemplate">🎨 模板</button></div>
22
24
  <div class="group"><button class="tbtn theme" data-theme="tech|biz|mono|warm">…×4
23
25
  <button class="tbtn" id="btnScope" title="仅本页/全部">⭮ 仅本页</button></div>
24
26
  <div class="group"><button class="tbtn" id="btnPlay">▶ 自动播放</button>
@@ -42,6 +44,7 @@
42
44
  …(每页一个 section.slide,第一页带 active)
43
45
  </div></main>
44
46
  <div class="help-mask" id="helpMask">…说明弹层…</div>
47
+ <div class="help-mask" id="tplMask">…模板应用面板(模板卡 + 应用范围 + 页清单)…</div>
45
48
  <div class="help-mask" id="copyMask">…选页复制面板…</div>
46
49
  <div class="help-mask" id="shotMask">…选页截图面板…</div>
47
50
  <script>播放引擎(见 §6)</script>
@@ -88,39 +91,43 @@
88
91
  - 单页主题的 slide 上保留 data-theme 属性持久生效;截图(§7)克隆 slide 时该属性自然入图,无需特殊处理
89
92
  - 生成时按 user-config 的 THEME 给 documentElement 设默认主题,单页差异化主题由用户放映时点选
90
93
 
91
- ## 2.2 模板库(五套版式骨架,与主题正交:模板管版式结构、主题管配色)
94
+ ## 2.2 模板库(五套版式骨架,运行时即点即换,与主题正交:模板管版式结构、主题管配色)
92
95
 
93
- 生成时按 user-config 的 `TEMPLATE` 选一套版式骨架;用户口头点名模板名(如「用杂志风模板」)当次生效不改配置。五套模板共用 §4 全部组件与 CSS 变量,只换结构:
96
+ 五套模板随放映随时切换——工具栏「🎨 模板」打开模板应用面板,选模板卡 + 应用范围(全部页面/仅本页/选择页面),点应用即生效。**标题自动映射**:模板的固定标题位自动吃进页面里对应的标题(语义节点)。
94
97
 
95
- ### T1 classic 经典商务(默认,现骨架不动)
98
+ ### 语义节点约定(标题自动映射的根基)
99
+
100
+ 每页 slide 内容必须按语义约定书写(classic 骨架即语义态):
101
+ - 页标题:`.s-head h2`(色条标题头)或 `.s-title`(无头大标题);`.tag` 英文角标
102
+ - 卡片:`.grid2/.grid3/.grid4 > .card`,卡片内 `.card h4`(标题)+ `.card h4 .en`(英文小标签)+ `.card p`(正文)
103
+ - 要点:`ul.points > li`;数据:`.bignum > b`(数字)+ `span`(标签);目录:`.toc > .toc-item`
104
+ - 封面:`.cover`(logo/s-title/sub/sign);结束页:`.endpage`
105
+
106
+ 模板应用机制:每页首次应用模板时存档原始 innerHTML(`_origin`),应用 = 恢复语义态 → slide 挂 `data-template` 属性 → 按需执行结构包装器。切回 classic 即恢复原始排版,内容一条不丢。生成侧写语义结构(不再写 `.t-minimal` 等包裹 div),每页 slide 挂 `data-template` 声明默认版式。
107
+
108
+ ### T1 classic 经典商务(默认,语义态本身,无前缀规则)
96
109
  - 封面:logo 块 76px + 64px 大标题 + sub + 底部署名
97
110
  - 内容页:`.s-head` 左色条标题 + `.grid2/.grid3` 卡片栅格;数据页:`.bignum` 大数字卡栅格;目录:`.toc` 条目列表
98
111
 
99
- ### T2 minimal 极简留白
100
- - 骨架:`<div class="t-minimal">` 包整页内容;封面:无 logo 块,76px 大标题居中 + 细线分隔 + sub + 署名右上角
101
- - 内容页:标题 44px 居中无色条 + 要点列表 `.points`(每条 28px/1.9 行距,窄栏 640px 居中);禁止 .card 描边与 .panel 面板,只用文字与留白
102
- - 数据页:`.bignum` 大数字 88px 居中 + 标签
103
- - CSS:`.t-minimal .s-title{font-size:44px;text-align:center}`;`.t-minimal .points{margin:0 auto;max-width:640px}`;`.t-minimal .points li{padding:12px 0;border-bottom:1px solid var(--border)}`;`.t-minimal .bignum b{font-size:88px}`
112
+ ### T2 minimal 极简留白(纯 CSS,无包装器)
113
+ - `.s-head` 去色条、标题 44px 居中渐变;`.tag` 隐藏;卡片去边框去背景变纯文字;`.bignum` 数字放大 88px;封面隐藏 logo 块整体居中
114
+ - CSS 前缀:`[data-template="minimal"] .s-head::before{display:none}`;`[data-template="minimal"] .s-head h2{font-size:44px;text-align:center;…渐变}`;`[data-template="minimal"] .card{background:transparent;border:none}`;`[data-template="minimal"] .bignum b{font-size:88px}`
104
115
 
105
- ### T3 magazine 杂志画册
106
- - 骨架:`<div class="t-magazine">`;封面:超大标题 96px 跨版左对齐 + 右上 .tag 期号 + 底部双栏署名行
107
- - 内容页:左右分栏 `.m-split`(grid 46% 54%):左文(标题 36px + 段落)+ 右图位 `.m-figure`(高 380px 圆角 18 渐变块 var(--accent) 系 + 内嵌 .chip 标注)
108
- - 数据页:横向大数字带 `.m-strip`(flex 三项,每项 64px 数字 + 标签,项间 1px var(--border) 分隔)
109
- - CSS:`.t-magazine .s-title{font-size:96px;line-height:1.05}`;`.m-split{display:grid;grid-template-columns:46% 54%;gap:56px;align-items:center}`;`.m-figure{height:380px;border-radius:18px;background:linear-gradient(135deg,var(--accent),var(--accent2));opacity:.85}`;`.m-strip{display:flex;justify-content:space-between}`;`.m-strip>div{flex:1;text-align:center;border-left:1px solid var(--border)}`
116
+ ### T3 magazine 杂志画册(包装器 wrapMagazine 生成分栏)
117
+ - 左列:h3=`.s-head h2` 页标题、p=首张卡片正文;右列 `.m-figure` 高 380px 圆角 18 渐变图位 + 卡片标题转 chip 标注;≥2 个 `.bignum` 自动转横向 `.m-strip` 大数字带
118
+ - 封面标题放大 96px;卡片圆角加大
119
+ - CSS 前缀:`[data-template="magazine"] …` + `.m-split/.m-figure/.m-strip`
110
120
 
111
- ### T4 keynote 黑金发布
112
- - 骨架:`<div class="t-keynote">`;封面:巨号 112px 标题居中 + 副题 24px + 底部小字日期署名
113
- - 内容页:每页只放一个核心观点——`.k-big` 64px 加粗大字居中 + `.k-sub` 22px muted 一句解释 + 底部细进度横线;禁止栅格卡片堆料
114
- - 数据页:单个 `.bignum` 160px 巨型数字居中 + 标签 + 环形进度装饰 `.k-ring`(conic-gradient 圆环 120px,数字在环内)
115
- - CSS:`.t-keynote .s-title{font-size:112px}`;`.k-big{font-size:64px;font-weight:900;text-align:center;margin:auto}`;`.k-sub{font-size:22px;color:var(--muted);text-align:center}`;`.k-ring{width:120px;height:120px;border-radius:50%;background:conic-gradient(var(--accent) 0 72%,var(--border) 72% 100%);display:flex;align-items:center;justify-content:center}`
121
+ ### T4 keynote 黑金发布(包装器 wrapKeynote 生成单点大字)
122
+ - `.k-big`=页标题(`.s-head h2`)大观点 64px 居中、`.k-sub`=首张卡片正文一句解释、`.k-bar` 细进度线、`.k-ring`=第一个 `.bignum` 数字环形进度 120px、其余卡片标题收成 `.k-note` 小字行
123
+ - 封面/结束页标题 112px/96px 居中
124
+ - CSS 前缀:`[data-template="keynote"] …` + `.k-big/.k-sub/.k-bar/.k-ring/.k-note`
116
125
 
117
- ### T5 timeline 时间线叙事
118
- - 骨架:`<div class="t-timeline">`;封面/结束页同 classic
119
- - 内容页:纵向时间线 `.tl`(左侧 3px var(--accent) 竖线 + 节点圆点 14px + 每条 .tl-item 卡片:时间 .tl-time 24px 加粗 + 标题 + 描述)
120
- - 数据页:时间线节点上挂 .bignum 小数字
121
- - CSS:`.tl{position:relative;padding-left:32px}`;`.tl::before{content:'';position:absolute;left:6px;top:8px;bottom:8px;width:3px;background:var(--accent)}`;`.tl-item{position:relative;padding:18px 0 18px 24px}`;`.tl-item::before{content:'';position:absolute;left:-32px;top:24px;width:14px;height:14px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--tag-bg)}`
126
+ ### T5 timeline 时间线叙事(包装器 wrapTimeline 生成时间线)
127
+ - `.card` 组转 `.tl` 竖线时间轴——`.tl-time`=卡内 `.en` 小标签(时间)、节点标题=卡片标题、正文=卡片 p
128
+ - CSS:`.tl` 左侧 3px var(--accent) 竖线 + `.tl-item` 节点圆点 14px
122
129
 
123
- 模板选择仅在生成时定版式(user-config TEMPLATE 或口头点名),工具栏不提供运行时模板切换;运行时切换的是主题(全局/单页)。
130
+ 模板不再只限生成时定版式:user-config 的 `TEMPLATE` 是生成默认(AI 每页写语义结构 + 对应 slide 挂 data-template),用户放映时随时在模板面板切换(全部/仅本页/勾选页);`?tpl=xxx` URL 参数全局应用(headless 截图用)。
124
131
 
125
132
  ## 3. 舞台与切换
126
133
 
@@ -162,6 +169,7 @@
162
169
  - `.hint`:底部居中 11px 键位提示
163
170
  - `.help-mask`:全屏遮罩(open 类显示);`.help-panel` 内 kbd 键帽表格列全部热键 + `.help-note` 说明截图/复制只含主体、全屏自动隐藏操作元素、?shot 全量截图用法
164
171
  - `#copyMask`:选页复制面板;`#shotMask`:选页截图面板——两面板结构同款,均复用 help-mask 遮罩类(全屏自动隐藏);`.copy-panel` 430px 宽纵向 flex(头部标题+全选 / 中部 `.cp-list` 页清单滚动区 / 底部取消+执行 / 末尾 .help-note 小字提示);`.cp-item` 行 = checkbox + 页码(accent 加粗)+ 首行预览(muted 单行省略),hover 用 --tag-bg;`.cp-foot .tbtn.primary` 主按钮 accent 底;勾选项截图面板用 `.sp-check`、复制面板用 `.cp-check`,各面板容器内自查询互不干扰
172
+ - `#tplMask`:模板应用面板——`.tpl-panel` 520px 宽纵向 flex(头部标题+「模板只改版式」提示 / 中部 `.tpl-cards` 2 列模板卡(icon 渐变块 + 名 + 描述,当前模板 .on 高亮,点击选中)/ `.tpl-scope` 范围 radio 胶囊(全部页面/仅本页/选择页面,选「选择页面」展开 `.cp-list` 页清单勾选,label.sel 高亮当前)/ 底部取消 + 应用模板(N 页)主按钮 / 末尾 .help-note 说明标题自动映射与切回 classic 恢复);与选页复制/截图面板互斥打开;Esc/点遮罩/取消关闭
165
173
 
166
174
  ## 6. 播放引擎 JS(核心,逐条照做)
167
175
 
@@ -188,6 +196,8 @@ function prev(){ if (cur > 0) go(cur - 1); else if (chkLoop.checked) go(N - 1);
188
196
  - P:播放/暂停;S:截图本页;C:复制本页;F:全屏;?:说明弹层;Esc:关弹层 + 退全屏
189
197
  - **全屏**:`toggleFull()` = fullscreenElement 存在则 exitFullscreen,否则 document.documentElement.requestFullscreen
190
198
  - **主题作用域**:btnScope 未 .on 时主题点击 → `documentElement.setAttribute('data-theme', name)` + 遍历 slides 移除所有 slide 级 data-theme;btnScope .on 时 → `slides[cur].setAttribute('data-theme', name)`(仅当前页变色);`?theme=biz` 参数走全局;工具栏色点 .on 态按全局主题显示
199
+ - **模板应用**:TPLS 五套元信息(id/name/icon/描述);applyTpl(slide, tpl) = ensureOrigin 存档首次 innerHTML → 恢复语义态 → 挂 data-template(classic 则移除属性)→ 按需 wrapTimeline/wrapKeynote/wrapMagazine(封面/结束页/目录页 isSpecialPage 保护不包装);applyScope(tpl, scope, selected) 按范围应用返回页数;初始化时每页 data-template 声明自动跑 applyTpl 生效;`?tpl=xxx` 参数全局应用(只认 TPLS 内 id)
200
+ - **标题自动映射**:包装器从语义节点取内容重建模板结构——timeline 节点标题=卡片标题、keynote 大观点=页标题、magazine 分栏标题=页标题;内容一条不丢
191
201
  - **页内连接**:deck 上事件委托,`closest('[data-goto]')` 跳页;目录条目/任意元素都可用
192
202
  - **外部链接**:任意 `<a href="https://…">` 正常打开,不拦截
193
203
  - **hash 定位**:`#/N` 定位第 N 页,hashchange 监听;**初始跳页用 jumped 标记**——`var jumped = false; if (sm){ go(parseInt(sm[1],10)-1); jumped = true; } … 最后 if (!jumped) go(0);`(init 末尾无条件 go(0) 会覆盖 ?shot 跳页,必须跳过)
@@ -203,6 +213,7 @@ function prev(){ if (cur > 0) go(cur - 1); else if (chkLoop.checked) go(N - 1);
203
213
  3. `svg(1280×720 viewBox) + foreignObject(1280×720)` 装 wrap,`new XMLSerializer().serializeToString(svg)` → `data:image/svg+xml;charset=utf-8,` + encodeURIComponent 赋给 `new Image()`
204
214
  4. onload 里 `canvas 2560×1440`(2 倍清晰度)drawImage 后 `a.download = 'slide-页码-主题.png'` 点击下载并 `cb()` 接力;onerror 走 `cb(err)` 同样接力不断链;单页成功按钮变「✓ 已保存」1.5s;onerror 变「✗ 失败」
205
215
  - **克隆只取 slide 本体**——工具栏/页码/箭头/提示在 slide 之外,天然不入图;slide 内也不得放任何操作元素
216
+ - slide 级 `data-template` 属性随克隆自然入图(CSS 前缀选择器在收集的 style 文本中生效),模板包装后的 DOM 结构即截图内容,无需特殊处理
206
217
  - **选页截图**:`btnShotMulti` 打开 `#shotMask` 面板——`openShotPanel` 按页生成清单(checkbox 默认全选 + 页码 + 首行文字预览);`spAll` 全选/清空联动、勾选变化实时更新主按钮「截图所选(N 页)」;`shotSelectedPages` 收集选中页**串行**逐张 `renderShot(idx[k], step)`(上一张 onload 后才起下一张,避免并发下载乱序与浏览器吞下载),进度文案「已保存 k/N 页…」,全部完成按钮变「✓ 已保存 N 页」1.5s 并自动关面板;面板底部 .help-note 注明浏览器首次会询问「下载多个文件」许可;与选页复制面板互斥打开;Esc/点遮罩/取消关闭
207
218
 
208
219
  ## 8. 全屏放映纯净模式(PPT 放映规范:黑底 + 幻灯充满画面)