---
name: bilal140202/add-target
source: https://app.decimal.ai/s/bilal140202-add-target@5/SKILL.md
source_sha256: d1db54b6ecac
---

<!-- Generated by stdagent dev. Source: .stdai/standards/skills/add-target/SKILL.md. Run `stdagent sync` to regenerate. Do not edit by hand. -->
<!-- std-ai degraded skills: add-target -->
<!-- Target tool "amp" does not natively support this type. Skill is an on-demand capability pack; AI loads it when the description matches user intent. -->


# 加一个新 target

stdagent 的扩展点是 `internal/transformer/`：每个 AI CLI 工具一个 .go 文件，实现 `Plan(docs, cfg) (*Plan, error)`。本 skill 给你完整的加 target 工作流。

## 触发场景

- 用户提到"加 X 工具"、"支持 Y AI CLI"
- 看到 docs/targets/ 出现新的 .md 但 internal/transformer/ 还没对应实现
- 收到 issue 请求新 target

## 流程

### 1. 调研先行（必须）

在 docs/targets/ 写一份调研 `docs/targets/<kebab-name>.md`，覆盖：

- 工具官方仓库 + 主页 URL
- 它读哪些路径（根文件名 + 子目录约定）
- frontmatter 字段方言（applyTo / globs / type 字段是否有特殊形式）
- 字节 / 字符上限（如有，记 SOFT 与 HARD 两档）
- 注入 marker 是否允许（comment vs frontmatter，对该工具有没有反作用）
- skill / command / subagent 概念是否原生支持，对应路径

调研不充分就动代码：一定踩坑。

### 2. 实现 transformer

新文件 `internal/transformer/<name>.go`：

```go
package transformer

import (
    "std-ai/internal/config"
    "std-ai/internal/parser"
    "std-ai/internal/writer"
)

type fooTransformer struct{}

func init() { Register("foo", &fooTransformer{}) }

func (t *fooTransformer) Plan(docs []*parser.Document, cfg *config.Config) (*writer.Plan, error) {
    plan := &writer.Plan{Target: "foo"}
    // ... fan out 逻辑
    return plan, nil
}
```

参考最简的 `aider.go`（reuse AGENTS.md，noop）或最复杂的 `claude_code.go`（root + .claude/rules/ + skills + commands + subagents + mcp）。

### 3. config 注册

`internal/config/config.go` 已经按 map 加载，无需改。但 `internal/cli/init_assets/` 的样板 config 与 `README*.md` 的 target 列表要加。

### 4. 测试

最低门槛：`internal/transformer/smoke_test.go` 里加一个 case，断言 Plan 返回非空 + 关键 path 出现。建议加专门的 `<name>_test.go` 覆盖 rules / skills / commands 各 type 的 fanout。

### 5. 文档

- README 6 个语言版本的 Tier 1 / Tier 2 表格加一行
- docs/conversion-rules.md 加列
- docs/spec.md Part 2 加章节（如果 frontmatter 方言独特）

### 6. 验证

```bash
# 在仓库自己的 .stdai/ 里开启新 target，跑 sync 看真实产物
mise run build
./bin/stdagent sync --target=<new-name>
ls -la .<new-name>/   # 或对应的根文件
```

## 已实现的 11 个 target（参考实现深度）

| target | 实现复杂度 | 参考 |
|---|---|---|
| aider | 极简（reuse AGENTS.md） | aider.go |
| antigravity | 简单 | antigravity.go |
| cline | 中等（数字前缀文件名排序） | cline.go |
| continue.dev | 中等 | continue.go |
| codex | 中（spillover 处理） | codex.go |
| copilot | 中（applyTo -> .instructions.md） | copilot.go |
| cursor | 中（.mdc frontmatter 方言） | cursor.go |
| gemini | 简单（GEMINI.md + commands toml） | gemini.go |
| opencode | 简单 | opencode.go |
| windsurf | 中（rules/skills/workflows 分目录） | windsurf.go |
| claude-code | 高（subagents / skill packages / mcp） | claude_code.go |

入门读 aider + gemini，进阶读 cursor + copilot，全功能读 claude_code。
<!-- /Generated by stdagent -->