ogt-docs-audit-task

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

OGT Docs - Audit Task

OGT 文档 - 任务审计

Verify that completed tasks actually have working implementations in the codebase.
验证已标记为完成的任务是否在代码库中存在可正常运行的实现。

Overview

概述

Tasks in
docs/todo/done/
claim to be complete. This skill verifies those claims by checking that the implementation actually exists and works. Unverified tasks are moved back to
pending/
for re-implementation.
mermaid
flowchart LR
    subgraph audit ["Audit Process"]
        direction TB
        A[Read task.md] --> B[Extract Acceptance Criteria]
        B --> C[Verify Each Criterion]
        C --> D{All Pass?}
        D -->|Yes| E[Mark Verified]
        D -->|No| F[Move to pending/]
    end

    DONE["done/task/"] --> audit
    audit --> VERIFIED["done/task/ + .verified"]
    audit --> PENDING["pending/task/"]

    style DONE fill:#d1fae5
    style VERIFIED fill:#a7f3d0
    style PENDING fill:#fef3c7
docs/todo/done/
目录下的任务被标记为已完成。本技能通过检查功能实现是否真实存在且可正常运行,来验证这些完成声明。未通过验证的任务将被移回
pending/
目录,等待重新实现。
mermaid
flowchart LR
    subgraph audit ["Audit Process"]
        direction TB
        A[Read task.md] --> B[Extract Acceptance Criteria]
        B --> C[Verify Each Criterion]
        C --> D{All Pass?}
        D -->|Yes| E[Mark Verified]
        D -->|No| F[Move to pending/]
    end

    DONE["done/task/"] --> audit
    audit --> VERIFIED["done/task/ + .verified"]
    audit --> PENDING["pending/task/"]

    style DONE fill:#d1fae5
    style VERIFIED fill:#a7f3d0
    style PENDING fill:#fef3c7

When to Use

使用场景

  • Before a release to ensure all "done" tasks are actually done
  • During periodic audits (weekly/monthly)
  • When a bug reveals a task may not be complete
  • When onboarding to verify codebase state
  • After agent work sessions to validate claims
  • 发布前:确保所有标记为“已完成”的任务确实已完成
  • 定期审计:每周/每月进行一次
  • 发现Bug时:验证相关任务是否未真正完成
  • 新成员入职时:确认代码库的实际状态
  • Agent工作会话后:验证其完成任务的声明

Verification Types

验证类型

Different acceptance criteria require different verification methods:
Criterion TypeVerification MethodExample
File exists
test -f {path}
"Create UserService.ts"
File exported
grep export {index}
"Export from index.ts"
Route exists
grep {route} {router}
"Add /users route"
Type exists
grep "type X" {file}
"Add User type"
Function exists
grep "function X" {file}
"Add calculateTotal()"
Dependency installed
grep {pkg} package.json
"Install lodash"
Pattern removed
grep -r {pattern}
= 0
"Remove all console.log"
TypeScript compiles
tsc --noEmit
"No type errors"
Tests pass
npm test
"Tests pass"
Feature worksManual or E2E test"User can login"

不同的验收标准需要不同的验证方法:
标准类型验证方法示例
文件存在
test -f {path}
"创建UserService.ts"
文件已导出
grep export {index}
"从index.ts导出"
路由存在
grep {route} {router}
"添加/users路由"
类型存在
grep "type X" {file}
"添加User类型"
函数存在
grep "function X" {file}
"添加calculateTotal()"
依赖已安装
grep {pkg} package.json
"安装lodash"
模式已移除
grep -r {pattern}
= 0
"移除所有console.log"
TypeScript编译通过
tsc --noEmit
"无类型错误"
测试通过
npm test
"测试全部通过"
功能正常手动或E2E测试"用户可登录"

Folder Structure

目录结构

