@wdyy/skills 0.1.19 → 0.1.20

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.
@@ -10,11 +10,6 @@
10
10
  "description": "为无 CI/CD 的前后端项目生成并验证跨宿主机统一 Docker 交付:在 Linux、macOS Docker Desktop 或 Windows Docker Desktop + WSL2/Linux 容器模式中,使用本地已有基础镜像构建单一 linux/amd64 或 linux/arm64 双镜像包,支持 macOS/arm64 以仿真运行 amd64 镜像,并以固定端口、容器名、重启策略和 CST(UTC+8)时间整栈运行。Use when 规划、实现、审查或执行跨构建机平台的人工 Docker 生产交付时。",
11
11
  "files": ["SKILL.md", "agents/openai.yaml", "reference/docker-delivery-rules.md", "scripts/generate-deployment-files.mjs", "scripts/generate-deployment-files.test.mjs", "scripts/validate-deployment-package.mjs", "scripts/validate-deployment-package.test.mjs", "templates/backend.Dockerfile.template", "templates/frontend.Dockerfile.template", "templates/frontend-container.conf.template", "templates/env.example.template", "templates/deploy.sh.template", "templates/docker-compose.yml", "templates/dockerignore.template"]
12
12
  },
13
- {
14
- "name": "wdyy-api-standard",
15
- "description": "根据“获取XX数据”“使用XX接口”“使用指定查询名称”等具体需求,定位已登记的接口 reference;对于 HIS SQL 查询,从远程查询目录按 name 精确匹配,并按已确认的接口契约将调用方式写入程序。Use when 需要查询或实现一个已登记接口或 HIS SQL 查询的数据调用时。",
16
- "files": ["SKILL.md", "agents/openai.yaml", "reference/api-demo.md", "reference/api-his-sql.md", "reference/api-sms.md", "reference/api-sso.md", "scripts/ensure-sso-env-example.mjs", "scripts/ensure-sso-env-example.test.mjs"]
17
- },
18
13
  {
19
14
  "name": "wdyy-bug-record",
20
15
  "description": "手动汇总当前任务中已解决的 BUG、漏洞和其他非需求问题,并按固定模板追加写入 docs/bug_record.md。",
@@ -24,6 +19,11 @@
24
19
  "name": "wdyy-logging-standard",
25
20
  "description": "为 NestJS 和 Vue 项目实现仅写入项目根目录 ./logs 的结构化 JSON 日志、前端异常上报、traceId 传递、完整原始入参与 2MB 文件轮转。Use when 编写日志、错误处理、接口日志或审查生产可观测性时。",
26
21
  "files": ["SKILL.md", "agents/openai.yaml", "reference/logging-rules.md", "scripts/validate-log-entry.mjs", "scripts/validate-log-entry.test.mjs", "templates/frontend-error-report.template.ts", "templates/logger.template.ts"]
22
+ },
23
+ {
24
+ "name": "wdyy-ui",
25
+ "description": "统一医院信息系统前端页面的布局、清新生命绿配色、医院 Logo、常用组件和响应式行为。Use when 新建、改造或审查患者管理、药事管理、医生工作站及相近 HIS 页面时;不负责定义业务流程、接口或数据模型。",
26
+ "files": ["SKILL.md", "agents/openai.yaml", "references/ui-standard.md", "assets/template/common-business.html", "assets/template/pharmacy-management.html", "assets/template/clinical-workstation.html", "assets/template/styles.css", "assets/template/logo.png"]
27
27
  }
28
28
  ]
29
29
  }
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: wdyy-deployment-standard
3
3
  description: 为无 CI/CD 的前后端项目生成并验证跨宿主机统一 Docker 交付:在 Linux、macOS Docker Desktop 或 Windows Docker Desktop + WSL2/Linux 容器模式中,使用本地已有基础镜像构建单一 linux/amd64 或 linux/arm64 双镜像包,支持 macOS/arm64 以仿真运行 amd64 镜像,并以固定端口、容器名、重启策略和 CST(UTC+8)时间整栈运行。Use when 规划、实现、审查或执行跨构建机平台的人工 Docker 生产交付时。
4
+ disable-model-invocation: true
4
5
  ---
5
6
 
