Files
Codex-Engineering-Skills/Zero-DevToolbox-Technical-Document.tex
T

597 lines
22 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
\documentclass[12pt,a4paper]{article}
% ============================================================
% 中文技术文档模板
% 建议在 Overleaf 中使用 XeLaTeX 编译
% ============================================================
\usepackage[UTF8]{ctex}
\usepackage[margin=2.5cm]{geometry}
\usepackage{titlesec}
\usepackage{fancyhdr}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{tabularx}
\usepackage{array}
\usepackage{enumitem}
\usepackage{tcolorbox}
\usepackage{setspace}
\usepackage{url}
\usepackage{hyperref}
\tcbuselibrary{skins,breakable}
% ============================================================
% 页面设置
% ============================================================
\geometry{
a4paper,
left=2.5cm,
right=2.5cm,
top=2.5cm,
bottom=2.5cm
}
\onehalfspacing
\setlength{\parindent}{2em}
\setlength{\parskip}{0.3em}
\setlength{\emergencystretch}{2em}
\setlist[itemize]{
itemsep=0.2em,
topsep=0.4em
}
\setlist[enumerate]{
itemsep=0.2em,
topsep=0.4em
}
\setcounter{tocdepth}{2}
\setcounter{secnumdepth}{3}
% ============================================================
% 文档信息占位符
% ============================================================
\newcommand{\doctitle}{Zero-DevToolbox 技术文档}
\newcommand{\docsubtitle}{通用、低耦合、跨项目复用的 AI 辅助开发 Skill 参考}
\newcommand{\projectname}{Zero-DevToolbox}
\newcommand{\docauthor}{项目组}
\newcommand{\docversion}{v1.0}
\newcommand{\docdescription}{本文档说明 Zero-DevToolbox 的项目定位、Skill 架构、主要工作流、安装方式、知识库机制、配套配置与已知限制。}
% ============================================================
% 颜色
% ============================================================
\definecolor{primaryblue}{RGB}{35,85,145}
\definecolor{secondaryblue}{RGB}{65,105,170}
\definecolor{codebg}{RGB}{247,248,250}
\definecolor{codeframe}{RGB}{205,210,218}
\definecolor{codegreen}{RGB}{40,130,80}
\definecolor{codegray}{RGB}{110,115,125}
\definecolor{codepurple}{RGB}{145,70,165}
\definecolor{warningorange}{RGB}{210,125,30}
\definecolor{softgray}{RGB}{245,245,245}
% ============================================================
% 页眉页脚
% ============================================================
\pagestyle{fancy}
\fancyhf{}
\fancyhead[L]{\small\doctitle}
\fancyhead[R]{\small\leftmark}
\fancyfoot[C]{\thepage}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0pt}
% ============================================================
% 标题格式
% ============================================================
\titleformat{\section}
{\Large\bfseries\color{primaryblue}}
{\thesection}
{1em}
{}
[\titlerule]
\titleformat{\subsection}
{\large\bfseries\color{secondaryblue}}
{\thesubsection}
{1em}
{}
\titleformat{\subsubsection}
{\normalsize\bfseries}
{\thesubsubsection}
{1em}
{}
% ============================================================
% 表格
% ============================================================
\newcolumntype{Y}{>{\raggedright\arraybackslash}X}
\renewcommand{\arraystretch}{1.25}
% ============================================================
% 代码样式
% ============================================================
\lstdefinestyle{codestyle}{
backgroundcolor=\color{codebg},
commentstyle=\color{codegreen},
keywordstyle=\color{primaryblue}\bfseries,
numberstyle=\tiny\color{codegray},
stringstyle=\color{codepurple},
basicstyle=\ttfamily\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=8pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=4,
frame=single,
rulecolor=\color{codeframe},
columns=fullflexible
}
\lstdefinestyle{commandstyle}{
backgroundcolor=\color{codebg},
basicstyle=\ttfamily\footnotesize,
breaklines=true,
frame=single,
rulecolor=\color{codeframe},
numbers=none,
columns=fullflexible
}
\lstdefinelanguage{json}{
basicstyle=\ttfamily\footnotesize,
string=[s]{}{},
stringstyle=\color{codepurple},
comment=[l]{//},
commentstyle=\color{codegreen},
keywords={true,false,null},
keywordstyle=\color{primaryblue}\bfseries
}
\lstset{style=codestyle}
% ============================================================
% 信息框
% ============================================================
\newtcolorbox{infobox}[2][]{
enhanced,
breakable,
colback=blue!4!white,
colframe=primaryblue,
fonttitle=\bfseries,
title={#2},
#1
}
\newtcolorbox{warningbox}[2][]{
enhanced,
breakable,
colback=orange!5!white,
colframe=warningorange,
fonttitle=\bfseries,
title={#2},
#1
}
\newtcolorbox{filebox}[2][]{
enhanced,
breakable,
colback=softgray,
colframe=gray!65!black,
fonttitle=\bfseries\ttfamily,
title={文件:#2},
#1
}
\newtcolorbox{functionbox}[2][]{
enhanced,
breakable,
colback=blue!2!white,
colframe=secondaryblue,
fonttitle=\bfseries\ttfamily,
title={函数:#2},
#1
}
\newtcolorbox{qabox}[2][]{
enhanced,
breakable,
colback=blue!4!white,
colframe=primaryblue,
fonttitle=\bfseries,
title={问题:#2},
#1
}
\newtcolorbox{answerbox}[1][]{
enhanced,
breakable,
colback=green!4!white,
colframe=green!55!black,
leftrule=4pt,
#1
}
% ============================================================
% 行内代码
% ============================================================
\newcommand{\code}[1]{\texttt{\detokenize{#1}}}
% ============================================================
% 超链接
% ============================================================
\hypersetup{
colorlinks=true,
linkcolor=primaryblue,
urlcolor=primaryblue,
citecolor=green!50!black,
bookmarks=true,
bookmarksnumbered=true,
pdftitle={\doctitle},
pdfauthor={\docauthor}
}
% ============================================================
% 文档正文
% ============================================================
\begin{document}
% ============================================================
% 封面
% ============================================================
\begin{titlepage}
\centering
\vspace*{2.8cm}
{\Huge\bfseries\color{primaryblue}\doctitle\par}
\vspace{0.7cm}
{\Large\docsubtitle\par}
\vspace{2cm}
\rule{\linewidth}{0.6mm}
\vspace{1cm}
\begin{tabular}{rl}
\textbf{项目或主题:} & \projectname \\[0.6em]
\textbf{作者:} & \docauthor \\[0.6em]
\textbf{日期:} & \today \\[0.6em]
\textbf{版本:} & \docversion
\end{tabular}
\vspace{1cm}
\rule{\linewidth}{0.6mm}
\vfill
\begin{minipage}{0.85\textwidth}
\centering
\small
\docdescription
\end{minipage}
\end{titlepage}
% ============================================================
% 目录
% ============================================================
\tableofcontents
\newpage
% ============================================================
% 正文占位符
% ============================================================
\section{文档概述}
本文档面向 Zero-DevToolbox 的使用者与维护者,基于当前工作树中的 README、Skill 定义、元数据、模板、Cursor 规则、ignore 模板、EditorConfig、许可证及 Git 信息整理。分析范围采用默认的 \code{scope=core},重点描述对外可复用的工作流、配置结构和使用路径。
\begin{infobox}{范围说明}
Zero-DevToolbox 是配置与文档资源仓库,不包含传统应用程序入口、业务类、运行时服务或公共 API。因此本文不虚构类图、函数签名、数据库结构、性能指标或部署流程,而是将 Skill 目录视为主要功能模块。
\end{infobox}
\section{项目简介}
Zero-DevToolbox 是一套简洁、通用、低耦合、可跨项目复用的 AI 辅助开发 Skill 集合。与绑定单一项目架构、框架或业务规则的 Skill 不同,本仓库提供可迁移的工作流定义;Skill 在执行时读取目标项目的代码、配置、测试、\code{AGENTS.md} 和文档,再确定具体操作。
当前仓库包含 9 个需要显式调用的工作流 Skill,主要解决以下开发问题:
\begin{itemize}
\item 代码注释不足、局部实现复杂以及重复代码逐渐累积;
\item 功能调用链、数据流、状态变化、单位和坐标系难以快速理解;
\item README 与真实代码或配置长期不同步;
\item Git 提交、提交信息生成和推送过程重复;
\item Codex 跨会话后容易丢失项目背景、决策、问题和进度;
\item 零散笔记或代码库知识缺少结构化技术文档。
\end{itemize}
\subsection{设计目标}
\begin{itemize}
\item \textbf{低耦合:}不写死目标项目的模块、框架、数据模型或业务逻辑。
\item \textbf{可迁移:}可以复制整套 \code{.agents/skills/},也可以只复制单个 Skill 目录。
\item \textbf{职责单一:}每个 Skill 聚焦一个明确工作流,并通过显式调用启动。
\item \textbf{安全可验证:}Skill 定义中包含范围控制、已有改动保护和结果验证规则。
\item \textbf{上下文连续:}通过结构化、可版本管理的项目知识库保存长期有效信息。
\end{itemize}
\section{技术栈与运行环境}
\begin{longtable}{p{0.23\textwidth}p{0.67\textwidth}}
\toprule
\textbf{组成} & \textbf{用途} \\
\midrule
Markdown & 保存 Skill 主指令、README 和工作流参考文档。 \\
YAML & \code{agents/openai.yaml} 保存显示名称、默认提示词和调用策略。 \\
LaTeX & 提供可直接上传 Overleaf 的中文技术文档模板。 \\
Cursor MDC & \code{.cursor/rules/karpathy-guidelines.mdc} 保存始终应用的编码行为规则。 \\
EditorConfig & 统一字符编码、换行、缩进和行尾空格行为。 \\
Git & 获取仓库状态,也是 \texttt{\$commit} 工作流的基础。 \\
\bottomrule
\end{longtable}
仓库自身没有包管理器、运行时依赖清单、编译脚本或自动测试入口。使用 Skill 需要一个能够从 \code{.agents/skills/} 发现项目级 Skill 的 AI 编码工具。生成的 LaTeX 文档默认面向 Overleaf 的 XeLaTeX 编译器。
\section{目录结构}
\begin{lstlisting}[style=commandstyle]
Zero-DevToolbox/
|-- .agents/
| `-- skills/
| |-- add-code-comments/
| |-- commit/
| |-- generate-latex-document/
| | |-- agents/openai.yaml
| | |-- assets/document-template.tex
| | |-- references/codebase-workflow.md
| | |-- references/notes-workflow.md
| | `-- SKILL.md
| |-- init-project-knowledge/
| |-- optimize-target-code/
| |-- readme/
| |-- reduce-code-redundancy/
| |-- trace-code-flow/
| `-- update-project-knowledge/
|-- .cursor/rules/karpathy-guidelines.mdc
|-- ignore/
| |-- .gitignore
| |-- .claudeignore
| `-- .cursorignore
|-- .editorconfig
|-- LICENSE
|-- README.md
`-- README_zh.md
\end{lstlisting}
\code{generate-latex-document} 外,当前各 Skill 的核心结构是 \code{SKILL.md}\code{agents/openai.yaml}\code{generate-latex-document} 额外包含模板以及笔记整理、代码库说明两套工作流参考。
\section{总体架构}
\subsection{分层组成}
\begin{enumerate}
\item \textbf{发现与交互层:}\code{agents/openai.yaml} 提供显示名称、简短说明和默认提示词;所有现有 Skill 都设置 \code{allow_implicit_invocation: false}
\item \textbf{工作流定义层:}\code{SKILL.md} 描述适用场景、执行步骤、范围边界、安全规则和完成报告。
\item \textbf{可选资源层:}复杂 Skill 可以通过 \code{references/} 拆分专项工作流,通过 \code{assets/} 保存可复用模板。
\item \textbf{目标项目层:}Skill 被复制到目标仓库后,根据该项目的真实代码、配置、测试、Git 状态和文档执行。
\item \textbf{配套规则层:}Cursor 规则、ignore 模板和 EditorConfig 为编码行为、上下文过滤和格式统一提供补充支持。
\end{enumerate}
\subsection{典型执行流程}
\begin{enumerate}
\item 将完整 Skill 集合或选定目录复制到目标项目的 \code{.agents/skills/}
\item 在 AI 编码会话中使用 \texttt{\$skill-name} 显式调用所需工作流。
\item Skill 读取目标项目适用的 \code{AGENTS.md}、相关代码、配置、测试和文档。
\item Skill 确定处理范围,并避开第三方依赖、生成文件、缓存、日志和无关模块。
\item 根据用户要求执行只读分析或小范围修改。
\item 运行与风险相称的检查,并报告已验证结果、未验证内容及原有工作区改动。
\end{enumerate}
\begin{warningbox}{显式调用}
现有 9 个 Skill 均禁用隐式调用。自然语言任务不会自动授权这些工作流;使用者需要明确写出对应的 \texttt{\$skill-name}
\end{warningbox}
\section{Skill 模块参考}
\begin{longtable}{p{0.27\textwidth}p{0.63\textwidth}}
\toprule
\textbf{Skill} & \textbf{核心职责} \\
\midrule
\texttt{\$add-code-comments} & 为用户指定的代码补充简洁、准确的变量和函数注释,并整理局部多余空行;只允许修改注释和空白格式,主要适用于支持 \code{//} 注释的语言。 \\
\texttt{\$commit} & 检查 Git 工作区、暂存区、分支和远端,生成符合仓库风格的提交信息,并完成暂存、提交和推送。 \\
\texttt{\$generate-latex-document} & 使用内置模板,将零散资料整理为技术文档,或分析代码库生成结构化说明;只输出独立的 \code{.tex} 文件。 \\
\texttt{\$init-project-knowledge} & 首次分析现有项目,创建或完善 \code{AGENTS.md} 和结构化项目知识库,并使用真实代码与资料进行初步填充。 \\
\texttt{\$optimize-target-code} & 优化指定函数、类、文件或小范围功能,关注效率、复杂度、数值稳定性、健壮性和可读性,并保持外部行为。 \\
\texttt{\$readme} & 根据真实代码、配置、脚本和文档,同步创建、检查或更新英文 \code{README.md} 与中文 \code{README_zh.md}\\
\texttt{\$reduce-code-redundancy} & 审计重复实现、未使用代码、冗余文件和分散工具;只清理证据充分且能够验证的候选项。 \\
\texttt{\$trace-code-flow} & 只读追踪指定功能从入口到输出的调用链、数据流、状态变化、外部交互、单位和坐标系。 \\
\texttt{\$update-project-knowledge} & 检查已完成工作,仅在产生经过确认且长期有效的信息时更新已有项目知识库。 \\
\bottomrule
\end{longtable}
\subsection{代码维护类工作流}
\texttt{\$add-code-comments}\texttt{\$optimize-target-code}\texttt{\$reduce-code-redundancy} 共同覆盖可读性、局部实现质量与仓库级冗余治理。它们都强调限定范围、保留外部行为、避免顺带重构,并保护执行前已经存在的用户改动。
冗余清理支持 \code{mode=audit}(只分析)、\code{mode=apply}(清理已确认候选项)以及默认的“先审计、后确认”模式。
\subsection{理解与文档类工作流}
\texttt{\$trace-code-flow} 用于建立从入口到输出的代码理解,重点区分接口、实现、调用者、动态路径、状态、副作用和数值约定。\texttt{\$readme} 将项目事实同步到中英文入口文档。\texttt{\$generate-latex-document} 则将笔记或代码库整理成适合交付的技术文档。
\subsection{Git 交付工作流}
\texttt{\$commit} 会检查未暂存与已暂存差异、近期提交风格、当前分支和远端信息。其目标是根据实际 diff 生成提交信息,并安全完成提交和推送,而不是盲目提交整个工作区。
\section{项目知识库与上下文连续性}
\subsection{初始化}
\texttt{\$init-project-knowledge} 面向首次建立知识库的场景。它会检查现有 \code{AGENTS.md}、文档索引和已有知识文档,优先复用现有结构;缺少明确约定时,默认使用项目根目录下的 \code{docs/}
知识库可以包含项目概览、架构、接口、技术决策、问题记录和当前进度。其目标是形成轻量、结构化、可版本管理、适合 Codex 长期使用的项目上下文。
\subsection{日常更新}
\texttt{\$update-project-knowledge} 只更新已有知识库,不擅自创建新结构。它根据当前任务、Git 差异和验证结果,记录以后仍然有用的确认信息;普通聊天、临时想法、未验证猜测和冗长日志不会写入。
\subsection{解决的问题}
这两个 Skill 形成“首次建立、按需维护”的生命周期,减少跨会话时项目目标、架构、接口、决策、已知问题和进度信息的丢失。这里的“知识库”是保存在项目文档中的版本化知识集合,不是数据库服务,也不引入额外运行时依赖。
\section{LaTeX 文档生成模块}
\subsection{工作模式}
\begin{itemize}
\item \textbf{笔记整理模式:}处理 Markdown、TXT、会议记录、学习笔记及其他零散资料。
\item \textbf{代码库说明模式:}分析项目入口、核心模块、公共接口、配置、测试和主要流程。
\end{itemize}
两种模式分别读取 \code{references/notes-workflow.md}\code{references/codebase-workflow.md}。除非用户明确要求混合生成,否则一次只使用一个工作流。
\subsection{模板与输出}
\code{assets/document-template.tex} 提供 A4 页面、中文排版、页眉页脚、目录、代码块、表格和信息框样式。生成结果需要替换标题、副标题、项目名、作者、版本、封面说明和正文占位符,输出为不依赖 Skill 目录的完整 \code{.tex} 文件。
工作流不调用本地 LaTeX、XeLaTeX 或 \code{latexmk},也不生成 PDF。结果默认上传 Overleaf 后使用 XeLaTeX 编译。
\section{安装与使用}
\subsection{克隆仓库}
\begin{lstlisting}[style=commandstyle]
git clone https://github.com/DreamCasterZero/Zero-DevToolbox.git
\end{lstlisting}
\subsection{复制全部 Skill}
macOS 或 Linux
\begin{lstlisting}[style=commandstyle]
mkdir -p /path/to/your-project/.agents
cp -R Zero-DevToolbox/.agents/skills /path/to/your-project/.agents/
\end{lstlisting}
PowerShell
\begin{lstlisting}[style=commandstyle]
New-Item -ItemType Directory -Force C:\path\to\your-project\.agents
Copy-Item -Recurse Zero-DevToolbox\.agents\skills C:\path\to\your-project\.agents\
\end{lstlisting}
\subsection{调用示例}
\begin{lstlisting}[style=commandstyle]
$trace-code-flow trace the checkout flow from entry to output.
$reduce-code-redundancy mode=audit
$init-project-knowledge analyze this repository and build its knowledge base.
$readme synchronize the English and Chinese READMEs.
\end{lstlisting}
\section{配套配置}
\subsection{Cursor 行为规则}
\code{.cursor/rules/karpathy-guidelines.mdc} 设置为 \code{alwaysApply: true},要求编码前明确假设与权衡、优先使用最简单方案、只进行必要修改,以及用可验证目标驱动执行。
\subsection{Ignore 模板}
\code{ignore/} 提供 \code{.gitignore}\code{.claudeignore}\code{.cursorignore}。规则覆盖密钥、依赖目录、构建和测试产物、日志、临时文件、数据库、媒体、IDE 元数据及工具缓存。
\begin{warningbox}{复制前检查}
默认 ignore 模板会排除锁文件和图片等内容,而部分项目应提交这些文件。复制后需要根据目标项目的版本控制策略检查并调整。
\end{warningbox}
\subsection{EditorConfig}
\code{.editorconfig} 使用 UTF-8 和 LF,要求文件末尾换行,并为 Python、Web 与配置文件、Markdown、Makefile 和 Shell 脚本定义缩进及行尾空格策略。
\section{构建、运行与测试}
Zero-DevToolbox 不包含可执行应用、包管理配置或自动测试脚本,因此不存在仓库级依赖安装、构建、启动和测试命令。文档中的复制命令来自当前 README;本次生成没有实际复制到其他项目,也没有执行网络克隆。
生成的本文档应上传 Overleaf,并选择 XeLaTeX 编译器。按照 Skill 约束,本次没有检查本地 LaTeX 环境,也没有执行编译或生成 PDF。
\section{常见问题}
\begin{qabox}{可以只复制一个 Skill 吗?}
\end{qabox}
\begin{answerbox}
可以。每个 Skill 位于独立目录;复制时应保留其中的 \code{SKILL.md}\code{agents/openai.yaml} 以及该 Skill 自带的 \code{assets/}\code{references/}
\end{answerbox}
\begin{qabox}{为什么 Skill 不会自动触发?}
\end{qabox}
\begin{answerbox}
当前所有 \code{agents/openai.yaml} 都设置 \code{allow_implicit_invocation: false},使分析、修改、提交和知识库维护等工作流只能在用户明确授权后执行。
\end{answerbox}
\begin{qabox}{项目知识库是不是数据库?}
\end{qabox}
\begin{answerbox}
不是。它是由 \code{AGENTS.md}、文档索引及结构化 Markdown 文档组成的版本化知识集合,用于保存长期有效的项目上下文。
\end{answerbox}
\begin{qabox}{为什么没有类与函数参考?}
\end{qabox}
\begin{answerbox}
当前仓库以 Markdown、YAML、MDC 和 LaTeX 资源为主,不包含传统业务源码、类或公共函数,因此本文按 Skill 模块和工作流进行说明。
\end{answerbox}
\section{已知限制}
\begin{itemize}
\item 实际可用性取决于宿主 AI 编码工具是否支持从 \code{.agents/skills/} 发现项目级 Skill。
\item \texttt{\$add-code-comments} 主要面向支持 \code{//} 注释的语言。
\item \texttt{\$generate-latex-document} 只生成 \code{.tex},不负责本地编译、PDF 生成或 Overleaf 上传。
\item 仓库没有自动化测试来验证 Skill 在不同宿主工具、操作系统和目标项目中的行为。
\item 当前工作树包含尚未提交的配置迁移和 README 修改;本文描述当前文件状态,而不是最近一次提交的完整快照。
\end{itemize}
\section{许可证与来源}
项目采用 MIT License,版权信息为 Copyright (c) 2026 DreamCasterZero。远端仓库地址为:
\begin{center}
\url{https://github.com/DreamCasterZero/Zero-DevToolbox}
\end{center}
本文内容依据当前仓库文件生成,未使用外部资料,也未推断未获支持的版本、性能或兼容性结论。
\end{document}