Audit operates on
docs/todo/done/
and may move tasks to
pending/
:
docs/todo/
├── done/                           # Tasks claiming completion
│   └── {task_slug}/
│       ├── task.md                 # Has acceptance criteria
│       ├── implementation.md       # Claims what was done
│       ├── verification.md         # Should have proof
│       ├── .verified               # REQUIRED - but may be false claim
│       └── .completed_at
├── pending/                        # Where failed audits go
│   └── {task_slug}/
│       ├── task.md
│       ├── audit_failure.md        # Why it failed audit
│       ├── .audit_failed           # Signal
│       └── .audit_failed_at
└── audit_log/                      # Audit history
    └── {date}/
        ├── summary.md              # Audit summary
        ├── passed.txt              # List of passed tasks
        └── failed.txt              # List of failed tasks

审计操作针对
docs/todo/done/
目录,可能会将任务移至
pending/
docs/todo/
├── done/                           # 标记为已完成的任务
│   └── {task_slug}/
│       ├── task.md                 # 包含验收标准
│       ├── implementation.md       # 记录声称已完成的工作
│       ├── verification.md         # 应包含验证证明
│       ├── .verified               # 必填项 - 但可能是虚假标记
│       └── .completed_at
├── pending/                        # 未通过审计的任务存放目录
│   └── {task_slug}/
│       ├── task.md
│       ├── audit_failure.md        # 审计失败原因
│       ├── .audit_failed           # 状态标记文件
│       └── .audit_failed_at
└── audit_log/                      # 审计历史记录
    └── {date}/
        ├── summary.md              # 审计总结
        ├── passed.txt              # 通过审计的任务列表
        └── failed.txt              # 未通过审计的任务列表

Audit Workflow

审计流程

Step 1: List Tasks to Audit

步骤1:列出待审计的任务

bash
undefined
bash
undefined

Find all tasks in done/

查找done/目录下的所有任务

ls docs/todo/done/
undefined
ls docs/todo/done/
undefined

Step 2: For Each Task, Extract Criteria

步骤2:为每个任务提取验收标准

Read
task.md
and find the
## Acceptance Criteria
section:
markdown
undefined
读取
task.md
文件,找到
## Acceptance Criteria
部分:
markdown
undefined

Acceptance Criteria

Acceptance Criteria

  • File exists: front/services/SearchService.ts
  • Exported from: front/services/index.ts
  • Function: fuzzySearch(query: string): SearchResult[]
  • TypeScript compiles clean
  • Search returns results within 16ms
undefined
  • File exists: front/services/SearchService.ts
  • Exported from: front/services/index.ts
  • Function: fuzzySearch(query: string): SearchResult[]
  • TypeScript compiles clean
  • Search returns results within 16ms
undefined

Step 3: Verify Each Criterion

步骤3:验证每个验收标准

mermaid
flowchart TD
    A[Read Criterion] --> B{Type?}

    B -->|File Exists| C["test -f {path}"]
    B -->|Export| D["grep 'export.*Name' {index}"]
    B -->|Function| E["grep 'function Name' {file}"]
    B -->|Type| F["grep 'type Name' {file}"]
    B -->|Route| G["grep '{path}' {router}"]
    B -->|Dependency| H["grep '{pkg}' package.json"]
    B -->|Pattern Gone| I["grep -r '{pattern}' = 0"]
    B -->|Compiles| J["tsc --noEmit"]
    B -->|Tests Pass| K["npm test"]

    C --> L{Pass?}
    D --> L
    E --> L
    F --> L
    G --> L
    H --> L
    I --> L
    J --> L
    K --> L

    L -->|Yes| M[Record PASS]
    L -->|No| N[Record FAIL]