6
7
  # 统一 Docker 交付规范
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: wdyy-ui
3
+ description: 统一医院信息系统前端页面的布局、清新生命绿配色、医院 Logo、常用组件和响应式行为。Use when 新建、改造或审查患者管理、药事管理、医生工作站及相近 HIS 页面时;不负责定义业务流程、接口或数据模型。
4
+ ---
5
+
6
+ # 医院信息系统 UI 规范
7
+
8
+ ## 目标
9
+
10
+ 让不同医院信息系统页面保持一致的品牌、视觉层级和操作体验,同时保留目标项目既有业务逻辑。
11
+
12
+ ## 使用方式
13
+
14
+ 1. 先检查目标项目的框架、现有公共样式、页面结构和仓库约束,不假定可以覆盖既有设计。
15
+ 2. 阅读 [UI 设计规范](references/ui-standard.md)。
16
+ 3. 按页面职责选择一个静态模板,只读取所选模板及其共享资源:
17
+ - 患者建档、挂号、结算等通用业务:`assets/template/common-business.html`
18
+ - 科室、患者和药品明细联动:`assets/template/pharmacy-management.html`
19
+ - 患者队列、患者摘要和临床工作区:`assets/template/clinical-workstation.html`
20
+ 4. 将 `assets/template/styles.css` 作为设计基线,将 `assets/template/logo.png` 原样复制到目标项目的公共资源目录;如目标项目已有等价公共样式,则按 token 和组件逐项合并,避免重复样式入口。
21
+ 5. 只迁移布局骨架、样式类和 Logo。业务文案、字段、权限、路由、接口和状态必须来自目标项目需求,不复制模板示例内容充当真实业务实现。
22
+ 6. 修改前说明目标文件、布局选择和影响范围,并遵循目标仓库的确认要求;本 Skill 不构成修改业务代码或外部系统的额外授权。
23
+
24
+ ## 必须保持的设计契约
25
+
26
+ - 使用“清新生命绿”token;不得把侧边栏色 `#214F2C` 引入当前无侧边栏的顶栏或页面。
27
+ - 顶栏使用白色表面层,Logo 为 42×42 像素,显示“数智医院 HIS”和当前系统名称。
28
+ - 桌面端导航紧跟 Logo 区域左对齐,间距 16px;链接文字必须垂直居中。
29
+ - 主操作使用主色,成功、警告、危险和信息色保持固定语义;不能只靠颜色表达状态。
30
+ - 主要业务内容使用白色卡片、浅色页面背景、清晰边框和低强度阴影。
31
+ - 980px 以下顶栏改为纵向布局,内容网格改为单列;不得产生页面级横向滚动。
32
+ - 保留键盘焦点可见性、表单标签、导航和标签页的可访问名称。
33
+
34
+ ## 适配边界
35
+
36
+ - 可以根据真实字段数量调整网格列数、卡片顺序和表格列,但不得随意更换品牌色、Logo、顶栏结构或状态色语义。
37
+ - 可以复用目标项目现有字体;没有明确字体规范时使用模板的系统中文字体栈。
38
+ - 不为“更丰富”而新增渐变、大面积高饱和背景、装饰动画或未登记颜色。
39
+ - 不用静态模板替换已经工作的业务逻辑,不删除事件处理、校验、权限或数据请求。
40
+
41
+ ## 验证
42
+
43
+ - [ ] Logo 文件加载成功且三个页面使用同一资源。
44
+ - [ ] 核心 token、状态色和顶栏颜色与规范一致,目标样式中不存在 `#214F2C`。
45
+ - [ ] 顶栏导航桌面端左对齐,链接文字垂直居中。
46
+ - [ ] 主要表单、列表、表格、按钮、空状态和消息状态具备一致样式。
47
+ - [ ] 桌面视口及 390px 窄屏下无页面级横向溢出。
48
+ - [ ] 浏览器控制台无样式资源、Logo 资源或脚本错误。
49
+ - [ ] 业务流程和数据行为未因 UI 适配发生非需求变更。
50
+
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "wdyy-ui"
3
+ short_description: "统一医院信息系统的布局、配色、Logo 与响应式交互规范"
4
+ brand_color: "#2B8A3E"
5
+ icon_small: "./assets/template/logo.png"
6
+ icon_large: "./assets/template/logo.png"
7
+ default_prompt: "Use $wdyy-ui to create or align a hospital information system page with the standard UI templates."
@@ -0,0 +1,66 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>医生工作站 UI 模板</title>
7
+ <link rel="icon" type="image/png" href="logo.png">
8
+ <link rel="stylesheet" href="styles.css">
9
+ </head>
10
+ <body>
11
+ <div class="app-shell">
12
+ <header class="topbar">
13
+ <div class="brand">
14
+ <img class="brand-logo" src="logo.png" alt="数智医院 Logo">
15
+ <div class="brand-copy"><h1>数智医院 HIS</h1><span>医生工作站</span></div>
16
+ </div>
17
+ <nav class="nav-actions" aria-label="系统导航">
18
+ <select aria-label="切换系统"><option>医生工作站</option><option>患者管理系统</option><option>药事管理系统</option></select>
19
+ <a href="#">主页</a><button type="button">菜单栏 1</button><button type="button">菜单栏 2</button><button type="button">菜单栏 3</button>
20
+ </nav>
21
+ </header>
22
+
23
+ <main class="page">
24
+ <section class="patient-header" aria-label="当前患者信息">
25
+ <div class="info-item"><span>姓名</span><strong>示例患者</strong></div>
26
+ <div class="info-item"><span>患者 ID</span><strong>P20260824001</strong></div>
27
+ <div class="info-item"><span>就诊时间</span><strong>2026-08-24 09:30</strong></div>
28
+ <div class="info-item"><span>患者类型</span><strong>医保</strong></div>
29
+ <div class="info-item"><span>就诊天数</span><strong>1 天</strong></div>
30
+ <div class="info-item"><span>年龄</span><strong>45 岁</strong></div>
31
+ </section>
32
+
33
+ <div class="layout-grid">
34
+ <aside class="panel">
35
+ <div class="panel-header"><h2>患者列表</h2></div>
36
+ <div class="panel-body">
37
+ <div class="search-row"><input placeholder="姓名 / 患者 ID / 身份证 / 手机号" aria-label="搜索患者"><button class="btn" type="button">搜索</button></div>
38
+ <div class="list" style="margin-top:16px">
39
+ <button class="list-button active" type="button"><strong class="patient-queue-line">01床|示例患者|P20260824001|2026-08-24</strong></button>
40
+ <button class="list-button" type="button"><strong class="patient-queue-line">02床|示例患者|P20260824002|2026-08-24</strong></button>
41
+ </div>
42
+ </div>
43
+ </aside>
44
+
45
+ <section class="section">
46
+ <div class="tabs" role="tablist" aria-label="医生工作站功能">
47
+ <button class="tab-button active" type="button">医嘱列表</button>
48
+ <button class="tab-button" type="button">新增医嘱</button>
49
+ <button class="tab-button" type="button">病历</button>
50
+ <button class="tab-button" type="button">诊断</button>
51
+ <button class="tab-button" type="button">检验结果</button>
52
+ <button class="tab-button" type="button">检查结果</button>
53
+ <button class="tab-button" type="button">费用明细</button>
54
+ </div>
55
+ <div style="overflow:auto">
56
+ <table class="data-table">
57
+ <thead><tr><th>医嘱类型</th><th>医嘱名称</th><th>开嘱时间</th><th>开嘱人</th><th>状态</th><th>开单科室</th><th>接收科室</th><th>医嘱 ID</th></tr></thead>
58
+ <tbody><tr><td>药品</td><td>示例医嘱</td><td>2026-08-24 09:40</td><td>示例医生</td><td><span class="status success">已确认</span></td><td>内科门诊</td><td>门诊药房</td><td>O001</td></tr></tbody>
59
+ </table>
60
+ </div>
61
+ </section>
62
+ </div>
63
+ </main>
64
+ </div>
65
+ </body>
66
+ </html>
@@ -0,0 +1,64 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>患者管理系统 UI 模板</title>
7
+ <link rel="icon" type="image/png" href="logo.png">
8
+ <link rel="stylesheet" href="styles.css">
9
+ </head>
10
+ <body>
11
+ <div class="app-shell">
12
+ <header class="topbar">
13
+ <div class="brand">
14
+ <img class="brand-logo" src="logo.png" alt="数智医院 Logo">
15
+ <div class="brand-copy"><h1>数智医院 HIS</h1><span>患者管理系统</span></div>
16
+ </div>
17
+ <nav class="nav-actions" aria-label="系统导航">
18
+ <select aria-label="切换系统"><option>患者管理系统</option><option>医生工作站</option><option>药事管理系统</option></select>
19
+ <a href="#">主页</a><button type="button">菜单栏 1</button><button type="button">菜单栏 2</button><button type="button">菜单栏 3</button>
20
+ </nav>
21
+ </header>
22
+
23
+ <main class="page">
24
+ <div class="summary-strip">
25
+ <div class="metric"><strong>128</strong><span>患者数</span></div>
26
+ <div class="metric"><strong>36</strong><span>今日就诊</span></div>
27
+ <div class="metric"><strong>12</strong><span>待缴费明细</span></div>
28
+ <div class="metric"><strong>8</strong><span>待发药明细</span></div>
29
+ </div>
30
+
31
+ <div class="tabs" role="tablist" aria-label="患者管理功能">
32
+ <button class="tab-button active" type="button">患者建档</button>
33
+ <button class="tab-button" type="button">挂号</button>
34
+ <button class="tab-button" type="button">门诊结算</button>
35
+ <button class="tab-button" type="button">结算明细</button>
36
+ </div>
37
+
38
+ <section class="section">
39
+ <div class="section-header"><div><h2>患者建档</h2><div class="muted">录入患者基本信息</div></div></div>
40
+ <form class="form-grid">
41
+ <div class="field"><label for="patientName">姓名</label><input id="patientName"></div>
42
+ <div class="field"><label for="idCard">身份证号</label><input id="idCard"></div>
43
+ <div class="field"><label for="birthDate">出生日期</label><input id="birthDate" type="date"></div>
44
+ <div class="field"><label for="phone">手机号</label><input id="phone"></div>
45
+ <div class="field"><label for="patientType">患者类型</label><select id="patientType"><option>医保</option><option>自费</option></select></div>
46
+ <div class="actions"><button class="btn primary" type="button">保存患者信息</button></div>
47
+ </form>
48
+ <div class="actions"><div class="message">等待录入患者信息</div></div>
49
+ </section>
50
+
51
+ <section class="section" style="margin-top:16px">
52
+ <div class="section-header"><div><h2>最近就诊</h2><div class="muted">示例表格布局</div></div></div>
53
+ <div style="overflow:auto">
54
+ <table class="data-table">
55
+ <thead><tr><th>患者</th><th>科室</th><th>医生</th><th>就诊时间</th><th>状态</th></tr></thead>
56
+ <tbody><tr><td>示例患者</td><td>内科门诊</td><td>示例医生</td><td>2026-08-24 09:30</td><td><span class="status success">已完成</span></td></tr></tbody>
57
+ </table>
58
+ </div>
59
+ </section>
60
+ </main>
61
+ </div>
62
+ </body>
63
+ </html>
64
+
@@ -0,0 +1,61 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>药事管理系统 UI 模板</title>
7
+ <link rel="icon" type="image/png" href="logo.png">
8
+ <link rel="stylesheet" href="styles.css">
9
+ </head>
10
+ <body>
11
+ <div class="app-shell">
12
+ <header class="topbar">
13
+ <div class="brand">
14
+ <img class="brand-logo" src="logo.png" alt="数智医院 Logo">
15
+ <div class="brand-copy"><h1>数智医院 HIS</h1><span>药事管理系统</span></div>
16
+ </div>
17
+ <nav class="nav-actions" aria-label="系统导航">
18
+ <select aria-label="切换系统"><option>药事管理系统</option><option>患者管理系统</option><option>医生工作站</option></select>
19
+ <a href="#">主页</a><button type="button">菜单栏 1</button><button type="button">菜单栏 2</button><button type="button">菜单栏 3</button>
20
+ </nav>
21
+ </header>
22
+
23
+ <main class="page">
24
+ <section class="section">
25
+ <div class="section-header"><div><h2>门诊发药</h2><div class="muted">科室、患者和待发药明细联动布局</div></div></div>
26
+ <div class="layout-grid">
27
+ <aside class="panel">
28
+ <div class="panel-header"><h3>待发药科室</h3></div>
29
+ <div class="panel-body">
30
+ <div class="list">
31
+ <button class="list-button active" type="button"><strong>内科门诊</strong><span>3 名患者|6 条明细</span></button>
32
+ <button class="list-button" type="button"><strong>外科门诊</strong><span>2 名患者|4 条明细</span></button>
33
+ </div>
34
+ <div class="actions"><div class="message success">已选择:内科门诊</div></div>
35
+ </div>
36
+ </aside>
37
+ <div class="panel">
38
+ <div class="panel-header"><h3>患者检索</h3></div>
39
+ <div class="panel-body">
40
+ <div class="search-row"><input placeholder="身份证号 / 患者 ID / 手机号" aria-label="患者检索"><button class="btn" type="button">查询</button></div>
41
+ <div class="actions"><div class="message">可先选择科室,也可直接查询患者</div></div>
42
+ <div class="list"><button class="list-button" type="button"><strong>示例患者|P20260824001</strong><span>2026-08-24 09:30|2 条待发药明细</span></button></div>
43
+ </div>
44
+ </div>
45
+ </div>
46
+ </section>
47
+
48
+ <section class="section" style="margin-top:16px">
49
+ <div class="section-header"><div><h2>待发药明细</h2><div class="muted">示例患者|P20260824001</div></div><button class="btn primary" type="button">发药</button></div>
50
+ <div style="overflow:auto">
51
+ <table class="data-table">
52
+ <thead><tr><th>费用 ID</th><th>药品名称</th><th>数量</th><th>金额</th><th>开单科室</th><th>接收科室</th><th>库存</th><th>费用状态</th></tr></thead>
53
+ <tbody><tr><td>F001</td><td>示例药品</td><td>1</td><td>28.00</td><td>内科门诊</td><td>门诊药房</td><td><span class="status success">充足</span></td><td><span class="status warning">待发药</span></td></tr></tbody>
54
+ </table>
55
+ </div>
56
+ <div class="actions"><div class="message">可发药 1 条</div></div>
57
+ </section>
58
+ </main>
59
+ </div>
60
+ </body>
61
+ </html>