forked from arechen/EapilSkillMarket
Sync third-party and MCP marketplace plugins
Constraint: Public skills are published only by explicit administrator action unless they are tracked third-party market sources. Confidence: high Scope-risk: narrow Directive: Keep private/internal skills out of the public marketplace and preserve normal incremental market Git history. Tested: Marketplace validation passed.
This commit is contained in:
1 parent
1091563a13
commit
4bed8cc1b9
30 files changed
+509
-34
No files matched your search
@@ -196,6 +196,18 @@
|
|||||||
},
|
},
|
||||||
"category": "Developer Tools"
|
"category": "Developer Tools"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "hardware-development",
|
||||||
|
"source": {
|
||||||
|
"source": "local",
|
||||||
|
"path": "./plugins/codex/plugins/hardware-development"
|
||||||
|
},
|
||||||
|
"policy": {
|
||||||
|
"installation": "AVAILABLE",
|
||||||
|
"authentication": "ON_INSTALL"
|
||||||
|
},
|
||||||
|
"category": "Developer Tools"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "karpathy-guidelines",
|
"name": "karpathy-guidelines",
|
||||||
"source": {
|
"source": {
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ Codex 插件页的大标题按 marketplace 来源分组,不是按插件 `categ
|
|||||||
|
|
||||||
安装 `shuorenhua` 后,可显式调用 `$shuorenhua` 清理中文文本中的模板套话和生硬表达;需要只审阅不改写时,在指令中指定 `annotation mode`。
|
安装 `shuorenhua` 后,可显式调用 `$shuorenhua` 清理中文文本中的模板套话和生硬表达;需要只审阅不改写时,在指令中指定 `annotation mode`。
|
||||||
|
|
||||||
|
安装 `hardware-development` 后,可显式调用 `$hardware-development` 处理以 KiCad 为主的电路实施、PCB 布局布线、DRC 和制造交付;执行前应确认本机可用的 EDA 工具、有效工程版本和项目约束。
|
||||||
|
|
||||||
部分插件依赖特定运行环境。`$updating-gitea-repositories` 面向 Gitea HTTPS、GCM 和 PAT 工作流;`$etunel-role-collaboration` 仅在 Etunel 提供角色、成员、Hook 和任务上下文时使用。安装前应查看插件详情并确认运行前置条件。
|
部分插件依赖特定运行环境。`$updating-gitea-repositories` 面向 Gitea HTTPS、GCM 和 PAT 工作流;`$etunel-role-collaboration` 仅在 Etunel 提供角色、成员、Hook 和任务上下文时使用。安装前应查看插件详情并确认运行前置条件。
|
||||||
|
|
||||||
`etunel-role-collaboration` 的插件版本对应上游正式 release 的版本号。更新插件不会自动修改 Etunel 的 Hook 配置或迁移在途项目;实际项目仍需按已确认的流程基线使用。
|
`etunel-role-collaboration` 的插件版本对应上游正式 release 的版本号。更新插件不会自动修改 Etunel 的 Hook 配置或迁移在途项目;实际项目仍需按已确认的流程基线使用。
|
||||||
|
|||||||
@@ -806,6 +806,62 @@
|
|||||||
"etunel-role-collaboration": "用于 Etunel 多 Agent 项目的角色识别、Hub 中介、依赖任务波次、正式成果、人类负责人确认、阶段交接和消息流程协作。"
|
"etunel-role-collaboration": "用于 Etunel 多 Agent 项目的角色识别、Hub 中介、依赖任务波次、正式成果、人类负责人确认、阶段交接和消息流程协作。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "hardware-development",
|
||||||
|
"repo": "https://git.playones.com/xufeng/hardware-development.git",
|
||||||
|
"releaseChannel": "latest-stable",
|
||||||
|
"releaseProvider": "gitea",
|
||||||
|
"adapter": "claude-skill",
|
||||||
|
"pluginName": "hardware-development",
|
||||||
|
"category": "Developer Tools",
|
||||||
|
"skillPath": ".",
|
||||||
|
"sparseCheckout": [
|
||||||
|
"SKILL.md",
|
||||||
|
"agents",
|
||||||
|
"references"
|
||||||
|
],
|
||||||
|
"brandColor": "#0F766E",
|
||||||
|
"manifestOverrides": {
|
||||||
|
"description": "以 KiCad 为主的电子硬件开发流程,覆盖电路实施、PCB 布局布线、验证和制造交付。",
|
||||||
|
"author": {
|
||||||
|
"name": "xufeng",
|
||||||
|
"url": "https://git.playones.com/xufeng"
|
||||||
|
},
|
||||||
|
"homepage": "https://git.playones.com/xufeng/hardware-development",
|
||||||
|
"repository": "https://git.playones.com/xufeng/hardware-development.git",
|
||||||
|
"license": "UNKNOWN",
|
||||||
|
"keywords": [
|
||||||
|
"hardware-development",
|
||||||
|
"kicad",
|
||||||
|
"pcb",
|
||||||
|
"schematic",
|
||||||
|
"manufacturing"
|
||||||
|
],
|
||||||
|
"interface": {
|
||||||
|
"displayName": "硬件开发",
|
||||||
|
"shortDescription": "以 KiCad 完成电路、PCB、验证和制造交付。",
|
||||||
|
"longDescription": "以 KiCad 为主要执行工具,支持 Cadence/OrCAD 既有电路输入,覆盖工程基准、器件依据、原理图转换、封装与网表核对、功能布局、布线验收、DRC 和 Gerber 制造交付。",
|
||||||
|
"developerName": "xufeng",
|
||||||
|
"category": "Developer Tools",
|
||||||
|
"capabilities": [
|
||||||
|
"Interactive",
|
||||||
|
"Read",
|
||||||
|
"Write"
|
||||||
|
],
|
||||||
|
"defaultPrompt": [
|
||||||
|
"使用硬件开发 Skill 确定当前工程和有效约束,推进本次硬件设计阶段。",
|
||||||
|
"使用硬件开发 Skill 审查这个 KiCad PCB 工程并给出可追溯的验证结果。"
|
||||||
|
],
|
||||||
|
"websiteURL": "https://git.playones.com/xufeng/hardware-development",
|
||||||
|
"privacyPolicyURL": "https://git.playones.com/xufeng/hardware-development",
|
||||||
|
"termsOfServiceURL": "https://git.playones.com/xufeng/hardware-development",
|
||||||
|
"brandColor": "#0F766E"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"skillDescriptions": {
|
||||||
|
"hardware-development": "用于以 KiCad 为主的电子硬件开发,包括 Cadence/OrCAD 原理图转换、封装与网表核对、PCB 功能布局、布线验收、DRC 和 Gerber 制造交付。适用于已有电路的实施与审查,不用于纯软件或说明性框图。"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "next-skills",
|
"id": "next-skills",
|
||||||
"repo": "https://github.com/vercel/next.js.git",
|
"repo": "https://github.com/vercel/next.js.git",
|
||||||
|
|||||||
@@ -42,8 +42,8 @@
|
|||||||
"repo": "https://github.com/nextlevelbuilder/ui-ux-pro-max-skill.git",
|
"repo": "https://github.com/nextlevelbuilder/ui-ux-pro-max-skill.git",
|
||||||
"ref": "main",
|
"ref": "main",
|
||||||
"adapter": "claude-skill",
|
"adapter": "claude-skill",
|
||||||
"commit": "7f69fed6a2717900085f1bc3b263721f8ba025e2",
|
"commit": "d8ce090f82580c68f5471cc6dd3f56faf9a37afb",
|
||||||
"syncedAt": "2026-09-10T23:40:59Z"
|
"syncedAt": "2026-09-15T06:47:43Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "caveman",
|
"id": "caveman",
|
||||||
@@ -51,8 +51,8 @@
|
|||||||
"repo": "https://github.com/JuliusBrussee/caveman.git",
|
"repo": "https://github.com/JuliusBrussee/caveman.git",
|
||||||
"ref": "main",
|
"ref": "main",
|
||||||
"adapter": "codex-plugin",
|
"adapter": "codex-plugin",
|
||||||
"commit": "15581d14007fd01fb3f132016741962f34936ca2",
|
"commit": "4df4b03ba538751131d24415c59a1fad0d8c2c18",
|
||||||
"syncedAt": "2026-09-10T23:13:42Z"
|
"syncedAt": "2026-09-15T06:47:43Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "taste-skill",
|
"id": "taste-skill",
|
||||||
@@ -105,8 +105,8 @@
|
|||||||
"repo": "https://github.com/hugohe3/ppt-master.git",
|
"repo": "https://github.com/hugohe3/ppt-master.git",
|
||||||
"ref": "main",
|
"ref": "main",
|
||||||
"adapter": "claude-skill",
|
"adapter": "claude-skill",
|
||||||
"commit": "c6ae4896da10497464ad7e87f5833bfc14321621",
|
"commit": "7879bbc811f86ed9e43df0053169d885cff942c7",
|
||||||
"syncedAt": "2026-09-14T15:59:59Z"
|
"syncedAt": "2026-09-15T06:47:43Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "grill-me",
|
"id": "grill-me",
|
||||||
@@ -135,14 +135,23 @@
|
|||||||
"commit": "20c0de9b3829534685d1f931dc0b574c988eec6b",
|
"commit": "20c0de9b3829534685d1f931dc0b574c988eec6b",
|
||||||
"syncedAt": "2026-09-10T23:40:59Z"
|
"syncedAt": "2026-09-10T23:40:59Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "hardware-development",
|
||||||
|
"pluginName": "hardware-development",
|
||||||
|
"repo": "https://git.playones.com/xufeng/hardware-development.git",
|
||||||
|
"ref": "v1.0.0",
|
||||||
|
"adapter": "claude-skill",
|
||||||
|
"commit": "bb7491d3f3a188389c22995316ae0a257177a077",
|
||||||
|
"syncedAt": "2026-09-15T06:47:43Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "next-skills",
|
"id": "next-skills",
|
||||||
"pluginName": "next-skills",
|
"pluginName": "next-skills",
|
||||||
"repo": "https://github.com/vercel/next.js.git",
|
"repo": "https://github.com/vercel/next.js.git",
|
||||||
"ref": "canary",
|
"ref": "canary",
|
||||||
"adapter": "skill-collection",
|
"adapter": "skill-collection",
|
||||||
"commit": "3dc93da27e29048d601546ed610c903705f7fd6c",
|
"commit": "85e574a682254a835b9fbdb61530e555cd2d12c6",
|
||||||
"syncedAt": "2026-09-14T15:59:59Z"
|
"syncedAt": "2026-09-15T06:47:43Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "shuorenhua",
|
"id": "shuorenhua",
|
||||||
|
|||||||
@@ -196,6 +196,18 @@
|
|||||||
},
|
},
|
||||||
"category": "Developer Tools"
|
"category": "Developer Tools"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "hardware-development",
|
||||||
|
"source": {
|
||||||
|
"source": "local",
|
||||||
|
"path": "./plugins/hardware-development"
|
||||||
|
},
|
||||||
|
"policy": {
|
||||||
|
"installation": "AVAILABLE",
|
||||||
|
"authentication": "ON_INSTALL"
|
||||||
|
},
|
||||||
|
"category": "Developer Tools"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "karpathy-guidelines",
|
"name": "karpathy-guidelines",
|
||||||
"source": {
|
"source": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "caveman",
|
"name": "caveman",
|
||||||
"version": "2.6.0",
|
"version": "2.7.0",
|
||||||
"description": "Caveman 是面向 Codex 的精简表达、代码工作流和上下文压缩 skill 集合。",
|
"description": "Caveman 是面向 Codex 的精简表达、代码工作流和上下文压缩 skill 集合。",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Julius Brussee",
|
"name": "Julius Brussee",
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
"sourceId": "caveman",
|
"sourceId": "caveman",
|
||||||
"repo": "https://github.com/JuliusBrussee/caveman.git",
|
"repo": "https://github.com/JuliusBrussee/caveman.git",
|
||||||
"ref": "main",
|
"ref": "main",
|
||||||
"commit": "15581d14007fd01fb3f132016741962f34936ca2",
|
"commit": "4df4b03ba538751131d24415c59a1fad0d8c2c18",
|
||||||
"adapter": "codex-plugin",
|
"adapter": "codex-plugin",
|
||||||
"sourcePath": "plugins/caveman",
|
"sourcePath": "plugins/caveman",
|
||||||
"syncedAt": "2026-09-10T23:13:42Z"
|
"syncedAt": "2026-09-15T06:47:43Z"
|
||||||
}
|
}
|
||||||
@@ -6,6 +6,7 @@ Usage:
|
|||||||
caveman <filepath>
|
caveman <filepath>
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import argparse
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Force UTF-8 on stdout/stderr before any code can print. Windows consoles
|
# Force UTF-8 on stdout/stderr before any code can print. Windows consoles
|
||||||
@@ -21,20 +22,20 @@ for _stream in (sys.stdout, sys.stderr):
|
|||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
# Direct script execution has no package context. Resolve imports relative to
|
||||||
|
# this installed skill, independent of the caller's working directory.
|
||||||
|
if __package__ in (None, ""):
|
||||||
|
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
|
||||||
|
__package__ = "scripts"
|
||||||
|
|
||||||
from .compress import backup_dir_for, compress_file
|
from .compress import backup_dir_for, compress_file
|
||||||
from .detect import detect_file_type, should_compress
|
from .detect import detect_file_type, should_compress
|
||||||
|
|
||||||
|
|
||||||
def print_usage():
|
|
||||||
print("Usage: caveman <filepath>")
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
if len(sys.argv) != 2:
|
parser = argparse.ArgumentParser(description="Compress a natural-language file with validation and an original backup.")
|
||||||
print_usage()
|
parser.add_argument("filepath", type=Path, help="path to the file to compress")
|
||||||
sys.exit(1)
|
filepath = parser.parse_args().filepath
|
||||||
|
|
||||||
filepath = Path(sys.argv[1])
|
|
||||||
|
|
||||||
# Check file exists
|
# Check file exists
|
||||||
if not filepath.exists():
|
if not filepath.exists():
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ Clarity register: mix ASD-STE100 Simplified Technical English into caveman, alwa
|
|||||||
|
|
||||||
Tool calls: fire direct. No preamble, plan, or progress note before or between calls. After result: next call direct or final answer never announce next call. Text before call only to clarify, warn security/irreversible, or resolve ambiguity.
|
Tool calls: fire direct. No preamble, plan, or progress note before or between calls. After result: next call direct or final answer never announce next call. Text before call only to clarify, warn security/irreversible, or resolve ambiguity.
|
||||||
|
|
||||||
Preserve user's dominant language exactly reply in the language user writes, never switch regardless of example text or multilingual context elsewhere. Compress the style, not the language. Every emitted line in that language openings, pre-tool status lines, all not just final reply. ALWAYS keep technical terms, code, API names, CLI commands, commit-type keywords (feat/fix/...), and exact error strings verbatim unless user explicitly ask for translation.
|
Follow explicit reply-language instructions from the user or project. Otherwise preserve the user's dominant language. Never switch because of example text or multilingual context elsewhere. Compress the style, not the language. Every emitted line in that language openings, pre-tool status lines, all not just final reply. ALWAYS keep technical terms, code, API names, CLI commands, commit-type keywords (feat/fix/...), and exact error strings verbatim unless user explicitly ask for translation.
|
||||||
|
|
||||||
'Drop articles' = article languages only. Where small markers carry case/role (particles, postpositions), keep them grammar, not filler; compress politeness/filler instead.
|
'Drop articles' = article languages only. Where small markers carry case/role (particles, postpositions), keep them grammar, not filler; compress politeness/filler instead.
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"name": "hardware-development",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "以 KiCad 为主的电子硬件开发流程,覆盖电路实施、PCB 布局布线、验证和制造交付。",
|
||||||
|
"author": {
|
||||||
|
"name": "xufeng",
|
||||||
|
"url": "https://git.playones.com/xufeng"
|
||||||
|
},
|
||||||
|
"homepage": "https://git.playones.com/xufeng/hardware-development",
|
||||||
|
"repository": "https://git.playones.com/xufeng/hardware-development.git",
|
||||||
|
"license": "UNKNOWN",
|
||||||
|
"keywords": [
|
||||||
|
"hardware-development",
|
||||||
|
"kicad",
|
||||||
|
"pcb",
|
||||||
|
"schematic",
|
||||||
|
"manufacturing"
|
||||||
|
],
|
||||||
|
"skills": "./skills/",
|
||||||
|
"interface": {
|
||||||
|
"displayName": "硬件开发",
|
||||||
|
"shortDescription": "以 KiCad 完成电路、PCB、验证和制造交付。",
|
||||||
|
"longDescription": "以 KiCad 为主要执行工具,支持 Cadence/OrCAD 既有电路输入,覆盖工程基准、器件依据、原理图转换、封装与网表核对、功能布局、布线验收、DRC 和 Gerber 制造交付。",
|
||||||
|
"developerName": "xufeng",
|
||||||
|
"category": "Developer Tools",
|
||||||
|
"capabilities": [
|
||||||
|
"Interactive",
|
||||||
|
"Read",
|
||||||
|
"Write"
|
||||||
|
],
|
||||||
|
"defaultPrompt": [
|
||||||
|
"使用硬件开发 Skill 确定当前工程和有效约束,推进本次硬件设计阶段。",
|
||||||
|
"使用硬件开发 Skill 审查这个 KiCad PCB 工程并给出可追溯的验证结果。"
|
||||||
|
],
|
||||||
|
"websiteURL": "https://git.playones.com/xufeng/hardware-development",
|
||||||
|
"privacyPolicyURL": "https://git.playones.com/xufeng/hardware-development",
|
||||||
|
"termsOfServiceURL": "https://git.playones.com/xufeng/hardware-development",
|
||||||
|
"brandColor": "#0F766E",
|
||||||
|
"screenshots": []
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"sourceId": "hardware-development",
|
||||||
|
"repo": "https://git.playones.com/xufeng/hardware-development.git",
|
||||||
|
"ref": "v1.0.0",
|
||||||
|
"commit": "bb7491d3f3a188389c22995316ae0a257177a077",
|
||||||
|
"adapter": "claude-skill",
|
||||||
|
"sourcePath": ".",
|
||||||
|
"syncedAt": "2026-09-15T06:47:43Z"
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
---
|
||||||
|
name: hardware-development
|
||||||
|
description: "用于以 KiCad 为主的电子硬件开发,包括 Cadence/OrCAD 原理图转换、封装与网表核对、PCB 功能布局、布线验收、DRC 和 Gerber 制造交付。适用于已有电路的实施与审查,不用于纯软件或说明性框图。"
|
||||||
|
---
|
||||||
|
|
||||||
|
# 硬件开发
|
||||||
|
|
||||||
|
跨项目复用的硬件开发方法,以 KiCad 为主要执行工具,支持 Cadence/OrCAD 等既有电路输入。默认中文,交付可编辑工程、可追溯依据和实际验证结果。具体料号、尺寸、层叠、资料范围和当前进度来自本项目,不从历史案例继承。
|
||||||
|
|
||||||
|
## 开始工作
|
||||||
|
|
||||||
|
先读取 [工程基准与交付](references/project-workflow.md),确定有效工程、允许及排除的资料、当前授权阶段。检查点应关联实际文件与验证报告;文件名含“当前”或修改时间最新都不足以单独证明它是权威版本。
|
||||||
|
|
||||||
|
识别本次属于电路/选型、转换、布局、布线、审查还是制造输出,只推进请求涉及的阶段。默认在“布局验收后进入正式布线”和“制造资料定版”确认;已有明确授权覆盖该节点时直接继续,不重复询问。用户指定的暂停点继续有效,阶段内的检查、局部修正及验证自主完成。
|
||||||
|
|
||||||
|
缺少的信息分成两类:可撤销的方案选择可记录假设后继续;影响电气正确性或机械配合的关键未知项,应定位到具体器件、引脚或尺寸并询问,同时推进无依赖工作。不要用默认值替代未知的引脚映射、电压额定值或机械尺寸。
|
||||||
|
|
||||||
|
## 设计依据
|
||||||
|
|
||||||
|
- 器件结论以确切料号、封装后缀和厂商数据手册版本为依据,记录链接或本地文件及页码/章节。选型涉及现价、库存、生命周期时核实日期与来源;不能联网则标为待核实。
|
||||||
|
- 区分推荐工作条件、绝对最大额定值和典型参数。关键电源、热耗散、接口电平和容差计算写明输入、单位、公式与裕量依据,不将绝对最大值当设计工作点。
|
||||||
|
- 将“已确认”“设计假设”“待验证”分开。仿真、ERC/DRC、几何检查和实测分别支持不同结论,不能互相替代。
|
||||||
|
|
||||||
|
## 按任务读取
|
||||||
|
|
||||||
|
| 任务 | 参考文件 | 主要产出 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| 开始、恢复、重跑脚本、阶段交付 | [工程基准与交付](references/project-workflow.md) | 来源与约束、版本基准、可复核交付 |
|
||||||
|
| 需求、选型、原理图、电路审查 | [电路设计](references/circuit-design.md) | 约束、计算、器件依据、原理图或问题清单 |
|
||||||
|
| 转换、网表、封装入库 | [EDA 与 PCB](references/eda-pcb.md) | 原生工程、逐脚差异、本地库 |
|
||||||
|
| 功能单元、接口、电源、测试点布局 | [布局与审核](references/layout-review.md) | 分组和端点表、通道预检、布局验收 |
|
||||||
|
| 布线、差分、覆铜、DRC | [布线与电气验收](references/routing-validation.md) | 真实路径、参考地、载流与开路检查 |
|
||||||
|
|
||||||
|
仅在需要追溯经验时读取 [LYT70-AI 过程提炼](references/lyt70-ai-lessons.md);[早期 LY-SM-YT70 会话记录](references/ly-sm-yt70.md)仅用于原任务历史追溯。两份记录不能相互覆盖,更不能赋予读取当前项目禁止资料的权限。
|
||||||
|
|
||||||
|
## 执行原则
|
||||||
|
|
||||||
|
- 满足机械、电气硬约束后,优先保证功能单元、接口关系、局部回路及可布线通道,再优化距离;原理图页名、公共地或共享电源不能单独决定器件归属。
|
||||||
|
- 局部优化同时报告收益和代价,检查邻近单元与已验收约束。二维投影、热源间距及示意线都只是布局证据,不代表真实线长、温升或连通。
|
||||||
|
- 对验证结果有冲突时回到同一版本、同一端点和同一测量口径查明原因;不选取更好看的数值作为结论。
|
||||||
|
- 实际采用 KiCadRoutingTools 且环境提供 `kicad-routing-tools` 技能时读取它处理启动器和版本参数;本技能负责工程约束与独立验收,不硬编码机器路径或复制整套路由器操作说明。工具不可用时按实际能力选择方法并说明限制。
|
||||||
|
|
||||||
|
## 文件与验证
|
||||||
|
|
||||||
|
编辑已有工程前保留可恢复副本或版本差异。优先使用原生 EDA API/CLI,先确认版本和命令帮助;保存后用原生工具重新加载验证。
|
||||||
|
|
||||||
|
验证与改动对应:电路改动检查相关网络和 ERC;布局改动检查机械约束、端点关系及焊盘网络不变量;布线改动重新覆铜并运行 DRC、未连接及原理图一致性核对。保留版本、检查对象、命令、退出状态和报告路径;检查截断及数量上限,区分违规条目、未连接条目、网络数和引脚数。
|
||||||
|
|
||||||
|
交付说明包含:生成或修改的文件、解决的问题、实际通过的检查、仍待解决的项目及其影响。明确工程处于电路草案、布局、布线或制造导出阶段。仅在相关检查有证据支持时声明可制造;制造导出并不等于硬件功能已验证。
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
interface:
|
||||||
|
display_name: "硬件开发"
|
||||||
|
short_description: "可复用的 KiCad 硬件开发流程,涵盖功能布局、布线验收和制造交付"
|
||||||
|
default_prompt: "使用 $hardware-development 确定当前工程和有效约束,完成本次硬件设计阶段,并交付可编辑文件、验证证据及剩余问题。"
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
# 电路设计与审查
|
||||||
|
|
||||||
|
## 需求和架构
|
||||||
|
|
||||||
|
从已有资料提取供电范围、负载峰值、接口电平/速率、环境温度、板框与安装、成本和可采购性等适用约束。每个关键指标对应可测验收条件;缺失项按影响记录,不为小改动要求重做整套规格书。
|
||||||
|
|
||||||
|
需要架构方案时,给出电源树和信号接口关系,解释决定选型的差异。预算覆盖稳态、启动及瞬态负载,使用可追溯输入。对不涉及的射频、高压、高速等专项不展开通用清单。
|
||||||
|
|
||||||
|
## 器件与电路
|
||||||
|
|
||||||
|
- BOM 按位号、数量、数值、精度/额定值、完整料号、封装、DNP 与替代条件记录。区分电气数值与封装名称;替代料核对引脚功能、供电、时序、热性能和尺寸,不能仅看封装相同。
|
||||||
|
- 电源核对输入范围、输出误差、启动时序、使能/掉电状态、反灌路径、稳压器稳定性所需电容及热耗散。最坏工况应计入适用的容差、温度及直流偏压影响。
|
||||||
|
- 数字接口核对双方 VIH/VIL、VOH/VOL、绝对额定值、上拉电压、开漏/推挽、掉电容忍、启动绑带、复位和调试访问。
|
||||||
|
- 模拟接口核对共模范围、输入摆幅、偏置/阻抗、参考源、滤波与采样要求。不要用典型参数承诺全温性能。
|
||||||
|
- 对外接口按使用环境核对连接器视图与脚序、屏蔽/地、ESD 和浪涌路径。有关标准或认证的结论必须依据适用版本和实际验证。
|
||||||
|
|
||||||
|
## 审查输出
|
||||||
|
|
||||||
|
每条问题写明位号/网络、现有连接、证据、可能后果、建议动作及验证方式。区分确定错误与需补充资料的疑点,优先报告可能损坏器件、无法启动或需要改板的问题。修改后复核受影响接口,不能用增加 PWR_FLAG、删除网络或屏蔽告警替代查明根因。
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
# 原理图转换与 PCB
|
||||||
|
|
||||||
|
## 转换及连接一致性
|
||||||
|
|
||||||
|
1. 确认源格式、单位、层级、符号库和目标 EDA 版本;保留源文件,生成可重开且依赖完整的目标工程。
|
||||||
|
2. 建立位号、单元、引脚号到封装焊盘号的映射。依据实际料号的数据手册及封装视图核实 B/C/E、G/S/D、连接器镜像和裸露焊盘;没有证据的映射单列待确认。
|
||||||
|
3. 以每个网络的 `(位号, 引脚/焊盘号)` 成员集合比较拓扑,单独报告同连接异名网络、连接差异、未分配网络的焊盘、明确 NC 和缺失引脚。重复编号焊盘按其电气含义归组,多单元符号考虑单元与隐藏电源脚。
|
||||||
|
4. 元件数量、网络数量相同不能证明连接一致。检查 Value、Footprint、料号、DNP、层级路径和库关联;同步前预览可能的重建或重编号影响。
|
||||||
|
5. 从 PDF 或图片恢复时逐页核对连接点、跨线、隐藏电源和跨页标签。OCR 与视觉近邻只提供候选,不能据此宣布电气等价。
|
||||||
|
|
||||||
|
## 板载封装入库
|
||||||
|
|
||||||
|
从 PCB 提取封装时,同名实例可能已独立修改。先比较几何、焊盘和属性;未经等价核对不要按名称去重。可按“原封装名__位号”分别保存到项目 `.pretty` 库,生成位号对应表,用原生库读取核对焊盘编号、数量及几何。注册到项目 `fp-lib-table` 并使用项目相对路径。仅导出库时不改原 PCB;需要重关联时再同步实例及原理图字段。
|
||||||
|
|
||||||
|
## 完整导入与来源封装
|
||||||
|
|
||||||
|
先区分原理图符号实例、物理位号、源 NC、已连接引脚及机械孔。用户要求全量导入时,不以是否有规格书筛选器件;缺物理封装的逻辑占位应明确标记,不进入物理布局验收。缺失引脚号的适配映射应逐项记录依据,不能仅按引脚名称推断所有器件。
|
||||||
|
|
||||||
|
用户指定来源封装时,比较归一化局部坐标中的焊盘尺寸、编号、形状、钻孔、铜层、阻焊和钢网属性,板面/旋转属于实例变换。无编号 NPTH 不等于缺失电气引脚;额外焊盘也须按实际结构判断。来源保真和可制造是两项不同检查,保留的工艺缺陷仍需报告。
|
||||||
|
|
||||||
|
转换保留层级、UUID、字段与库依赖;必要的中文路径适配使用校验哈希的副本,保留原路径与副本对应关系。验证原生重开、完整连接拓扑及源文件是否改变。
|
||||||
|
|
||||||
|
布局参见 [布局与审核](layout-review.md),布线参见 [布线与电气验收](routing-validation.md),制造导出参见 [工程基准与交付](project-workflow.md)。
|
||||||
+46
@@ -0,0 +1,46 @@
|
|||||||
|
# 功能布局与审核
|
||||||
|
|
||||||
|
## 约束及观察方向
|
||||||
|
|
||||||
|
记录机械固定件、允许的旋转/面别、板框/孔/开槽、光学基准、连接器插拔及限高/禁布空间。用户给图时先识别 TOP、BOTTOM 镜像或从 TOP 观察的底层投影,利用不对称孔位/器件确认左右关系。底视机械脚位图也需换算到 EDA 使用的坐标,不能把截图“右侧”直接变成 X 增大。
|
||||||
|
|
||||||
|
器件框是初筛:跨面放置仍受贯穿孔、螺钉、座体、净高影响;铜制 Mark 不能当高实体,圆形孔优先按实际圆形几何核查。连接器焊脚朝内需结合引脚排布,双排/直插等不能套用单排规则。向外留出装配通道;只检查座体框不等于插头、线束和壳体已验证。
|
||||||
|
|
||||||
|
## 功能单元与真正的连接对象
|
||||||
|
|
||||||
|
结合原理图页、局部支路、实际网络和器件作用建立归属表:`位号 | 功能单元 | 角色 | 关键引脚/网络 | 对应芯片/接口 | 依据`。原理图坐标可帮助识别支路,不能代替连接证据。
|
||||||
|
|
||||||
|
- 同页音频可能包括功放、麦克风、独立输出;按各接口分别归组。公共电源和地、高扇出网络不能把这些单元粘在一起。
|
||||||
|
- 区分稳压输入滤波、输出滤波、负载去耦、反馈、自举、使能、驱动采样及信号耦合。一个电源网可同时是上级输出和下级输入;芯片迁移不应把远端负载去耦一并搬走。
|
||||||
|
- 入口保护核实它保护哪一端以及真实流经路径。不能因同网而把另一个连接器旁的 ESD 算作本接口保护,也不能把 PHY 侧器件跨隔离变压器搬到接口侧。串联匹配位置按源/接收端要求判断。
|
||||||
|
|
||||||
|
满足硬约束后,以接口、主芯片实际出线侧及关键回路为锚点,整组安排相关外围,再优化组内方向和端点距离。已就近且合格的单元保持,避免为了形式上的整体优化反复移动。
|
||||||
|
|
||||||
|
## 电源、去耦与热布局
|
||||||
|
|
||||||
|
按实际电路梳理每路 VIN/Cin、SW/LX、电感、Cout/VOUT、FB、GND 路径。优先紧凑开关回路、器件指南要求的同层连接及反馈静地取样;不把 LDO 当 DC-DC,也不把裸露焊盘默认当 GND。
|
||||||
|
|
||||||
|
逐电容同时检查信号端到对应输入/输出/供电脚、GND 端到本路实际回流节点,优化位置与极性方向。使用同层和双端距离作为布局筛选,再落实短宽铜与过孔;同面不自动代表回路最优,跨面投影近不代表低寄生。
|
||||||
|
|
||||||
|
FB 器件及拟定取样通道检查对本路和邻近电感、SW 区的避让,不以固定通用距离承诺抗干扰。热源隔开时同步检查远端供电压降、线宽通道、稳定性所需电容和负载去耦。将“热源几何间距改善”和“温升验证”分开,不为热隔离擅自割裂信号参考地。
|
||||||
|
|
||||||
|
## 测试点与 Mark
|
||||||
|
|
||||||
|
按实际网络和属性区分电压点、地测点和无电气网络的 Mark,不按 TP 编号判断用途。电压点定位到对应电源输出节点(例如电感输出/输出滤波),测量地与适当测点配对,保持不同地网身份。
|
||||||
|
|
||||||
|
依据项目指定测试面、点距及治具要求安排位置。背面输出到顶面测点需规划实际短支路/换层;核查探针接触、器件遮挡、探针本体和装配公差。Mark 另检查识别净空、板边距离、阻焊和钢网属性;DRC 通过不代表视觉识别或治具可用。中心距、铜边距和外形间距使用各自要求,不混用阈值;数量与 2 mm 等示例数值不能继承为通用标准。
|
||||||
|
|
||||||
|
## 在布局时检查能否布通
|
||||||
|
|
||||||
|
在授权允许的独立候选中做局部扇出试验,或完成几何通道分析,并明确两种证据的区别。检查主控、细间距/BGA 传感器的关键引脚出口,预留差分端部、成对换层、调长区、电源主干及回流空间;以实际焊盘和制造线宽/间距判断,不能沿用其它封装的尺寸推算。
|
||||||
|
|
||||||
|
先评估关键通道对相邻电源脚、其它信号出口的占用,再锁定高速路线。保护一对差分但封死邻脚不算可用布局。若后续局部补线反复失败,返回定位通道冲突,在已有授权范围局部重排;需要改动已锁定机械对象或电路时提出具体冲突与可评审方案。
|
||||||
|
|
||||||
|
## 可比较的证据
|
||||||
|
|
||||||
|
端点表记录 `单元/连接 | 起止位号.焊盘 | 网络 | 板面 | 修改前/后值 | 测量口径 | 下一阶段需验证内容`。
|
||||||
|
|
||||||
|
- 区分封装中心、焊盘中心 XY 距离、铜边距、含过孔的真实路径长度和电气时延。不同板面的投影 0 mm 也没有证明已经连接。
|
||||||
|
- 最近同网邻居和最小生成树可用于筛选;比较保持相同网络集合、分组和权重,公共网络的排除需说明。没有统计信号的接口写“不适用”,不是零线长。
|
||||||
|
- 保留收益与退化项:缩短输出而加长接地、移动上级电源而拉长下级供电、改善热间距但增加压降路径,都应落实后续动作。
|
||||||
|
- 每轮原生回读,检查位号/网表/归一化封装、固定对象、指定同层关系、禁布、测试点及原生 DRC。整板图、局部图和审核标注应来自同一版本,失效的通道示意不沿用。
|
||||||
+63
@@ -0,0 +1,63 @@
|
|||||||
|
# LY-SM-YT70 早期会话历史参考
|
||||||
|
|
||||||
|
来源:任务“转换Cadence原理图为KiCad”,任务 ID `01a08030-7288-7da2-b8da-a34796293f3e`,会话记录截至 2026-09-09。本文件总结用户要求;历史助手报告作为复核线索,不视为对当前工程的实测证明。
|
||||||
|
|
||||||
|
**适用范围:仅该早期任务。** 这里的桌面路径、尺寸、限高解释、已解决/未解决问题和暂停点都不是跨项目默认值,也不是后续“规划PCB硬件设计流程”任务的当前状态。仅在获准追溯原任务时使用;新任务的资料边界和最新约束优先。后续经验参见 [LYT70-AI 过程提炼](lyt70-ai-lessons.md)。
|
||||||
|
|
||||||
|
## 基准和要求演变
|
||||||
|
|
||||||
|
- 工作从 Cadence `.DSN` 转换、原理图/PCB 核对、板载封装入库、从原理图生成 PCB,推进到四层布局。历史转换记录为 11 页原图、356 个元件、210 个有连接网络;这些是核查基线,不是新项目固定数量。
|
||||||
|
- 用户后续指定桌面 `EP_LY-SM-YT70_MB_V1.0_KICAD` 内的同名 PCB,说明主要器件已布局,应以最新文件为基准。原始目录及旧候选不能覆盖用户手动修改。读取当前文件、记录摘要和固定对象;保存前检查外部修改。
|
||||||
|
- 早期板框记录 50 × 57 mm,后期报告 55 × 57 mm。实际尺寸读当前板框,不从旧计划恢复。
|
||||||
|
- 板边间距早期为 2 mm,用户后来明确更新为 **≥1 mm**;螺丝孔间距仍为 **≥2 mm**。核查时说明距离以孔边及器件实体/装配外形为基准,不能用孔中心或器件中心代替边缘距离。
|
||||||
|
- 用户补充镜头座下方 **限高 2 mm**,取代此前净高未知的状态。该区域不是整块禁布,也不是任意可放:需核对座内实体、孔柱、传感器区域及具体物料最大装配高度。
|
||||||
|
- 固定对象沿用当前确认状态,特别是板框、安装孔、传感器和镜头座;后续已摆放主要器件应先记录再局部优化。冲突时指出具体对象与要求,不默认扩大可移动范围。
|
||||||
|
|
||||||
|
## 四层方案
|
||||||
|
|
||||||
|
| 层 | 用户用途 |
|
||||||
|
| --- | --- |
|
||||||
|
| TOP / F.Cu | 主控、电源芯片、电解电容、网络滤波器、TF 卡座等大器件 |
|
||||||
|
| L2 / In1.Cu | GND 参考层,不布其他走线 |
|
||||||
|
| L3 / In2.Cu | 普通信号及电源布线 |
|
||||||
|
| L4 / B.Cu | 图像传感器及其他小阻容 |
|
||||||
|
|
||||||
|
晶振与主控同层,关键旁路及电源回路仍需满足实际引脚和回流要求;遇到分面要求冲突,明确解释并解决。L2 保存并检查 GND 铜区、填充及禁止走线规则;隔离区、天线禁铜和贯穿孔避让按实际电气/结构要求处理,不能用全板铺地掩盖冲突。
|
||||||
|
|
||||||
|
## 该会话截至 2026-09-09 的 20 条要求
|
||||||
|
|
||||||
|
1. 图像传感器光学中心对准板框指定位置;产品上方与成像上下方向单独核实,不能用旋转角没变证明方向正确。
|
||||||
|
2. 主控、传感器、TF/SIM 卡座尽量隔开以减轻热影响,同时满足接口通道。
|
||||||
|
3. 功放及扬声器接口远离高速与麦克风电路。
|
||||||
|
4. 时钟器件及外围靠近主控,并与其同层。
|
||||||
|
5. 实际存在的 4G/Wi-Fi 天线部分靠板边,保留模块规定净空;无对应器件则标不适用。
|
||||||
|
6. 电源、灯板、网口、马达、功放、IR-CUT 连接器靠板边,同时检查插拔空间。
|
||||||
|
7. 各 DC-DC 单元靠近对应供电脚,输入电容、电感、反馈及回流保持成组。
|
||||||
|
8. 器件距螺丝孔 ≥2 mm、距板边 ≥1 mm,报告最小值与对应对象。
|
||||||
|
9. 禁放区无器件;分别处理双面、贯穿孔和限高区域。
|
||||||
|
10. 优先按主控 MIPI、USB、DDR、射频、麦克风和喇叭出线方向安排单元,预留通道、减少交叉。
|
||||||
|
11. 按确切物料规格书核对封装尺寸、焊盘、脚序、孔、外形和高度。
|
||||||
|
12. MIPI 相关器件就近布置;电路中已有的接收匹配器件靠接收端,远离 DC-DC 电感与开关节点,预留差分通道。不据此擅自新增终端电阻。
|
||||||
|
13. USB2.0 的 D+/D− ESD 靠连接器、通路短;现有电路缺少合适 ESD 时列为电路缺口。
|
||||||
|
14. 模拟电路集中分区,数字走线不横穿。
|
||||||
|
15. 每个单元靠对应连接器。
|
||||||
|
16. 去耦电容靠对应芯片管脚及所属单元。
|
||||||
|
17. 按现有同网络电容数量为主控供电脚就近分配大/小容量组合,每脚至少一个为用户目标;数量不足时列出具体网络及缺口,不虚构器件或把一颗远端电容计作多个脚的独立去耦。
|
||||||
|
18. 同一单元相关器件成组放置。
|
||||||
|
19. 高压/PoE 区与信号区隔开;隔离距离依据电压及适用设计条件。历史布局使用的局部 2 mm 避让不是通用安规证明。
|
||||||
|
20. 布局后运行 DRC,处理重叠和间距问题,保存 PCB 并报告剩余缺口。
|
||||||
|
|
||||||
|
## 可复用的核查重点
|
||||||
|
|
||||||
|
- 单元表包含位号、原理图页、功能、关键网络、归属接口及依据。历史 U18 曾被错误归组,后按原理图归入 J15 音频输出;J9 麦克风独立分组。实际复用时重新核对,不能机械沿用脚本里的归属。
|
||||||
|
- 去耦表包含电源脚、网络、电容位号/容量、面别、焊盘距离及计划回流路径;平均距离改善不代表最差引脚合格,异面还需过孔与环路核对。
|
||||||
|
- 历史 Q2–Q5 曾有 B/C/E 与数字焊盘映射问题,后续报告已处理。J2 卡座封装、SW1 的 NC 引脚与焊盘差异在末次报告仍待核查;不要复述早期问题为当前事实,也不要因后续数量一致而跳过复核。
|
||||||
|
- 17 份器件资料的历史位置为 `F:/徐/kicad示列/规格书`;镜头座资料为桌面 `GS2030-360.pdf`。资料路径只作定位线索,实际使用检查文件是否存在、型号和版本是否匹配。已提供全部资料不等于全部器件已核验。
|
||||||
|
|
||||||
|
## 交付与验收表
|
||||||
|
|
||||||
|
交付原生 PCB/工程与所需库、顶底面预览、位号坐标表、单元分组表、去耦对应表、原生检查报告及修改说明,按本次任务选择必要文件。
|
||||||
|
|
||||||
|
逐项验收使用:`要求编号 | 对象/网络 | 判断依据或实测值 | 状态 | 剩余动作`。状态为符合、未符合、未验证或不适用。记录修改前后网络/数值/固定对象比较;DRC 分开报告短路、间距、封装、原理图一致性和未连接。
|
||||||
|
|
||||||
|
末次会话交付仍为未布线布局工作版,尚未完成全部 20 条验收。此为历史状态;继续工作必须重检当前文件。技能的创建不代表继续修改 PCB 或宣布其可生产。
|
||||||
+37
@@ -0,0 +1,37 @@
|
|||||||
|
# LYT70-AI 布局过程的可复用经验
|
||||||
|
|
||||||
|
仅在需要解释方法来源或追溯取舍时读取,不作为项目当前状态清单。来源为任务“规划PCB硬件设计流程”(`01a08514-2398-7f80-8685-4fac7684e14a`);2026-09-14 读取了项目 `docs/hardware/layout-r7-20260910.md` 至 `layout-r16-20260911.md`、`progress.md`,并读取可见的 R20 布线会话消息。部分任务轮次工具返回空条目,因此布局细节依据落盘记录,未声称重新验证 PCB。
|
||||||
|
|
||||||
|
## 布局迭代带来的方法
|
||||||
|
|
||||||
|
| 记录 | 实际暴露的取舍 | 已提炼的方法 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| R6–R7 功能区到引脚关系 | 同页音频分别服务不同插座;仅按功能框摆放仍可能端点远 | 先建单元/支路/接口归属,再按实际焊盘优化朝向;距离比较保持同一口径 |
|
||||||
|
| R8 Flash 与入口保护 | 关键时钟和保护器件需对应具体引脚;PHY 侧不能越过变压器隔离网络 | 识别源端、接收端和保护位置,不用最近同网点代替电路拓扑 |
|
||||||
|
| R9–R10 电源与同层滤波 | 共用供电网不代表同一稳压支路;同层可能比跨面投影更远 | 同时核对原理图支路和网络,分别标识 Cin/Cout/负载去耦/FB/使能 |
|
||||||
|
| R11 LDO 与接地端 | 远离热源增加负载供电距离;信号端缩短可能加长 GND 回路 | 比较电容两端和热/供电代价;迁移整组稳压外围,负载去耦留在负载端 |
|
||||||
|
| R12–R14 测试点与 Mark | TP 编号中混有 Mark;统一测试面后输出节点与测点需要重新协调 | 按属性和网络识别用途;核查输出节点、跨面支路、探针空间、Mark 净空和钢网 |
|
||||||
|
| R15–R16 连接器 | 接口靠近驱动后插拔通道仍可能被挡;BOTTOM 镜像“右侧”对应顶视坐标左侧 | 用不对称基准识别视图;机械通道先行,接口与外围联合调整,记录邻组退化 |
|
||||||
|
|
||||||
|
R16 报告同时列出同层灯板连接改善与下游供电距离增长;并明确二维投影不是铜长度。它是本次可读布局系列的最后一版记录,后续已有布线版本,不能把 R16 的“等待确认”沿用为永远暂停,也不能把用户所称最终布局解释为制造合格。
|
||||||
|
|
||||||
|
## 后续布线对布局的反馈
|
||||||
|
|
||||||
|
R20 会话报告曾发生:避让范围误用于电路自身、差分走线阻挡传感器电源脚、受限重排无改善、差分路径统计与整网铜长冲突。相应方法是:规则按网络/层/用途限定,布局阶段预检关键引脚出口,候选比较保留可恢复基准,验收时统一真实端点并交叉核算。
|
||||||
|
|
||||||
|
R20 明确交付未完成工作版,不能把它作为流程已保证成功的案例。这里不保存易过期的未连接计数或精确长度,继续项目时从有效工程与对应报告读取。
|
||||||
|
|
||||||
|
## 不可迁移的项目事实
|
||||||
|
|
||||||
|
旧 Gerber 的参考用途、来源封装优先级、排除目录、特定器件角度/板面、镜头翼区留空、测试面及点距、层叠和差分指标都属于该任务。早期任务“2 mm 限高下可有条件布置”与本任务“翼区留空”不能混成同一默认规则。来源封装保留的制造问题也不能被泛化为允许的工艺豁免。
|
||||||
|
|
||||||
|
## 自检场景
|
||||||
|
|
||||||
|
维护本技能时用以下情形复核解释是否一致,事实由当前项目提供:
|
||||||
|
|
||||||
|
- 旧“当前进度”与较晚交付冲突:先核实基准和报告关联,不能直接恢复旧工程或暂停点。
|
||||||
|
- 用户在 BOTTOM 镜像图标出右侧接口:先确认坐标对应及装配通道,再整组调整和复核。
|
||||||
|
- 跨面滤波投影接近零,但回流长:不能报告已短接或寄生最优;核对信号/GND 两端与实际换层。
|
||||||
|
- TP 标号无网络且 Value 为 MARK:按定位标记审核,不分配成电压测试点。
|
||||||
|
- 差分计数显示通过,而端到端复核超差:标记未通过/待核实并排查口径,不挑选较好结果。
|
||||||
|
- 路由失败后全局放宽约束可接通:不自动采纳;定位规则误用或拥塞,保留符合硬约束的基准继续处理。
|
||||||
+40
@@ -0,0 +1,40 @@
|
|||||||
|
# 工程基准、脚本与交付
|
||||||
|
|
||||||
|
## 找到真正的当前版本
|
||||||
|
|
||||||
|
先核对项目说明与用户最新要求,识别有效输入、允许的参考用途和排除目录。Gerber 可能仅获准参考板框/指定器件位置,不据此继承走线;规格书可能只获准作封装依据,不扩展为芯片功能替换。历史案例中的路径不构成当前项目授权。
|
||||||
|
|
||||||
|
恢复任务时,对照最新检查点、实际工程、关联报告与用户确认记录;发生冲突先说明证据,不能只选文件名含“当前”、版本号最高或修改时间最新的文件。旧工作板、候选、交付包各自保留身份,重布局后旧布线与 Gerber 不自动适用。
|
||||||
|
|
||||||
|
沿用项目已有记录结构,至少维护以下内容,不为小改动重复造文档:
|
||||||
|
|
||||||
|
| 记录 | 必要内容 |
|
||||||
|
| --- | --- |
|
||||||
|
| 工程基准 | PCB、同名项目/规则、网表、库路径及版本或哈希;原始输入与派生成果分别标识 |
|
||||||
|
| 约束 | 对象、值/规则、来源及适用范围;固定/可移动对象;新要求替代旧要求的关系 |
|
||||||
|
| 授权阶段 | 当前允许的动作、已通过的确认点、尚有效的暂停要求 |
|
||||||
|
| 检查点 | 修改范围、文件、验证报告、未解决项、下一步及相关进程状态 |
|
||||||
|
|
||||||
|
对来源仅为历史助手报告的结论注明其性质。没有重跑检查时不描述为本次已验证。
|
||||||
|
|
||||||
|
## 安全重跑和工具交换
|
||||||
|
|
||||||
|
- 编辑前保存可恢复基准。核对脚本读哪版、写哪版、是否从旧版重建、是否含累积平移/翻面等非幂等动作。不要在成品上盲目重跑相对调整;重建写入新候选,再比较和合并。
|
||||||
|
- 修改范围限定到所需对象及受影响邻域,逐位号报告变化和保持。替换目标前检查是否出现用户或其它进程修改;有变化时重新对齐基准,不能用旧副本覆盖。
|
||||||
|
- PCB、同名 `.kicad_pro`、`.kicad_dru` 及库依赖一起管理。比较工具候选使用独立目录,避免旧输出项目规则污染后一次结果。
|
||||||
|
- 对同一工程可能写回项目配置的 DRC、出图、覆铜或路由动作串行执行;独立副本才可并行。核对运行前后规则,不能仅凭命令名认定只读。
|
||||||
|
- 保存并原生回读,检查网络、归一化封装几何和固定对象位姿;交换导入的坐标取整需说明容差及后果,按固定要求恢复后重新检查铜连接和间距。
|
||||||
|
|
||||||
|
## 阶段交付
|
||||||
|
|
||||||
|
按本次请求选择必要产物:原生工程和本地库、整板顶底视图及关键局部、变化/端点对照、规则与验证报告、剩余问题。截图写清板面、观察方向和镜像状态;投影、虚线及功能框仅为审核标注,不写成铜连接。
|
||||||
|
|
||||||
|
审核表使用 `要求/对象 | 依据或测量口径 | 结果 | 符合/未符合/未验证/不适用 | 剩余动作`。主动报告局部改善导致的供电距离增长、回流变长或装配空间收紧。保留来源封装的制造错误也不能因用户要求保持而记为通过。
|
||||||
|
|
||||||
|
生成 ZIP 时检查必要工程/库齐全并验证 CRC;工程交付用文件清单和哈希将包、报告与具体 PCB 版本关联。布局审核、未完成布线检查包与生产包应从名称或说明中清楚区分。保存部分成果后,若仍有可执行的授权工作应继续;工具一次失败不等于整个任务必须停止。
|
||||||
|
|
||||||
|
## 制造定版
|
||||||
|
|
||||||
|
先完成与该版本关联的原生 DRC、真实连通、关键电气、机械及工艺验收;报告上限、未验证项目、未解决制造错误都需显式处理。阶段内可生成标识清楚的检查输出;生产定版按已约定确认点执行,明确授权已覆盖时无需再确认。
|
||||||
|
|
||||||
|
按请求输出 Gerber、PTH/NPTH 钻孔、叠层/制造说明、BOM、贴片坐标及装配资料。复核层、单位/原点、底面旋转约定、板框/开槽、孔属性、DNP、阻焊及钢网(包括 Mark)与当前工程一致;用独立 CAM 回读实际输出,处理兼容性警告。预览图不能替代 Gerber 回读。输出文件齐全不等于设计或硬件功能验收通过。
|
||||||
+39
@@ -0,0 +1,39 @@
|
|||||||
|
# 布线与电气验收
|
||||||
|
|
||||||
|
## 输入和约束
|
||||||
|
|
||||||
|
从已获授权的有效布局开始,核对配套工程规则、实际焊盘、制造能力、层/过孔约束与网络类别。层叠、阻抗和长度目标取自本项目依据;没有板厂叠层数据时不能用固定线宽宣称阻抗达标。
|
||||||
|
|
||||||
|
路由前区分机械硬禁区、噪声敏感通道避让区、参考地保护区及其层/网络适用范围。噪声区对经过的敏感线有约束,不应无差别封死该电源、晶振或音频电路自身的必要连接;机械硬禁区不能这样豁免。多条网络被同一区域拒绝时先检查规则作用范围。
|
||||||
|
|
||||||
|
## 候选与失败处理
|
||||||
|
|
||||||
|
优先解决关键引脚扇出、高速通道、电源主干及回流,再组织普通信号;顺序按实际拥塞调整。记录实际运行参数,不采用会暗中降低已指定线宽/间距的默认降级方式。前后比较 `.kicad_pro`/`.kicad_dru`,路由完成不等于规则未改。
|
||||||
|
|
||||||
|
为每次候选记录输入基准、目标网络、保护对象、开路和新增违规、关键路径结果。重复无改善、几何振荡或新增回归时停止该策略,保留较好候选,定位具体焊盘/阻挡再改变方法;不把无限重试当推进,也不因一次路由失败立即放弃其它可执行工作。
|
||||||
|
|
||||||
|
导入 SES 或恢复受保护走线后,复核固定器件精确位姿、全部焊盘网络及归一化几何、保护线端点/层/宽度/网络和过孔集合。坐标取整、GND 过孔失网、恢复过程多出过孔都要在最终原生文件上查明。候选保存并回读后再判断。
|
||||||
|
|
||||||
|
## 路径长度与差分
|
||||||
|
|
||||||
|
为每对线定义真实源/目标焊盘和途经串联器件;核查端到端路径及分段网络。分别报告组内偏差、需要的组间匹配、耦合段、端部散开、过孔/换层和参考层,不以中段成对或全网铜长总和代替。
|
||||||
|
|
||||||
|
有分支、并行铜路径或过孔铜环搭接时,不能直接用最短图路径宣称实际高速信号路径达标。核查多余绕行/支路及工具对过孔、圆弧、焊盘内连接的计数约定,必要时消除非预期拓扑再测量。报告长度单位以及是否含过孔长度/器件内部延迟。
|
||||||
|
|
||||||
|
当两种计算给出冲突结论,统一工程版本、端点和计算口径并交叉核查;未查清前撤回“等长通过”。连通、组内匹配、组间匹配、阻抗和参考地分别验收。空间不足时返回局部布局预留调长区,不降低标准掩盖问题。
|
||||||
|
|
||||||
|
## 参考地与接地网络
|
||||||
|
|
||||||
|
基于最终覆铜结果检查关键线实际铜箔投影及所需回流空间下的相邻层 GND 覆盖、断缝/孤岛/窄颈、与主参考地的连接以及换层回流过孔。保护区随移动/调长更新,避免后续路由侵入。不同的 GND、信号地、机壳地或“0”网络按原理图分别处理,不能为连通率擅自合并。
|
||||||
|
|
||||||
|
报告中区分自身信号过孔正常避空和真正参考地缺口,列明排除范围;不能扩大忽略区掩盖不连续。覆盖率或连到主地只能证明对应几何/拓扑检查,不单独证明阻抗、回流阻抗或 EMI 合格。
|
||||||
|
|
||||||
|
接地过孔先检查密集引脚出口与保护线路,适用时利用铜面连通并按项目规则布置;一次增加很多过孔不等于地网连通。重新覆铜后独立核对剩余接地开路。
|
||||||
|
|
||||||
|
## 电源和 DRC
|
||||||
|
|
||||||
|
按真实载流路径检查主干、分支、焊盘接入细颈、过孔与铜面。分别列出目标宽度、实测最小宽度、低于目标的区段长度及位置;短收窄段结合电流、铜厚、温升/压降和制造规则判断,不能全网普遍收窄或以平均宽度代替。自动加宽/亚微米几何修正后重检间距及差分参数,不只统计修改段数。
|
||||||
|
|
||||||
|
完成后对同一保存版本运行适用的独立连通/几何检查、原生 KiCad DRC 和原理图一致性核对。检查报告内容、类别和上限;返回码为零、没有新增短路、未连接项下降都不代表全部通过。将未连接条目、未连网络、实际铜连接和源 NC 区分,连通仍需结合覆铜结果。
|
||||||
|
|
||||||
|
输出通过项、失败项及尚未验证的内容并关联报告;制造交付规则见 [工程基准与交付](project-workflow.md)。
|
||||||
@@ -3,5 +3,5 @@
|
|||||||
"name": "playwright浏览器自动化操作",
|
"name": "playwright浏览器自动化操作",
|
||||||
"version": "20260605",
|
"version": "20260605",
|
||||||
"keySource": "none",
|
"keySource": "none",
|
||||||
"syncedAt": "2026-09-14T16:02:20Z"
|
"syncedAt": "2026-09-15T06:50:03Z"
|
||||||
}
|
}
|
||||||
@@ -2,8 +2,8 @@
|
|||||||
"sourceId": "next-skills",
|
"sourceId": "next-skills",
|
||||||
"repo": "https://github.com/vercel/next.js.git",
|
"repo": "https://github.com/vercel/next.js.git",
|
||||||
"ref": "canary",
|
"ref": "canary",
|
||||||
"commit": "3dc93da27e29048d601546ed610c903705f7fd6c",
|
"commit": "85e574a682254a835b9fbdb61530e555cd2d12c6",
|
||||||
"adapter": "skill-collection",
|
"adapter": "skill-collection",
|
||||||
"sourcePath": "skills",
|
"sourcePath": "skills",
|
||||||
"syncedAt": "2026-09-14T15:59:59Z"
|
"syncedAt": "2026-09-15T06:47:43Z"
|
||||||
}
|
}
|
||||||
@@ -2,8 +2,8 @@
|
|||||||
"sourceId": "ppt-master",
|
"sourceId": "ppt-master",
|
||||||
"repo": "https://github.com/hugohe3/ppt-master.git",
|
"repo": "https://github.com/hugohe3/ppt-master.git",
|
||||||
"ref": "main",
|
"ref": "main",
|
||||||
"commit": "c6ae4896da10497464ad7e87f5833bfc14321621",
|
"commit": "7879bbc811f86ed9e43df0053169d885cff942c7",
|
||||||
"adapter": "claude-skill",
|
"adapter": "claude-skill",
|
||||||
"sourcePath": "skills/ppt-master",
|
"sourcePath": "skills/ppt-master",
|
||||||
"syncedAt": "2026-09-14T15:59:59Z"
|
"syncedAt": "2026-09-15T06:47:43Z"
|
||||||
}
|
}
|
||||||
+1
-1
@@ -401,7 +401,7 @@ class NativeTableMixedRunAuditTests(unittest.TestCase):
|
|||||||
for script, *arguments in commands:
|
for script, *arguments in commands:
|
||||||
result = subprocess.run(
|
result = subprocess.run(
|
||||||
[sys.executable, "-B", str(scripts / script), *arguments],
|
[sys.executable, "-B", str(scripts / script), *arguments],
|
||||||
capture_output=True, text=True, check=False,
|
capture_output=True, text=True, encoding="utf-8", errors="replace", check=False,
|
||||||
)
|
)
|
||||||
results.append(result)
|
results.append(result)
|
||||||
for result in results[:2]:
|
for result in results[:2]:
|
||||||
|
|||||||
+1
-1
@@ -272,7 +272,7 @@ class IncrementalCalibrationTests(unittest.TestCase):
|
|||||||
result = subprocess.run(
|
result = subprocess.run(
|
||||||
[sys.executable, "-B", str(SCRIPTS_DIR / "text_measure.py"),
|
[sys.executable, "-B", str(SCRIPTS_DIR / "text_measure.py"),
|
||||||
"calibrate", str(project), *options],
|
"calibrate", str(project), *options],
|
||||||
capture_output=True, text=True, check=False,
|
capture_output=True, text=True, encoding="utf-8", errors="replace", check=False,
|
||||||
)
|
)
|
||||||
self.assertEqual(result.returncode, 0, result.stderr)
|
self.assertEqual(result.returncode, 0, result.stderr)
|
||||||
return result
|
return result
|
||||||
|
|||||||
+1
@@ -129,6 +129,7 @@ class PdfClauseAndScanTests(unittest.TestCase):
|
|||||||
|
|
||||||
class ImportSourcesProjectTreeTests(unittest.TestCase):
|
class ImportSourcesProjectTreeTests(unittest.TestCase):
|
||||||
def test_research_web_sources_dir_is_not_a_project(self) -> None:
|
def test_research_web_sources_dir_is_not_a_project(self) -> None:
|
||||||
|
PROJECTS_ROOT.mkdir(parents=True, exist_ok=True)
|
||||||
with tempfile.TemporaryDirectory(dir=PROJECTS_ROOT) as tmp:
|
with tempfile.TemporaryDirectory(dir=PROJECTS_ROOT) as tmp:
|
||||||
root = Path(tmp)
|
root = Path(tmp)
|
||||||
scratch = root.with_name(root.name + "_web_sources")
|
scratch = root.with_name(root.name + "_web_sources")
|
||||||
|
|||||||
+8
-4
@@ -120,6 +120,8 @@ class SliceImagesDiagnosticsTests(unittest.TestCase):
|
|||||||
],
|
],
|
||||||
capture_output=True,
|
capture_output=True,
|
||||||
text=True,
|
text=True,
|
||||||
|
encoding="utf-8",
|
||||||
|
errors="replace",
|
||||||
check=False,
|
check=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -163,6 +165,8 @@ class SliceImagesDiagnosticsTests(unittest.TestCase):
|
|||||||
],
|
],
|
||||||
capture_output=True,
|
capture_output=True,
|
||||||
text=True,
|
text=True,
|
||||||
|
encoding="utf-8",
|
||||||
|
errors="replace",
|
||||||
check=False,
|
check=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -203,7 +207,7 @@ class SliceImagesDiagnosticsTests(unittest.TestCase):
|
|||||||
"--bg", "#0000FF", "--inset", "0,0.06",
|
"--bg", "#0000FF", "--inset", "0,0.06",
|
||||||
"--output", str(output_dir),
|
"--output", str(output_dir),
|
||||||
],
|
],
|
||||||
capture_output=True, text=True, check=False,
|
capture_output=True, text=True, encoding="utf-8", errors="replace", check=False,
|
||||||
)
|
)
|
||||||
self.assertEqual(result.returncode, 0, result.stderr)
|
self.assertEqual(result.returncode, 0, result.stderr)
|
||||||
self.assertEqual(Image.open(output_dir / "a.png").size, (381, 33))
|
self.assertEqual(Image.open(output_dir / "a.png").size, (381, 33))
|
||||||
@@ -230,7 +234,7 @@ class SliceImagesDiagnosticsTests(unittest.TestCase):
|
|||||||
]
|
]
|
||||||
result = subprocess.run(
|
result = subprocess.run(
|
||||||
args + ["--bg", "#0000FF", "--tolerance", "62"],
|
args + ["--bg", "#0000FF", "--tolerance", "62"],
|
||||||
capture_output=True, text=True, check=False,
|
capture_output=True, text=True, encoding="utf-8", errors="replace", check=False,
|
||||||
)
|
)
|
||||||
self.assertEqual(result.returncode, 1)
|
self.assertEqual(result.returncode, 1)
|
||||||
self.assertIn("semi-transparent", result.stderr)
|
self.assertIn("semi-transparent", result.stderr)
|
||||||
@@ -239,7 +243,7 @@ class SliceImagesDiagnosticsTests(unittest.TestCase):
|
|||||||
|
|
||||||
result = subprocess.run(
|
result = subprocess.run(
|
||||||
args + ["--bg", "#034AF4", "--tolerance", "62"],
|
args + ["--bg", "#034AF4", "--tolerance", "62"],
|
||||||
capture_output=True, text=True, check=False,
|
capture_output=True, text=True, encoding="utf-8", errors="replace", check=False,
|
||||||
)
|
)
|
||||||
self.assertEqual(result.returncode, 0, result.stderr)
|
self.assertEqual(result.returncode, 0, result.stderr)
|
||||||
self.assertEqual(Image.open(output_dir / "mark.png").size, (41, 41))
|
self.assertEqual(Image.open(output_dir / "mark.png").size, (41, 41))
|
||||||
@@ -267,7 +271,7 @@ class SliceImagesDiagnosticsTests(unittest.TestCase):
|
|||||||
"--bg", "#0000FF", "--inset", "0.05",
|
"--bg", "#0000FF", "--inset", "0.05",
|
||||||
"--output", str(output_dir),
|
"--output", str(output_dir),
|
||||||
],
|
],
|
||||||
capture_output=True, text=True, check=False,
|
capture_output=True, text=True, encoding="utf-8", errors="replace", check=False,
|
||||||
)
|
)
|
||||||
self.assertEqual(result.returncode, 1)
|
self.assertEqual(result.returncode, 1)
|
||||||
self.assertIn("painted backing panel", result.stderr)
|
self.assertIn("painted backing panel", result.stderr)
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ def _run_cli(*args: str) -> subprocess.CompletedProcess[str]:
|
|||||||
[sys.executable, str(SCRIPT), *args],
|
[sys.executable, str(SCRIPT), *args],
|
||||||
capture_output=True,
|
capture_output=True,
|
||||||
text=True,
|
text=True,
|
||||||
|
encoding="utf-8",
|
||||||
|
errors="replace",
|
||||||
check=False,
|
check=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -113,6 +113,8 @@ class UpdateSpecNativeFallbackTests(unittest.TestCase):
|
|||||||
check=False,
|
check=False,
|
||||||
capture_output=True,
|
capture_output=True,
|
||||||
text=True,
|
text=True,
|
||||||
|
encoding="utf-8",
|
||||||
|
errors="replace",
|
||||||
)
|
)
|
||||||
self.assertEqual(dry_run.returncode, 0, dry_run.stderr)
|
self.assertEqual(dry_run.returncode, 0, dry_run.stderr)
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
@@ -132,6 +134,8 @@ class UpdateSpecNativeFallbackTests(unittest.TestCase):
|
|||||||
check=False,
|
check=False,
|
||||||
capture_output=True,
|
capture_output=True,
|
||||||
text=True,
|
text=True,
|
||||||
|
encoding="utf-8",
|
||||||
|
errors="replace",
|
||||||
)
|
)
|
||||||
self.assertEqual(update.returncode, 0, update.stderr)
|
self.assertEqual(update.returncode, 0, update.stderr)
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
@@ -157,6 +161,8 @@ class UpdateSpecNativeFallbackTests(unittest.TestCase):
|
|||||||
check=False,
|
check=False,
|
||||||
capture_output=True,
|
capture_output=True,
|
||||||
text=True,
|
text=True,
|
||||||
|
encoding="utf-8",
|
||||||
|
errors="replace",
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
checker.returncode,
|
checker.returncode,
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
"sourceId": "ui-ux-pro-max",
|
"sourceId": "ui-ux-pro-max",
|
||||||
"repo": "https://github.com/nextlevelbuilder/ui-ux-pro-max-skill.git",
|
"repo": "https://github.com/nextlevelbuilder/ui-ux-pro-max-skill.git",
|
||||||
"ref": "main",
|
"ref": "main",
|
||||||
"commit": "7f69fed6a2717900085f1bc3b263721f8ba025e2",
|
"commit": "d8ce090f82580c68f5471cc6dd3f56faf9a37afb",
|
||||||
"adapter": "claude-skill",
|
"adapter": "claude-skill",
|
||||||
"sourcePath": ".claude/skills/ui-ux-pro-max",
|
"sourcePath": ".claude/skills/ui-ux-pro-max",
|
||||||
"syncedAt": "2026-09-10T23:40:59Z"
|
"syncedAt": "2026-09-15T06:47:43Z"
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user