mermaid
flowchart TD
    A[Read Criterion] --> B{Type?}

    B -->|File Exists| C["test -f {path}"]
    B -->|Export| D["grep 'export.*Name' {index}"]
    B -->|Function| E["grep 'function Name' {file}"]
    B -->|Type| F["grep 'type Name' {file}"]
    B -->|Route| G["grep '{path}' {router}"]
    B -->|Dependency| H["grep '{pkg}' package.json"]
    B -->|Pattern Gone| I["grep -r '{pattern}' = 0"]
    B -->|Compiles| J["tsc --noEmit"]
    B -->|Tests Pass| K["npm test"]

    C --> L{Pass?}
    D --> L
    E --> L
    F --> L
    G --> L
    H --> L
    I --> L
    J --> L
    K --> L

    L -->|Yes| M[Record PASS]
    L -->|No| N[Record FAIL]

Step 4: Handle Results

步骤4:处理验证结果

If ALL Pass:

全部通过时:

bash
undefined
bash
undefined

Ensure .verified exists

确保.verified文件存在

touch docs/todo/done/{task_slug}/.verified
touch docs/todo/done/{task_slug}/.verified

Update verification.md with proof

在verification.md中添加验证记录

echo "Verified: $(date)" >> docs/todo/done/{task_slug}/verification.md
undefined
echo "Verified: $(date)" >> docs/todo/done/{task_slug}/verification.md
undefined

If ANY Fail:

任意项未通过时:

bash
undefined
bash
undefined

Move to pending

移至pending目录

mv docs/todo/done/{task_slug} docs/todo/pending/
mv docs/todo/done/{task_slug} docs/todo/pending/

Add audit failure documentation

添加审计失败文档

cat > docs/todo/pending/{task_slug}/audit_failure.md << 'EOF'
cat > docs/todo/pending/{task_slug}/audit_failure.md << 'EOF'

Audit Failure

审计失败

Date

日期

2026-02-06
2026-02-06

Failed Criteria

未通过的标准

  1. File exists: front/services/SearchService.ts
    • FAILED: File not found
  2. TypeScript compiles
    • FAILED: 3 type errors in related files
  1. File exists: front/services/SearchService.ts
    • FAILED: 文件未找到
  2. TypeScript compiles
    • FAILED: 相关文件中存在3个类型错误

Action Required

需执行的操作

Re-implement the task following the original acceptance criteria. EOF
根据原始验收标准重新实现该任务。 EOF

Add signal

添加状态标记

touch docs/todo/pending/{task_slug}/.audit_failed echo "$(date -Iseconds)" > docs/todo/pending/{task_slug}/.audit_failed_at
touch docs/todo/pending/{task_slug}/.audit_failed echo "$(date -Iseconds)" > docs/todo/pending/{task_slug}/.audit_failed_at

Remove false .verified if it existed

移除虚假的.verified文件(如果存在)

rm -f docs/todo/pending/{task_slug}/.verified

---
rm -f docs/todo/pending/{task_slug}/.verified

---

Example: Auditing a Task

示例:审计一个任务

Task: docs/todo/done/fuzzy_search/

任务:docs/todo/done/fuzzy_search/

task.md (excerpt)

task.md(节选)

markdown
undefined
markdown
undefined

Task: Fuzzy Search Implementation

Task: Fuzzy Search Implementation

Acceptance Criteria

Acceptance Criteria

  • MiniSearch installed in package.json
  • File exists: front/services/SearchService.ts
  • Exported from: front/services/index.ts
  • Function: createSearchIndex(items: Searchable[]): MiniSearch
  • Function: fuzzySearch(query: string): SearchResult[]
  • TypeScript compiles clean
undefined
  • MiniSearch installed in package.json
  • File exists: front/services/SearchService.ts
  • Exported from: front/services/index.ts
  • Function: createSearchIndex(items: Searchable[]): MiniSearch
  • Function: fuzzySearch(query: string): SearchResult[]
  • TypeScript compiles clean
undefined

Verification Commands

验证命令

bash
undefined
bash
undefined

1. MiniSearch installed

1. 验证MiniSearch已安装

grep '"minisearch"' front/package.json
grep '"minisearch"' front/package.json

Expected: "minisearch": "^6.0.0"

