{"id":6974,"date":"2026-05-23T10:40:13","date_gmt":"2026-05-23T02:40:13","guid":{"rendered":"https:\/\/nullthought.net\/?p=6974"},"modified":"2026-05-23T10:40:15","modified_gmt":"2026-05-23T02:40:15","slug":"%e4%bd%bf%e7%94%a8openai-codex%e8%bf%87%e7%a8%8b%e4%b8%ad%ef%bc%8c%e5%a6%82%e4%bd%95%e5%88%9b%e5%bb%ba%e3%80%81%e7%bb%b4%e6%8a%a4%e5%b9%b6%e6%9c%89%e6%95%88%e5%88%a9%e7%94%a8agents-md%e5%92%8cskill-md","status":"publish","type":"post","link":"https:\/\/nullthought.net\/?p=6974","title":{"rendered":"\u4f7f\u7528OpenAI Codex\u8fc7\u7a0b\u4e2d\uff0c\u5982\u4f55\u521b\u5efa\u3001\u7ef4\u62a4\u5e76\u6709\u6548\u5229\u7528AGENTS.md\u548cSKILL.md\uff1f"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u4e0b\u9762\u6309\u201c<strong>AGENTS.md \u4e0e SKILL.md \u600e\u4e48\u5206\u5de5 \u2192 \u5982\u4f55\u521b\u5efa \u2192 \u5982\u4f55\u7ef4\u62a4 \u2192 \u5982\u4f55\u6709\u6548\u4f7f\u7528<\/strong>\u201d\u6765\u8bb2\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1. \u5148\u5206\u6e05\uff1aAGENTS.md \u548c SKILL.md \u4e0d\u662f\u4e00\u56de\u4e8b<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728 Codex \u91cc\uff0c<strong>AGENTS.md \u66f4\u50cf\u9879\u76ee\u7ea7\u957f\u671f\u89c4\u5219<\/strong>\uff0c\u4f8b\u5982\uff1a\u9879\u76ee\u7ed3\u6784\u3001\u6784\u5efa\u547d\u4ee4\u3001\u6d4b\u8bd5\u547d\u4ee4\u3001\u4ee3\u7801\u98ce\u683c\u3001\u7981\u6b62\u4e8b\u9879\u3001\u76ee\u5f55\u8bf4\u660e\u3002Codex \u542f\u52a8\u65f6\u4f1a\u8bfb\u53d6\u8fd9\u4e9b\u6307\u5bfc\u6587\u4ef6\uff0c\u5e76\u6309\u5168\u5c40\u3001\u9879\u76ee\u3001\u5b50\u76ee\u5f55\u5c42\u7ea7\u5408\u5e76\uff1b\u8d8a\u9760\u8fd1\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\u7684\u6307\u5bfc\u8d8a\u9760\u540e\u51fa\u73b0\uff0c\u56e0\u800c\u66f4\u5bb9\u6613\u8986\u76d6\u524d\u9762\u7684\u89c4\u5219\u3002\u5b98\u65b9\u6587\u6863\u8fd8\u8bf4\u660e\uff0c<code>AGENTS.md<\/code> \u9ed8\u8ba4\u8bfb\u53d6\u5927\u5c0f\u4e0a\u9650\u662f 32 KiB\uff0c\u53ef\u901a\u8fc7\u914d\u7f6e\u9879\u8c03\u6574\u3002(<a href=\"https:\/\/developers.openai.com\/codex\/guides\/agents-md\">OpenAI \u5f00\u53d1\u8005<\/a>)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u800c <strong>SKILL.md \u66f4\u50cf\u4e00\u4e2a\u53ef\u590d\u7528\u7684\u201c\u4e13\u9879\u5de5\u4f5c\u6d41\u201d<\/strong>\uff0c\u9002\u5408\u5c01\u88c5\u67d0\u4e00\u7c7b\u91cd\u590d\u4efb\u52a1\uff0c\u4f8b\u5982\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u201cQt6\/CMake \u6784\u5efa\u9519\u8bef\u8bca\u65ad\u201d<\/li>\n\n\n\n<li>\u201c\u6a21\u578b\u53d1\u5e03\u5305\u68c0\u67e5\u201d<\/li>\n\n\n\n<li>\u201c\u4ee3\u7801\u5ba1\u67e5\u6d41\u7a0b\u201d<\/li>\n\n\n\n<li>\u201cVue + Three.js shader \u8c03\u8bd5\u6d41\u7a0b\u201d<\/li>\n\n\n\n<li>\u201cSQLite \u6570\u636e\u5e93\u8fc1\u79fb\u68c0\u67e5\u201d<\/li>\n\n\n\n<li>\u201cPython \u7279\u5f81\u63d0\u53d6\u811a\u672c\u751f\u6210\u4e0e\u9a8c\u8bc1\u201d<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b98\u65b9\u6587\u6863\u8bf4\uff0c\u4e00\u4e2a skill \u662f\u4e00\u4e2a\u76ee\u5f55\uff0c\u91cc\u9762\u5fc5\u987b\u6709 <code>SKILL.md<\/code>\uff0c\u4e5f\u53ef\u4ee5\u9644\u5e26 <code>scripts\/<\/code>\u3001<code>references\/<\/code>\u3001<code>assets\/<\/code> \u7b49\u8d44\u6e90\uff1bCodex \u53ea\u5728\u51b3\u5b9a\u4f7f\u7528\u67d0\u4e2a skill \u65f6\u624d\u8bfb\u53d6\u5b8c\u6574\u7684 <code>SKILL.md<\/code>\uff0c\u5e73\u65f6\u53ea\u628a skill \u7684\u540d\u79f0\u3001\u63cf\u8ff0\u548c\u8def\u5f84\u653e\u5165\u4e0a\u4e0b\u6587\u4e2d\uff0c\u7528\u8fd9\u79cd\u201c\u6e10\u8fdb\u62ab\u9732\u201d\u65b9\u5f0f\u8282\u7701\u4e0a\u4e0b\u6587\u3002(<a href=\"https:\/\/developers.openai.com\/codex\/skills\">OpenAI \u5f00\u53d1\u8005<\/a>)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6240\u4ee5\u6211\u7684\u5efa\u8bae\u662f\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>AGENTS.md \u653e\u201c\u8fd9\u4e2a\u4ed3\u5e93\u4e00\u76f4\u6709\u6548\u7684\u89c4\u5219\u201d\uff1bSKILL.md \u653e\u201c\u67d0\u7c7b\u4efb\u52a1\u7684\u56fa\u5b9a\u64cd\u4f5c\u6d41\u7a0b\u201d\u3002<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">2. \u63a8\u8350\u76ee\u5f55\u7ed3\u6784<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u9879\u76ee\u4ed3\u5e93\u5185\uff0c\u5efa\u8bae\u8fd9\u6837\u653e\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>your-project\/\n\u251c\u2500\u2500 AGENTS.md\n\u251c\u2500\u2500 .agents\/\n\u2502   \u2514\u2500\u2500 skills\/\n\u2502       \u251c\u2500\u2500 qt6-cmake-diagnosis\/\n\u2502       \u2502   \u251c\u2500\u2500 SKILL.md\n\u2502       \u2502   \u251c\u2500\u2500 references\/\n\u2502       \u2502   \u2502   \u2514\u2500\u2500 qt6-build-notes.md\n\u2502       \u2502   \u2514\u2500\u2500 scripts\/\n\u2502       \u2502       \u2514\u2500\u2500 collect_build_info.sh\n\u2502       \u2502\n\u2502       \u251c\u2500\u2500 model-release-check\/\n\u2502       \u2502   \u251c\u2500\u2500 SKILL.md\n\u2502       \u2502   \u2514\u2500\u2500 scripts\/\n\u2502       \u2502       \u2514\u2500\u2500 validate_model_release.py\n\u2502       \u2502\n\u2502       \u2514\u2500\u2500 sqlite-migration-review\/\n\u2502           \u2514\u2500\u2500 SKILL.md\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Codex \u5b98\u65b9\u6587\u6863\u8bf4\u660e\uff0c\u4ed3\u5e93\u5185 skill \u901a\u5e38\u653e\u5728 <code>.agents\/skills<\/code> \u4e2d\uff0cCodex \u4f1a\u4ece\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\u5411\u4e0a\u626b\u63cf\u5230\u4ed3\u5e93\u6839\u76ee\u5f55\uff1b\u7528\u6237\u7ea7 skill \u53ef\u4ee5\u653e\u5728 <code>$HOME\/.agents\/skills<\/code>\uff0c\u673a\u5668\u6216\u5bb9\u5668\u7ea7 skill \u53ef\u4ee5\u653e\u5728 <code>\/etc\/codex\/skills<\/code>\u3002(<a href=\"https:\/\/developers.openai.com\/codex\/skills\">OpenAI \u5f00\u53d1\u8005<\/a>)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f7f\u7528\u539f\u5219\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u9879\u76ee\u4e13\u7528 skill<\/strong>\uff1a\u653e\u5728\u4ed3\u5e93 <code>.agents\/skills\/<\/code><\/li>\n\n\n\n<li><strong>\u4e2a\u4eba\u957f\u671f\u590d\u7528 skill<\/strong>\uff1a\u653e\u5728 <code>$HOME\/.agents\/skills\/<\/code><\/li>\n\n\n\n<li><strong>\u56e2\u961f\/\u670d\u52a1\u5668\/\u5bb9\u5668\u901a\u7528 skill<\/strong>\uff1a\u653e\u5728 <code>\/etc\/codex\/skills\/<\/code><\/li>\n\n\n\n<li><strong>\u7279\u522b\u590d\u6742\u3001\u591a\u4eba\u5206\u53d1\u7684 skill<\/strong>\uff1a\u540e\u7eed\u53ef\u4ee5\u8003\u8651\u6253\u5305\u6210 Codex plugin\uff1b\u5b98\u65b9\u6587\u6863\u4e5f\u5efa\u8bae\uff0c\u53ef\u590d\u7528\u5206\u53d1\u65f6\u4f18\u5148\u8003\u8651 plugin\u3002(<a href=\"https:\/\/developers.openai.com\/codex\/skills\">OpenAI \u5f00\u53d1\u8005<\/a>)<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">3. SKILL.md \u7684\u6700\u5c0f\u53ef\u7528\u6a21\u677f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u6bcf\u4e2a <code>SKILL.md<\/code> \u81f3\u5c11\u9700\u8981 <code>name<\/code> \u548c <code>description<\/code>\u3002\u5b98\u65b9\u7ed9\u51fa\u7684\u57fa\u7840\u683c\u5f0f\u5c31\u662f YAML front matter \u52a0\u6b63\u6587\u8bf4\u660e\u3002(<a href=\"https:\/\/developers.openai.com\/codex\/skills\">OpenAI \u5f00\u53d1\u8005<\/a>)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\nname: qt6-cmake-diagnosis\ndescription: Diagnose and fix Qt6\/CMake build errors in C++\/Qt projects, especially missing Qt modules, wrong include paths, linker errors, and Linux\/WSL\/aarch64 dependency issues. Do not use for non-Qt projects.\n---\n\n# Purpose\n\nUse this skill when the task is to diagnose, fix, or explain Qt6\/CMake build failures.\n\n# Inputs Codex should inspect\n\n- CMakeLists.txt\n- build logs\n- compiler errors\n- linker errors\n- package names and OS version\n- source files mentioned in the error\n- AGENTS.md project rules\n\n# Workflow\n\n1. Identify the exact failing phase:\n   - dependency discovery\n   - compilation\n   - linking\n   - runtime dynamic library loading\n   - QML\/module loading\n\n2. Extract the first real error.\n   Do not focus on later cascading errors until the first root error is understood.\n\n3. Check Qt module usage:\n   - Widgets\n   - Charts\n   - SerialPort\n   - Sql\n   - Quick\/QML\n   - VirtualKeyboard\n\n4. Check CMake configuration:\n   - find_package(Qt6 REQUIRED COMPONENTS ...)\n   - target_link_libraries(...)\n   - include usage\n   - AUTOMOC\/AUTORCC\/AUTOUIC settings\n\n5. For Linux dependency problems, distinguish:\n   - development package missing\n   - runtime library missing\n   - QML module missing\n   - architecture mismatch\n   - distribution package unavailable\n\n6. Propose the smallest safe patch first.\n\n7. After patching, run the relevant build command.\n\n# Output format\n\nReturn:\n\n- Root cause\n- Files changed\n- Exact patch summary\n- Commands run\n- Remaining risks\n- Next recommended check\n\n# Constraints\n\n- Do not rewrite unrelated project structure.\n- Do not introduce new dependencies unless necessary.\n- Prefer minimal, reviewable patches.\n- Preserve existing CMake style unless it is clearly wrong.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">4. description \u5f88\u5173\u952e\uff1a\u5b83\u51b3\u5b9a Codex \u4f1a\u4e0d\u4f1a\u81ea\u52a8\u7528\u8fd9\u4e2a skill<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Codex \u53ef\u4ee5\u901a\u8fc7\u4e24\u79cd\u65b9\u5f0f\u542f\u7528 skill\uff1a\u4e00\u79cd\u662f\u663e\u5f0f\u8c03\u7528\uff0c\u6bd4\u5982\u5728 CLI\/IDE \u91cc\u901a\u8fc7 <code>\/skills<\/code> \u6216 <code>$skill-name<\/code> \u6307\u5b9a\uff1b\u53e6\u4e00\u79cd\u662f\u9690\u5f0f\u8c03\u7528\uff0c\u4e5f\u5c31\u662f Codex \u6839\u636e\u4efb\u52a1\u548c <code>description<\/code> \u5224\u65ad\u662f\u5426\u8be5\u7528\u8fd9\u4e2a skill\u3002\u5b98\u65b9\u7279\u522b\u5f3a\u8c03\uff0c\u9690\u5f0f\u5339\u914d\u4f9d\u8d56 <code>description<\/code>\uff0c\u6240\u4ee5\u63cf\u8ff0\u8981\u7b80\u6d01\u3001\u8303\u56f4\u660e\u786e\uff0c\u5e76\u628a\u5173\u952e\u89e6\u53d1\u8bcd\u653e\u524d\u9762\u3002(<a href=\"https:\/\/developers.openai.com\/codex\/skills\">OpenAI \u5f00\u53d1\u8005<\/a>)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0d\u597d\u7684 description\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>description: Help with this project.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u592a\u6cdb\uff0cCodex \u4e0d\u77e5\u9053\u4ec0\u4e48\u65f6\u5019\u7528\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8f83\u597d\u7684 description\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>description: Diagnose and fix Qt6\/CMake build errors in C++\/Qt projects, especially missing Qt modules, wrong include paths, linker errors, and Linux\/WSL\/aarch64 dependency issues. Do not use for Python-only or frontend-only projects.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u66f4\u597d\uff0c\u56e0\u4e3a\u5b83\u8bf4\u660e\u4e86\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9002\u7528\u4efb\u52a1\uff1aQt6\/CMake \u6784\u5efa\u9519\u8bef<\/li>\n\n\n\n<li>\u5178\u578b\u89e6\u53d1\u8bcd\uff1aQt6\u3001CMake\u3001missing Qt modules\u3001linker errors\u3001WSL\u3001aarch64<\/li>\n\n\n\n<li>\u4e0d\u9002\u7528\u573a\u666f\uff1aPython-only\u3001frontend-only<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">5. \u4e00\u4e2a\u597d\u7684 SKILL.md \u5e94\u5305\u542b\u54ea\u4e9b\u90e8\u5206\uff1f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u5efa\u8bae\u91c7\u7528\u8fd9\u4e2a\u7ed3\u6784\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\nname: short-kebab-case-name\ndescription: Clear trigger condition, core task, key keywords, and when not to use this skill.\n---\n\n# Purpose\n\n\u8fd9\u4e2a skill \u89e3\u51b3\u4ec0\u4e48\u95ee\u9898\u3002\n\n# When to use\n\n\u660e\u786e\u9002\u7528\u573a\u666f\u3002\n\n# When not to use\n\n\u660e\u786e\u4e0d\u9002\u7528\u573a\u666f\u3002\n\n# Inputs to inspect\n\nCodex \u5e94\u8be5\u4f18\u5148\u8bfb\u53d6\u54ea\u4e9b\u6587\u4ef6\u3001\u65e5\u5fd7\u3001\u76ee\u5f55\u3001\u914d\u7f6e\u3002\n\n# Workflow\n\n\u6309\u6b65\u9aa4\u63cf\u8ff0\u64cd\u4f5c\u6d41\u7a0b\u3002\n\n# Validation\n\n\u4fee\u6539\u540e\u5fc5\u987b\u8fd0\u884c\u54ea\u4e9b\u68c0\u67e5\u3002\n\n# Output format\n\n\u6700\u7ec8\u56de\u590d\u5e94\u8be5\u5305\u542b\u54ea\u4e9b\u5185\u5bb9\u3002\n\n# Constraints\n\n\u7981\u6b62\u4e8b\u9879\u3001\u8fb9\u754c\u6761\u4ef6\u3001\u5b89\u5168\u8981\u6c42\u3002\n\n# Common mistakes\n\n\u5e38\u89c1\u8bef\u5224\u3001\u5386\u53f2\u8e29\u5751\u3002\n\n# References\n\n\u9700\u8981\u65f6\u8ba9 Codex \u9605\u8bfb references\/ \u4e0b\u7684\u6587\u6863\u3002\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5c24\u5176\u5efa\u8bae\u52a0\u4e0a <strong>When not to use<\/strong>\u3002\u5f88\u591a\u4eba\u53ea\u5199\u201c\u4ec0\u4e48\u65f6\u5019\u7528\u201d\uff0c\u4f46\u4e0d\u5199\u201c\u4ec0\u4e48\u65f6\u5019\u4e0d\u7528\u201d\uff0c\u7ed3\u679c Codex \u53ef\u80fd\u5728\u4e0d\u76f8\u5173\u4efb\u52a1\u91cc\u8bef\u89e6\u53d1 skill\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">6. \u4ec0\u4e48\u65f6\u5019\u8be5\u5199 skill\uff1f\u4ec0\u4e48\u65f6\u5019\u4e0d\u8be5\u5199\uff1f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u9002\u5408\u5199\u6210 skill \u7684\u4efb\u52a1\u6709\u4e09\u4e2a\u7279\u5f81\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e00\uff0c<strong>\u91cd\u590d\u51fa\u73b0<\/strong>\u3002\u4f8b\u5982\u6784\u5efa\u8bca\u65ad\u3001\u53d1\u5e03\u68c0\u67e5\u3001\u4ee3\u7801\u5ba1\u67e5\u3001\u6570\u636e\u5904\u7406\u3001\u6a21\u578b\u8bad\u7ec3\u9a8c\u8bc1\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e8c\uff0c<strong>\u6d41\u7a0b\u76f8\u5bf9\u56fa\u5b9a<\/strong>\u3002\u6bd4\u5982\u201c\u5148\u770b\u65e5\u5fd7\uff0c\u518d\u770b CMakeLists\uff0c\u518d\u68c0\u67e5\u5305\u540d\uff0c\u518d\u8fd0\u884c\u6784\u5efa\u201d\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e09\uff0c<strong>\u9700\u8981\u9879\u76ee\u7ecf\u9a8c\u6c89\u6dc0<\/strong>\u3002\u4f8b\u5982\u5728\u9879\u76ee\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u8e29\u8fc7\u7684\u5751\uff0c\u6216\u8005\u9879\u76ee\u4e2d\u7684\u4e00\u81f4\u6027\u8981\u6c42\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0d\u9002\u5408\u5199\u6210 skill \u7684\u5185\u5bb9\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4e00\u6b21\u6027\u4efb\u52a1<\/li>\n\n\n\n<li>\u4e34\u65f6\u504f\u597d<\/li>\n\n\n\n<li>\u592a\u6cdb\u7684\u89c4\u5219<\/li>\n\n\n\n<li>\u5927\u6bb5\u9879\u76ee\u80cc\u666f<\/li>\n\n\n\n<li>\u654f\u611f\u5bc6\u94a5\u3001\u8d26\u53f7\u3001token<\/li>\n\n\n\n<li>\u53ef\u4ee5\u653e\u5728 AGENTS.md \u7684\u957f\u671f\u9879\u76ee\u89c4\u8303<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">7. AGENTS.md \u4e0e SKILL.md \u7684\u63a8\u8350\u914d\u5408\u65b9\u5f0f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><code>AGENTS.md<\/code> \u53ef\u4ee5\u5199\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Project instructions\n\n## Build\n\n- Main build command: .\/scripts\/dev-run.sh\n- Use CMake.\n- Target runtime includes Ubuntu\/Debian Linux and arm64 devices.\n- Development may happen in WSL.\n\n## Skills\n\nUse the following skills when appropriate:\n\n- $qt6-cmake-diagnosis for Qt6\/CMake build failures.\n- $model-release-check for checking model-release-* directories.\n- $sqlite-migration-review for SQLite schema migration or data compatibility changes.\n\n## General rules\n\n- Prefer minimal patches.\n- Do not change database schema without migration notes.\n- After changing data analysis code, check Python\/C++ consistency.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b98\u65b9\u6587\u6863\u4e2d\u4e5f\u7ed9\u8fc7\u7c7b\u4f3c\u601d\u8def\uff1a\u590d\u6742\u4efb\u52a1\u53ef\u4ee5\u901a\u8fc7 <code>AGENTS.md<\/code> \u6307\u5411\u989d\u5916\u7684\u89c4\u5212\u6587\u6863\uff0c\u4f8b\u5982 <code>PLANS.md<\/code>\uff0c\u8ba9 Codex \u5728\u9700\u8981\u65f6\u6309\u56fa\u5b9a\u8ba1\u5212\u6587\u4ef6\u6267\u884c\u3002(<a href=\"https:\/\/developers.openai.com\/cookbook\/articles\/codex_exec_plans\">OpenAI \u5f00\u53d1\u8005<\/a>)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e5f\u5c31\u662f\u8bf4\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>AGENTS.md<\/code> \u8d1f\u8d23\u544a\u8bc9 Codex\uff1a\u201c\u8fd9\u4e2a\u9879\u76ee\u6709\u54ea\u4e9b\u957f\u671f\u89c4\u5219\uff0c\u4ee5\u53ca\u6709\u54ea\u4e9b skill \u53ef\u7528\u3002\u201d<\/li>\n\n\n\n<li><code>SKILL.md<\/code> \u8d1f\u8d23\u544a\u8bc9 Codex\uff1a\u201c\u9047\u5230\u67d0\u7c7b\u5177\u4f53\u4efb\u52a1\u65f6\uff0c\u6309\u4ec0\u4e48\u6d41\u7a0b\u505a\u3002\u201d<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">8. \u5982\u4f55\u7ef4\u62a4 SKILL.md\uff1f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u5efa\u8bae\u628a skill \u5f53\u6210\u4ee3\u7801\u8d44\u4ea7\u7ef4\u62a4\uff0c\u800c\u4e0d\u662f\u968f\u4fbf\u5199\u7684\u63d0\u793a\u8bcd\u3002<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">\u7248\u672c\u5316<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728 <code>SKILL.md<\/code> \u91cc\u52a0\u7248\u672c\u8bb0\u5f55\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Version\n\n- v0.3, 2026-05-23: Added aarch64 Ubuntu package diagnosis.\n- v0.2, 2026-05-10: Added QtCharts and QtSerialPort checks.\n- v0.1, 2026-04-30: Initial version.\n<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">\u6bcf\u6b21\u8e29\u5751\u540e\u8865\u5145<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f8b\u5982\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>qt6-charts-dev<\/code> \u5728\u67d0\u4e9b Ubuntu\/aarch64 \u6e90\u91cc\u627e\u4e0d\u5230<\/li>\n\n\n\n<li><code>QtCharts does not name a type<\/code><\/li>\n\n\n\n<li><code>libQt6Charts.so.6<\/code> runtime missing<\/li>\n\n\n\n<li><code>QML module QtQuick.VirtualKeyboard missing<\/code><\/li>\n\n\n\n<li>CMake cache path mismatch<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e9b\u90fd\u53ef\u4ee5\u9010\u6b65\u52a0\u5165\u5bf9\u5e94 skill \u7684 <strong>Common mistakes<\/strong> \u6216 <strong>Known project issues<\/strong>\u3002<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">\u4fdd\u6301 skill \u5355\u4e00\u804c\u8d23<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b98\u65b9\u6700\u4f73\u5b9e\u8df5\u660e\u786e\u5efa\u8bae\uff1a\u6bcf\u4e2a skill \u805a\u7126\u4e00\u4e2a\u5de5\u4f5c\uff1b\u9664\u975e\u9700\u8981\u786e\u5b9a\u6027\u884c\u4e3a\u6216\u5916\u90e8\u5de5\u5177\uff0c\u5426\u5219\u4f18\u5148\u7528\u6307\u4ee4\u800c\u4e0d\u662f\u811a\u672c\uff1b\u6b65\u9aa4\u8981\u7528\u7948\u4f7f\u53e5\uff0c\u5e76\u660e\u786e\u8f93\u5165\u8f93\u51fa\uff1b\u8fd8\u8981\u7528\u6d4b\u8bd5 prompt \u68c0\u67e5\u89e6\u53d1\u662f\u5426\u51c6\u786e\u3002(<a href=\"https:\/\/developers.openai.com\/codex\/skills\">OpenAI \u5f00\u53d1\u8005<\/a>)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6240\u4ee5\u4e0d\u8981\u5199\u4e00\u4e2a\u53eb\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>my-project-helper\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7136\u540e\u4ec0\u4e48\u90fd\u5f80\u91cc\u585e\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u66f4\u597d\u7684\u62c6\u5206\u662f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>qt6-cmake-diagnosis\nsqlite-migration-review\nmodel-release-check\nbutterworth-filter-implementation\nthreejs-shader-debug\n<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">\u5927\u91cf\u786e\u5b9a\u6027\u68c0\u67e5\u7528 scripts\/<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u6d41\u7a0b\u91cc\u6709\u201c\u5fc5\u987b\u7cbe\u786e\u5224\u65ad\u201d\u7684\u90e8\u5206\uff0c\u5efa\u8bae\u653e\u811a\u672c\uff0c\u800c\u4e0d\u662f\u53ea\u9760\u81ea\u7136\u8bed\u8a00\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f8b\u5982\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>model-release-check\/\n\u251c\u2500\u2500 SKILL.md\n\u2514\u2500\u2500 scripts\/\n    \u2514\u2500\u2500 validate_model_release.py\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7136\u540e\u5728 <code>SKILL.md<\/code> \u91cc\u5199\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Deterministic checks\n\nIf scripts\/validate_model_release.py exists, run:\n\npython3 .agents\/skills\/model-release-check\/scripts\/validate_model_release.py &lt;release_dir&gt;\n\nUse the script output as the primary source for pass\/fail status.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6837 Codex \u65e2\u6709\u5de5\u4f5c\u6d41\uff0c\u4e5f\u6709\u786e\u5b9a\u6027\u5de5\u5177\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">9. \u5982\u4f55\u6709\u6548\u8c03\u7528 skill\uff1f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ef\u4ee5\u663e\u5f0f\u8c03\u7528\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u4f7f\u7528 $qt6-cmake-diagnosis \u5206\u6790\u8fd9\u6b21 Qt6 \u7f16\u8bd1\u9519\u8bef\uff0c\u5e76\u7ed9\u51fa\u6700\u5c0f\u4fee\u590d\u8865\u4e01\u3002\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6216\u8005\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u4f7f\u7528 $model-release-check \u68c0\u67e5 model-release-A1-1000Hz-20260511-153045 \u76ee\u5f55\uff0c\u91cd\u70b9\u786e\u8ba4 feature-schema.json \u4e0e C++ \u63a8\u7406\u4ee3\u7801\u662f\u5426\u4e00\u81f4\u3002\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6216\u8005\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u4f7f\u7528 $sqlite-migration-review \u5ba1\u67e5\u8fd9\u6b21\u6570\u636e\u5e93\u8868\u7ed3\u6784\u53d8\u5316\uff0c\u786e\u8ba4\u65e7\u7248\u672c brake.db \u662f\u5426\u80fd\u5e73\u6ed1\u5347\u7ea7\u3002\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b98\u65b9\u6587\u6863\u8bf4\u660e\uff0c\u5728 CLI\/IDE \u91cc\u53ef\u4ee5\u901a\u8fc7 <code>\/skills<\/code> \u6216\u8f93\u5165 <code>$<\/code> \u6765\u63d0\u53ca skill\uff1b\u5982\u679c\u6ca1\u6709\u663e\u5f0f\u8c03\u7528\uff0cCodex \u4e5f\u53ef\u80fd\u6839\u636e <code>description<\/code> \u81ea\u52a8\u9009\u62e9\u3002(<a href=\"https:\/\/developers.openai.com\/codex\/skills\">OpenAI \u5f00\u53d1\u8005<\/a>)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">10. \u5982\u4f55\u9a8c\u8bc1 skill \u662f\u5426\u751f\u6548\uff1f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ef\u4ee5\u8ba9 Codex \u81ea\u67e5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --ask-for-approval never \"List available skills relevant to this repository and summarize when each should be used.\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e5f\u53ef\u4ee5\u5728\u5177\u4f53\u76ee\u5f55\u4e0b\u6d4b\u8bd5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --cd . \"Use $qt6-cmake-diagnosis to inspect the current build configuration. Do not modify files yet.\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b98\u65b9\u6587\u6863\u4e5f\u5efa\u8bae\u7528\u7c7b\u4f3c\u65b9\u5f0f\u9a8c\u8bc1\u6307\u5bfc\u6587\u4ef6\u662f\u5426\u88ab\u52a0\u8f7d\uff1b\u5982\u679c\u6307\u5bfc\u5185\u5bb9\u770b\u8d77\u6765\u9648\u65e7\uff0c\u53ef\u4ee5\u91cd\u542f Codex\uff0c\u56e0\u4e3a Codex \u4f1a\u5728\u6bcf\u6b21\u8fd0\u884c\u6216 TUI \u4f1a\u8bdd\u5f00\u59cb\u65f6\u91cd\u5efa\u6307\u4ee4\u94fe\u3002(<a href=\"https:\/\/developers.openai.com\/codex\/guides\/agents-md\">OpenAI \u5f00\u53d1\u8005<\/a>)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">11. \u53ef\u7981\u7528\u67d0\u4e2a skill<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u67d0\u4e2a skill \u4e34\u65f6\u4e0d\u60f3\u7528\uff0c\u4e0d\u4e00\u5b9a\u8981\u5220\u9664\u3002\u5b98\u65b9\u914d\u7f6e\u652f\u6301\u5728 <code>~\/.codex\/config.toml<\/code> \u4e2d\u7981\u7528\u6307\u5b9a skill\uff1a(<a href=\"https:\/\/developers.openai.com\/codex\/skills\">OpenAI \u5f00\u53d1\u8005<\/a>)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;&#91;skills.config]]\npath = \"\/path\/to\/skill\/SKILL.md\"\nenabled = false\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fee\u6539\u540e\u91cd\u542f Codex\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">12. \u603b\u7ed3\u4e00\u53e5\u8bdd<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>AGENTS.md \u662f Codex \u7684\u201c\u9879\u76ee\u957f\u671f\u8bb0\u5fc6\u548c\u884c\u4e3a\u51c6\u5219\u201d\uff1bSKILL.md \u662f Codex \u7684\u201c\u53ef\u590d\u7528\u4e13\u9879\u4f5c\u4e1a\u6d41\u7a0b\u201d\u3002<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ef\u4ee5\u8fd9\u6837\u4f7f\u7528\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AGENTS.md\uff1a\u544a\u8bc9 Codex \u8fd9\u4e2a\u9879\u76ee\u662f\u4ec0\u4e48\u3001\u600e\u4e48\u6784\u5efa\u3001\u600e\u4e48\u6d4b\u8bd5\u3001\u6709\u54ea\u4e9b\u7981\u5fcc\u3002\nSKILL.md\uff1a\u544a\u8bc9 Codex \u9047\u5230\u67d0\u7c7b\u4efb\u52a1\u65f6\uff0c\u6309\u56fa\u5b9a\u6b65\u9aa4\u505a\u3001\u770b\u54ea\u4e9b\u6587\u4ef6\u3001\u8dd1\u54ea\u4e9b\u547d\u4ee4\u3001\u8f93\u51fa\u4ec0\u4e48\u7ed3\u679c\u3002\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u91cd\u8981\u7684\u5b9e\u8df5\u662f\uff1a<strong>\u4e0d\u8981\u628a SKILL.md \u5199\u6210\u5927\u800c\u5168\u7684\u9879\u76ee\u8bf4\u660e\uff0c\u800c\u8981\u628a\u5b83\u5199\u6210\u4e00\u4e2a\u5177\u4f53\u3001\u53ef\u89e6\u53d1\u3001\u53ef\u6267\u884c\u3001\u53ef\u9a8c\u8bc1\u7684\u5de5\u4f5c\u6d41\u3002<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4e0b\u9762\u6309\u201cAGENTS.md \u4e0e SKILL.md \u600e\u4e48\u5206\u5de5 \u2192 \u5982\u4f55\u521b\u5efa \u2192 \u5982\u4f55\u7ef4\u62a4 \u2192 \u5982\u4f55\u6709\u6548\u4f7f\u7528\u201d\u6765\u8bb2 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[3,8],"tags":[39,101,103],"class_list":["post-6974","post","type-post","status-publish","format-standard","hentry","category-it","category-tech","tag-ai","tag-old-programmer-in-ai-era","tag-openai"],"rttpg_featured_image_url":null,"rttpg_author":{"display_name":"NullThought","author_link":"https:\/\/nullthought.net\/?author=1"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/nullthought.net\/?cat=3\" rel=\"category\">IT<\/a> <a href=\"https:\/\/nullthought.net\/?cat=8\" rel=\"category\">Tech<\/a>","rttpg_excerpt":"\u4e0b\u9762\u6309\u201cAGENTS.md \u4e0e SKILL.md \u600e\u4e48\u5206\u5de5 \u2192 \u5982\u4f55\u521b\u5efa \u2192 \u5982\u4f55\u7ef4\u62a4 \u2192 \u5982\u4f55\u6709\u6548\u4f7f\u7528\u201d\u6765\u8bb2&hellip;","_links":{"self":[{"href":"https:\/\/nullthought.net\/index.php?rest_route=\/wp\/v2\/posts\/6974","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nullthought.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nullthought.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nullthought.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nullthought.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6974"}],"version-history":[{"count":2,"href":"https:\/\/nullthought.net\/index.php?rest_route=\/wp\/v2\/posts\/6974\/revisions"}],"predecessor-version":[{"id":6977,"href":"https:\/\/nullthought.net\/index.php?rest_route=\/wp\/v2\/posts\/6974\/revisions\/6977"}],"wp:attachment":[{"href":"https:\/\/nullthought.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6974"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nullthought.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6974"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nullthought.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6974"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}