Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
d9e4982
feat(v4): add core-next & cli-next packages with integration/E2E test…
Alive-Fish Apr 8, 2026
11d2510
feat(cli-next): add esbuild bundling for 97% faster startup
Alive-Fish Apr 8, 2026
ce39de5
fix(v4): rename core-next/cli-next packages to avoid pnpm workspace n…
Alive-Fish Apr 8, 2026
96a8404
fix(v4): resolve 10 CodeQL alerts — TOCTOU race conditions and file-d…
Alive-Fish Apr 8, 2026
148bff9
fix(v4): resolve remaining 9 CodeQL alerts — TOCTOU, Zip Slip, and qu…
Alive-Fish Apr 8, 2026
c12057c
fix(v4): add early '..' check on zip entry names to satisfy CodeQL Zi…
Alive-Fish Apr 8, 2026
e7db535
fix(ci): use braces in pnpm filter to include workspace dependencies
Alive-Fish Apr 8, 2026
2706548
fix(e2e): fix mocha TypeScript loading for e2e tests
Alive-Fish Apr 8, 2026
e18de22
docs: update instructions with EAFP filesystem pattern and archive se…
Alive-Fish Apr 8, 2026
188ec80
fix(ci): gitignore tsconfig.tsbuildinfo to prevent stale incremental …
Alive-Fish Apr 8, 2026
17f778d
ci: skip old e2e workflows for v4-only changes
Alive-Fish Apr 8, 2026
2b1f41d
fix(v4): add precommit hooks to core-next/cli-next and fix prettier v…
Alive-Fish Apr 9, 2026
6e9cb8b
fix(v4): swap postbuild order — prettier first, eslint last to resolv…
Alive-Fish Apr 9, 2026
e940fd9
fix(v4): remove redundant prettier from postbuild — eslint-plugin-pre…
Alive-Fish Apr 9, 2026
e328e40
ci(v4): remove format-check job — lint already validates formatting v…
Alive-Fish Apr 9, 2026
fbea547
fix(v4): remove eslint --cache from lint-staged to match CI
Alive-Fish Apr 9, 2026
e2ab6fd
fix(v4): clean tsbuildinfo in cli-next build and set ATK_BIN in e2e w…
Alive-Fish Apr 9, 2026
773066d
test(v4): add missing E2E tests for MCP scaffold, auth commands, add-…
Alive-Fish Apr 9, 2026
34d0ea5
fix(v4): resolve lint warnings in E2E tests and fix tsconfig.eslint.j…
Alive-Fish Apr 9, 2026
ed289a0
docs(v4): update dev-test-next skill and add lint-format skill
Alive-Fish Apr 9, 2026
513fa78
fix(v4): call registerBuiltinTemplates() in lifecycle.test.ts
Alive-Fish Apr 9, 2026
437aed6
perf(v4): parallelize lifecycle E2E tests across CI matrix
Alive-Fish Apr 9, 2026
58e8236
fix(v4): add CI-mode token provider for lifecycle E2E tests
Alive-Fish Apr 9, 2026
849f538
fix(v4): restore test env vars after azure/login overwrites them
Alive-Fish Apr 9, 2026
c54f797
feat(core-next): add inline specParser module with OpenAPI parsing, v…
Alive-Fish Apr 10, 2026
2d9986d
test(core-next): add unit and integration tests for specParser module
Alive-Fish Apr 10, 2026
da1152f
test(cli-next): add OpenAPI spec E2E tests and update instructions
Alive-Fish Apr 10, 2026
80994a9
fix(core-next): guard against prototype pollution in filterSpec path …
Alive-Fish Apr 10, 2026
d34b3e5
fix(cli-next): correct regenerate help test to use action subcommand
Alive-Fish Apr 10, 2026
067d96f
fix: resolve all 43 lifecycle E2E test failures
Alive-Fish Apr 10, 2026
3ab655f
refactor(core-next): remove 19 deprecated template descriptors (43 to…
Alive-Fish Apr 13, 2026
82fc62f
docs: update instructions and plan after descriptor cleanup
Alive-Fish Apr 13, 2026
05be3d4
fix(core-next): resolve lifecycle driver execution failures in CI E2E
Alive-Fish Apr 13, 2026
6391a5c
fix(core-next): mark untestable templates with testable: false
Alive-Fish Apr 13, 2026
30f9139
test(cli-next): fix E2E test robustness for CI
Alive-Fish Apr 13, 2026
34a270f
docs: update instructions, skills, and plan after E2E fix session
Alive-Fish Apr 13, 2026
2260d10
fix(core-next): resolve writeToEnvironmentFile key mismatch between d…
Alive-Fish Apr 13, 2026
68ea22a
fix(core-next): fix driver path resolution and output flow in executor
Alive-Fish Apr 13, 2026
307b498
fix: resolve lifecycle E2E test failures
Alive-Fish Apr 13, 2026
2694441
fix(core-next): resolve 4 lifecycle E2E test failure root causes
Alive-Fish Apr 13, 2026
34b8625
fix: resolve CI test failures in lifecycle tests
Alive-Fish Apr 14, 2026
7d79f0d
fix(core-next): make oauth/register baseUrl optional with apiSpecPath…
Alive-Fish Apr 14, 2026
cd882b7
fix(cli-next): fix resourceBaseName exceeding ARM maxLength:20 in E2E…
Alive-Fish Apr 14, 2026
ddd5194
fix(core-next): add runDotnetCommand driver, fix apiKey/oauth/aadApp …
Alive-Fish Apr 14, 2026
60789a6
fix(core-next): fix writeToEnvironmentFile key mismatch in oauth/regi…
Alive-Fish Apr 14, 2026
0010a2f
fix(core-next): resolve da/api-plugin-oauth unresolved env vars in aa…
Alive-Fish Apr 14, 2026
3412ce3
fix: resolve connector/graph E2E validate failure and improve ARM err…
Alive-Fish Apr 14, 2026
111be8f
fix(core-next): rename telemetry metric key from duration to duration…
Alive-Fish Apr 14, 2026
7aa1a50
fix(core-next): revert telemetry metric key to 'duration' and update …
Alive-Fish Apr 15, 2026
a97a74a
docs: add e2e-troubleshooting skill for CI lifecycle test debugging
Alive-Fish Apr 15, 2026
1ccf904
fix: mark connector/graph as untestable and improve AggregateError di…
Alive-Fish Apr 15, 2026
b230ebf
Merge remote-tracking branch 'origin/dev' into zhiyou/v4
Alive-Fish Apr 15, 2026
6272d90
feat(core-next,cli-next): wire MCP action add command (Gap 1)
Alive-Fish Apr 16, 2026
2e971c3
feat(core-next): publishAppPackage driver via Graph API + unpublish c…
Alive-Fish Apr 16, 2026
5445e96
feat(core-next): align M365PackageService with AtkContext and Result …
Alive-Fish Apr 16, 2026
ee16868
feat(core-next): add foundry-agent-to-m365 template descriptor (Gap 4)
Alive-Fish Apr 16, 2026
65303ff
feat(core-next): add da-meta-os-upgrade template descriptor (Gap 5)
Alive-Fish Apr 16, 2026
f3850b2
test(cli-next): add integration and E2E tests for gaps 2-5 with publi…
Alive-Fish Apr 16, 2026
0a2f60a
docs: update instructions and plans for gaps 1-5
Alive-Fish Apr 16, 2026
5d9edf9
fix(core-next): handle 400 on publishTeamsAppUpdate for sideloaded apps
Alive-Fish Apr 16, 2026
60d89b5
fix: mark foundry and metaos-upgrade templates as untestable in lifec…
Alive-Fish Apr 16, 2026
664d2c6
fix: handle sideloaded app 404 in publishTeamsAppUpdate and retry 412
Alive-Fish Apr 16, 2026
0d6a7b7
docs: add Graph API publish troubleshooting to E2E skill
Alive-Fish Apr 16, 2026
f1cc4d2
test(cli-next): phased Validator interface with richer e2e assertions
Alive-Fish Apr 17, 2026
d982fed
docs: add validator design assessment for core-next/cli-next refactor
Alive-Fish Apr 17, 2026
1f56957
fix(cli-next): resolve validator false positives surfaced by CI
Alive-Fish Apr 17, 2026
088468d
build: add agent skills setup script for reproducible installs
Alive-Fish Apr 21, 2026
a0d3aee
docs: refine .github/skills SKILL.md files
Alive-Fish Apr 21, 2026
0a1636b
build: vendor agent skills installed via setup script
Alive-Fish Apr 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
321 changes: 321 additions & 0 deletions .agents/skills/code-review-excellence/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,321 @@
# Contributing to AI Code Review Guide

Thank you for your interest in contributing! This document provides guidelines for contributing to this Claude Code Skill project.

## Claude Code Skill 开发规范

本项目是一个 Claude Code Skill,贡献者需要遵循以下规范。

### 目录结构

```
ai-code-review-guide/
├── SKILL.md # 必需:主文件(始终加载)
├── README.md # 项目说明文档
├── CONTRIBUTING.md # 贡献指南(本文件)
├── LICENSE # 许可证
├── reference/ # 按需加载的详细指南
│ ├── react.md
│ ├── vue.md
│ ├── rust.md
│ ├── typescript.md
│ ├── python.md
│ ├── c.md
│ ├── cpp.md
│ ├── common-bugs-checklist.md
│ ├── security-review-guide.md
│ └── code-review-best-practices.md
├── assets/ # 模板和快速参考
│ ├── review-checklist.md
│ └── pr-review-template.md
└── scripts/ # 工具脚本
└── pr-analyzer.py
```

### Frontmatter 规范

SKILL.md 必须包含 YAML frontmatter:

```yaml
---
name: skill-name
description: |
功能描述。触发条件说明。
Use when [具体使用场景]。
allowed-tools: ["Read", "Grep", "Glob"] # 可选:限制工具访问
---
```

#### 必需字段

| 字段 | 说明 | 约束 |
|------|------|------|
| `name` | Skill 标识符 | 小写字母、数字、连字符;最多 64 字符 |
| `description` | 功能和激活条件 | 最多 1024 字符;必须包含 "Use when" |

#### 可选字段

| 字段 | 说明 | 示例 |
|------|------|------|
| `allowed-tools` | 限制工具访问 | `["Read", "Grep", "Glob"]` |

### 命名约定

**Skill 名称规则**:
- 仅使用小写字母、数字和连字符(kebab-case)
- 最多 64 个字符
- 避免下划线或大写字母

```
✅ 正确:code-review-excellence, typescript-advanced-types
❌ 错误:CodeReview, code_review, TYPESCRIPT
```

**文件命名规则**:
- reference 文件使用小写:`react.md`, `vue.md`
- 多词文件使用连字符:`common-bugs-checklist.md`

### Description 写法规范

Description 必须包含两部分:

1. **功能陈述**:具体说明 Skill 能做什么
2. **触发条件**:以 "Use when" 开头,说明何时激活

```yaml
# ✅ 正确示例
description: |
Provides comprehensive code review guidance for React 19, Vue 3, Rust,
TypeScript, Java, Python, and C/C++.
Helps catch bugs, improve code quality, and give constructive feedback.
Use when reviewing pull requests, conducting PR reviews, establishing
review standards, or mentoring developers through code reviews.

# ❌ 错误示例(太模糊,缺少触发条件)
description: |
Helps with code review.
```

### Progressive Disclosure(渐进式披露)

Claude 只在需要时加载支持文件,不会一次性加载所有内容。

#### 文件职责划分

| 文件 | 加载时机 | 内容 |
|------|----------|------|
| `SKILL.md` | 始终加载 | 核心原则、快速索引、何时使用 |
| `reference/*.md` | 按需加载 | 语言/框架的详细指南 |
| `assets/*.md` | 明确需要时 | 模板、清单 |
| `scripts/*.py` | 明确指引时 | 工具脚本 |

#### 内容组织原则

**SKILL.md**(~200 行以内):
- 简述:2-3 句话说明用途
- 核心原则和方法论
- 语言/框架索引表(链接到 reference/)
- 何时使用此 Skill

**reference/*.md**(详细内容):
- 完整的代码示例
- 所有最佳实践
- Review Checklist
- 边界情况和陷阱

### 文件引用规范

在 SKILL.md 中引用其他文件时:

```markdown
# ✅ 正确:使用 Markdown 链接格式
| **React** | [React Guide](reference/react.md) | Hooks, React 19, RSC |
| **Vue 3** | [Vue Guide](reference/vue.md) | Composition API |

详见 [React Guide](reference/react.md) 获取完整指南。

# ❌ 错误:使用代码块格式
参考 `reference/react.md` 文件。
```

**路径规则**:
- 使用相对路径(相对于 Skill 目录)
- 使用正斜杠 `/`,不使用反斜杠
- 不需要 `./` 前缀

---

## 贡献类型

### 添加新语言支持

1. 在 `reference/` 目录创建新文件(如 `go.md`)
2. 遵循以下结构:

```markdown
# [Language] Code Review Guide

> 简短描述,一句话说明覆盖内容。

## 目录
- [主题1](#主题1)
- [主题2](#主题2)
- [Review Checklist](#review-checklist)

---

## 主题1

### 子主题

```[language]
// ❌ Bad pattern - 说明为什么不好
bad_code_example()

// ✅ Good pattern - 说明为什么好
good_code_example()
```

---

## Review Checklist

### 类别1
- [ ] 检查项 1
- [ ] 检查项 2
```

3. 在 `SKILL.md` 的索引表中添加链接
4. 更新 `README.md` 的统计信息

### 添加框架模式

1. 确保引用官方文档
2. 包含版本号(如 "React 19", "Vue 3.5+")
3. 提供可运行的代码示例
4. 添加对应的 checklist 项

### 改进现有内容

- 修复拼写或语法错误
- 更新过时的模式(注明版本变化)
- 添加边界情况示例
- 改进代码示例的清晰度

---

## 代码示例规范

### 格式要求

```markdown
// ❌ 问题描述 - 解释为什么这样做不好
problematic_code()

// ✅ 推荐做法 - 解释为什么这样做更好
recommended_code()
```

### 质量标准

- 示例应基于真实场景,避免人为构造
- 同时展示问题和解决方案
- 保持示例简洁聚焦
- 包含必要的上下文(import 语句等)

---

## 提交流程

### Issue 报告

- 使用 GitHub Issues 报告问题或建议
- 提供清晰的描述和示例
- 标注相关的语言/框架

### Pull Request 流程

1. Fork 仓库
2. 创建功能分支:`git checkout -b feature/add-go-support`
3. 进行修改
4. 提交(见下文 commit 格式)
5. 推送到 fork:`git push origin feature/add-go-support`
6. 创建 Pull Request

### Commit 消息格式

```
类型: 简短描述

详细说明(如需要)

- 具体变更 1
- 具体变更 2
```

**类型**:
- `feat`: 新功能或新内容
- `fix`: 修复错误
- `docs`: 仅文档变更
- `refactor`: 重构(不改变功能)
- `chore`: 维护性工作

**示例**:
```
feat: 添加 Go 语言代码审查指南

- 新增 reference/go.md
- 覆盖错误处理、并发、接口设计
- 更新 SKILL.md 索引表
```

---

## Skill 设计原则

### 单一职责

每个 Skill 专注一个核心能力。本 Skill 专注于**代码审查**,不应扩展到:
- 代码生成
- 项目初始化
- 部署配置

### 版本管理

- 在 reference 文件中标注框架/语言版本
- 更新时在 commit 中说明版本变化
- 过时内容应更新而非删除(除非完全废弃)

### 内容质量

- 所有建议应有依据(官方文档、最佳实践)
- 避免主观偏好(如代码风格),专注于客观问题
- 优先覆盖常见陷阱和安全问题

---

## 常见问题

### Q: 如何测试我的更改?

将修改后的 Skill 复制到 `~/.claude/skills/` 目录,然后在 Claude Code 中测试:
```bash
cp -r ai-code-review-guide ~/.claude/skills/code-review-excellence
```

### Q: 我应该更新 SKILL.md 还是 reference 文件?

- **SKILL.md**:只修改索引表或核心原则
- **reference/*.md**:添加/更新具体的语言或框架内容

### Q: 如何处理过时的内容?

1. 标注版本变化(如 "React 18 → React 19")
2. 保留旧版本内容(如果仍有用户使用)
3. 在 checklist 中更新相关项

---

## 问题咨询

如有任何问题,欢迎在 GitHub Issues 中提问。
21 changes: 21 additions & 0 deletions .agents/skills/code-review-excellence/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2025 tt-a1i

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Loading
Loading