预期结果: "minisearch": "^6.0.0"

2. File exists

2. 验证文件存在

test -f front/services/SearchService.ts && echo "EXISTS" || echo "MISSING"
test -f front/services/SearchService.ts && echo "EXISTS" || echo "MISSING"

Expected: EXISTS

预期结果: EXISTS

3. Exported from index

3. 验证已从index.ts导出

grep "SearchService|createSearchIndex|fuzzySearch" front/services/index.ts
grep "SearchService|createSearchIndex|fuzzySearch" front/services/index.ts

Expected: export { createSearchIndex, fuzzySearch } from './SearchService';

预期结果: export { createSearchIndex, fuzzySearch } from './SearchService';

4. Function createSearchIndex exists

4. 验证createSearchIndex函数存在

grep "function createSearchIndex|const createSearchIndex|createSearchIndex =" front/services/SearchService.ts
grep "function createSearchIndex|const createSearchIndex|createSearchIndex =" front/services/SearchService.ts

Expected: match found

预期结果: 找到匹配内容

5. Function fuzzySearch exists

5. 验证fuzzySearch函数存在

grep "function fuzzySearch|const fuzzySearch|fuzzySearch =" front/services/SearchService.ts
grep "function fuzzySearch|const fuzzySearch|fuzzySearch =" front/services/SearchService.ts

Expected: match found

预期结果: 找到匹配内容

6. TypeScript compiles

6. 验证TypeScript编译通过

cd front && npx tsc --noEmit
cd front && npx tsc --noEmit

Expected: exit code 0

预期结果: 退出码为0

undefined
undefined

Audit Result: PASS

审计结果:通过

All criteria verified. Task remains in
done/
with
.verified
confirmed.

所有标准均验证通过。任务保留在
done/
目录中,且
.verified
标记已确认有效。

Example: Failed Audit

示例:审计未通过

Task: docs/todo/done/spell_routes/

任务:docs/todo/done/spell_routes/

task.md (excerpt)

task.md(节选)

markdown
undefined
markdown
undefined

Task: Wire SpellDetailView into Router

Task: Wire SpellDetailView into Router

Acceptance Criteria

Acceptance Criteria

  • Route added: /spells/:slug
  • SpellDetailView imported in App.tsx
  • Route element renders SpellDetailView
  • Navigation works from spell cards
undefined
  • Route added: /spells/:slug
  • SpellDetailView imported in App.tsx
  • Route element renders SpellDetailView
  • Navigation works from spell cards
undefined

Verification Commands

验证命令

bash
undefined
bash
undefined

1. Route in router config

1. 验证路由已添加到路由器配置

grep "spells/:slug|spell_detail" front/data/app-configs.ts
grep "spells/:slug|spell_detail" front/data/app-configs.ts

Result: NO MATCH

结果: 无匹配内容

2. Import in App.tsx

2. 验证App.tsx中已导入SpellDetailView

grep "SpellDetailView" front/app/App.tsx
grep "SpellDetailView" front/app/App.tsx

Result: NO MATCH

结果: 无匹配内容

3. Route element

3. 验证路由元素渲染SpellDetailView

grep "SpellDetailView" front/app/App.tsx | grep -i route
grep "SpellDetailView" front/app/App.tsx | grep -i route

Result: NO MATCH

结果: 无匹配内容

undefined
undefined

Audit Result: FAIL

审计结果:未通过

Route never implemented. Move to pending:
bash
undefined
路由从未实现。将任务移至pending目录:
bash
undefined

Move task

移动任务

mv docs/todo/done/spell_routes docs/todo/pending/
mv docs/todo/done/spell_routes docs/todo/pending/

Document failure

记录失败信息

cat > docs/todo/pending/spell_routes/audit_failure.md << 'EOF'
cat > docs/todo/pending/spell_routes/audit_failure.md << 'EOF'

Audit Failure

审计失败

Date

日期

2026-02-06
2026-02-06

Failed Criteria

未通过的标准

  1. Route added: /spells/:slug
    • FAILED: No route found in app-configs.ts
  2. SpellDetailView imported in App.tsx
    • FAILED: No import found
  3. Route element renders SpellDetailView
    • FAILED: No route element found
  1. Route added: /spells/:slug
    • FAILED: 在app-configs.ts中未找到该路由
  2. SpellDetailView imported in App.tsx
    • FAILED: 未找到导入语句
  3. Route element renders SpellDetailView
    • FAILED: 未找到对应的路由元素

Analysis

分析

The task was marked done but no implementation exists. SpellDetailView.tsx exists but was never wired into the router.
任务被标记为已完成,但实际未实现任何内容。 SpellDetailView.tsx文件存在,但从未接入路由器。

Action Required

需执行的操作

  1. Add spell_detail route to APP_ROUTES in app-configs.ts
  2. Import SpellDetailView in App.tsx
  3. Add <Route path="/spells/:slug" element={<SpellDetailView />} />
  4. Verify navigation works EOF
  1. 在app-configs.ts的APP_ROUTES中添加spell_detail路由
  2. 在App.tsx中导入SpellDetailView
  3. 添加<Route path="/spells/:slug" element={<SpellDetailView />} />
  4. 验证导航功能正常 EOF

Add signals

添加状态标记

touch docs/todo/pending/spell_routes/.audit_failed echo "2026-02-06T10:00:00Z" > docs/todo/pending/spell_routes/.audit_failed_at rm -f docs/todo/pending/spell_routes/.verified

---
touch docs/todo/pending/spell_routes/.audit_failed echo "2026-02-06T10:00:00Z" > docs/todo/pending/spell_routes/.audit_failed_at rm -f docs/todo/pending/spell_routes/.verified

---

Batch Audit Script

批量审计脚本

For auditing multiple tasks at once:
bash
#!/bin/bash
一次性审计多个任务:
bash
#!/bin/bash

audit-done-tasks.sh

audit-done-tasks.sh

AUDIT_DATE=$(date +%Y-%m-%d) AUDIT_DIR="docs/todo/audit_log/${AUDIT_DATE}" mkdir -p "$AUDIT_DIR"
PASSED=() FAILED=()
for task_dir in docs/todo/done/*/; do task_name=$(basename "$task_dir") echo "Auditing: $task_name"
# Run verification (implement per-task logic)
if verify_task "$task_dir"; then
    PASSED+=("$task_name")
    echo "  PASS"
else
    FAILED+=("$task_name")
    echo "  FAIL - moving to pending/"
    mv "$task_dir" docs/todo/pending/
    # Add audit_failure.md...
fi
done
AUDIT_DATE=$(date +%Y-%m-%d) AUDIT_DIR="docs/todo/audit_log/${AUDIT_DATE}" mkdir -p "$AUDIT_DIR"
PASSED=() FAILED=()
for task_dir in docs/todo/done/*/; do task_name=$(basename "$task_dir") echo "Auditing: $task_name"
# 执行验证(需实现每个任务的验证逻辑)
if verify_task "$task_dir"; then
    PASSED+=("$task_name")
    echo "  PASS"
else
    FAILED+=("$task_name")
    echo "  FAIL - moving to pending/"
    mv "$task_dir" docs/todo/pending/
    # 添加audit_failure.md...
fi
done

Write summary

写入总结

cat > "$AUDIT_DIR/summary.md" << EOF
cat > "$AUDIT_DIR/summary.md" << EOF

Audit Summary: $AUDIT_DATE

审计总结: $AUDIT_DATE

Results

结果

  • Passed: ${#PASSED[@]}
  • Failed: ${#FAILED[@]}
  • Total: $((${#PASSED[@]} + ${#FAILED[@]}))
  • 通过: ${#PASSED[@]}
  • 未通过: ${#FAILED[@]}
  • 总计: $((${#PASSED[@]} + ${#FAILED[@]}))

Pass Rate

通过率

$(echo "scale=1; ${#PASSED[@]} * 100 / (${#PASSED[@]} + ${#FAILED[@]})" | bc)% EOF
printf '%s\n' "${PASSED[@]}" > "$AUDIT_DIR/passed.txt" printf '%s\n' "${FAILED[@]}" > "$AUDIT_DIR/failed.txt"

---
$(echo "scale=1; ${#PASSED[@]} * 100 / (${#PASSED[@]} + ${#FAILED[@]})" | bc)% EOF
printf '%s\n' "${PASSED[@]}" > "$AUDIT_DIR/passed.txt" printf '%s\n' "${FAILED[@]}" > "$AUDIT_DIR/failed.txt"

---

Verification Patterns by Domain

按领域分类的验证模式

Frontend Tasks

前端任务

bash
undefined
bash
undefined

Component exists

组件存在

test -f front/components/{path}/{Component}.tsx
test -f front/components/{path}/{Component}.tsx

Component exported

组件已导出

grep "export.*{Component}" front/components/{path}/index.ts
grep "export.*{Component}" front/components/{path}/index.ts

Hook exists

Hook存在

test -f front/hooks/use-{name}.ts
test -f front/hooks/use-{name}.ts

Route exists

路由存在

grep "{route}" front/app/App.tsx
grep "{route}" front/app/App.tsx

Style applied (check for className or styled-component)

样式已应用(检查className或styled-component)

grep "className=|styled." front/components/{path}/{Component}.tsx
undefined
grep "className=|styled." front/components/{path}/{Component}.tsx
undefined

Backend Tasks

后端任务

bash
undefined
bash
undefined

API endpoint exists

API端点存在

grep "{endpoint}" back/src/api/{type}/routes/{type}.ts
grep "{endpoint}" back/src/api/{type}/routes/{type}.ts

Controller method exists

控制器方法存在

grep "{method}" back/src/api/{type}/controllers/{type}.ts
grep "{method}" back/src/api/{type}/controllers/{type}.ts

Content type schema

内容类型schema

test -f back/src/api/{type}/content-types/{type}/schema.json
test -f back/src/api/{type}/content-types/{type}/schema.json

Service exists

服务存在

test -f back/src/api/{type}/services/{type}.ts
undefined
test -f back/src/api/{type}/services/{type}.ts
undefined

Infrastructure Tasks

基础设施任务

bash
undefined
bash
undefined

Docker service defined

Docker服务已定义

grep "{service}" docker-compose.yml
grep "{service}" docker-compose.yml

Environment variable documented

环境变量已文档化

grep "{VAR_NAME}" .env.example
grep "{VAR_NAME}" .env.example

CI step exists

CI步骤存在

grep "{step_name}" .github/workflows/*.yml
undefined
grep "{step_name}" .github/workflows/*.yml
undefined

Data/Content Tasks

数据/内容任务

bash
undefined
bash
undefined

Data file exists

数据文件存在

test -f front/data/{collection}/{slug}/data.ts
test -f front/data/{collection}/{slug}/data.ts

Asset exists

资源存在

test -f static/public/{collection}/{slug}/{asset}
test -f static/public/{collection}/{slug}/{asset}

Index entry

索引条目存在

grep "{slug}" front/data/{collection}/index.ts

---
grep "{slug}" front/data/{collection}/index.ts

---

Common Audit Failures

常见审计失败情况

SymptomLikely CauseFix
File not foundNever createdImplement file
Not exportedCreated but not added to indexAdd export
TypeScript errorsPartial implementationFix types
Route not foundAdded to wrong fileAdd to correct router
Function missingDifferent name usedRename or implement
Tests failingImplementation incompleteFix implementation
Dependency missingNot installedRun npm install

症状可能原因修复方法
文件未找到从未创建该文件实现并创建文件
未导出文件已创建但未添加到索引文件添加导出声明
TypeScript错误实现不完整修复类型错误
路由未找到添加到了错误的文件添加到正确的路由器配置文件
函数缺失使用了不同的函数名称重命名或实现该函数
测试失败实现不完整完善实现代码
依赖缺失未安装该依赖运行npm install命令

Audit Frequency Recommendations

审计频率建议

TriggerFrequencyScope
Before releaseEvery releaseAll done/ tasks since last release
Weekly maintenanceWeeklyAll done/ tasks
After agent sessionPer sessionTasks marked done in session
Bug discoveredAs neededRelated tasks
OnboardingOnceAll done/ tasks

触发条件频率范围
发布前每次发布上次发布以来所有标记为done/的任务
每周维护每周所有done/目录下的任务
Agent会话后每次会话会话中标记为已完成的任务
发现Bug时按需相关任务
新成员入职一次所有done/目录下的任务

Signal Files Reference

标记文件参考

Audit Signals

审计标记

SignalLocationPurpose
.verified
done/Task passed audit
.audit_failed
pending/Task failed audit
.audit_failed_at
pending/When it failed
.last_audited
done/When last verified
标记文件位置用途
.verified
done/任务已通过审计
.audit_failed
pending/任务未通过审计
.audit_failed_at
pending/审计失败时间
.last_audited
done/上次验证时间

Audit Log Files

审计日志文件

FilePurpose
audit_log/{date}/summary.md
Audit session summary
audit_log/{date}/passed.txt
List of passed tasks
audit_log/{date}/failed.txt
List of failed tasks
{task}/audit_failure.md
Detailed failure info

文件用途
audit_log/{date}/summary.md
审计会话总结
audit_log/{date}/passed.txt
通过审计的任务列表
audit_log/{date}/failed.txt
未通过审计的任务列表
{task}/audit_failure.md
详细失败信息

Audit Checklist

审计检查清单

Before marking an audit complete:
  • Read task.md acceptance criteria
  • Verified each criterion with actual commands
  • Captured command output as proof
  • Failed tasks moved to pending/
  • audit_failure.md created for failures
  • .audit_failed signal added
  • .verified confirmed for passes
  • Audit log updated
  • Summary includes pass rate

完成审计前需确认:
  • 已阅读task.md中的验收标准
  • 已使用实际命令验证每个标准
  • 已捕获命令输出作为验证证明
  • 未通过的任务已移至pending/目录
  • 已为未通过任务创建audit_failure.md
  • 已添加.audit_failed标记
  • 已确认通过任务的.verified标记有效
  • 已更新审计日志
  • 总结中包含通过率

Integration with CI

与CI集成

Add audit to CI pipeline for automatic verification:
yaml
undefined
将审计添加到CI流水线以实现自动验证:
yaml
undefined

.github/workflows/audit-tasks.yml

.github/workflows/audit-tasks.yml

name: Audit Done Tasks
on: schedule: - cron: "0 0 * * 0" # Weekly workflow_dispatch:
jobs: audit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
  - name: Run task audit
    run: ./scripts/audit-done-tasks.sh

  - name: Fail if tasks failed audit
    run: |
      if [ -s docs/todo/audit_log/$(date +%Y-%m-%d)/failed.txt ]; then
        echo "Tasks failed audit:"
        cat docs/todo/audit_log/$(date +%Y-%m-%d)/failed.txt
        exit 1
      fi
undefined
name: Audit Done Tasks
on: schedule: - cron: "0 0 * * 0" # 每周执行 workflow_dispatch:
jobs: audit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
  - name: Run task audit
    run: ./scripts/audit-done-tasks.sh

  - name: Fail if tasks failed audit
    run: |
      if [ -s docs/todo/audit_log/$(date +%Y-%m-%d)/failed.txt ]; then
        echo "Tasks failed audit:"
        cat docs/todo/audit_log/$(date +%Y-%m-%d)/failed.txt
        exit 1
      fi
undefined