@fitlab-ai/agent-infra 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -3
- package/README.zh-CN.md +1 -3
- package/lib/defaults.json +2 -0
- package/lib/init.js +1 -6
- package/lib/update.js +0 -55
- package/package.json +1 -1
- package/templates/.agents/QUICKSTART.md +10 -0
- package/templates/.agents/QUICKSTART.zh-CN.md +10 -0
- package/templates/.agents/README.md +18 -11
- package/templates/.agents/README.zh-CN.md +18 -11
- package/templates/.agents/skills/analyze-task/SKILL.md +1 -4
- package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +1 -3
- package/templates/.agents/skills/block-task/SKILL.md +1 -5
- package/templates/.agents/skills/block-task/SKILL.zh-CN.md +1 -4
- package/templates/.agents/skills/check-task/SKILL.md +1 -5
- package/templates/.agents/skills/check-task/SKILL.zh-CN.md +1 -3
- package/templates/.agents/skills/close-codescan/SKILL.md +1 -4
- package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +1 -3
- package/templates/.agents/skills/close-dependabot/SKILL.md +1 -4
- package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +1 -3
- package/templates/.agents/skills/commit/SKILL.md +26 -198
- package/templates/.agents/skills/commit/SKILL.zh-CN.md +26 -197
- package/templates/.agents/skills/commit/reference/commit-message.md +60 -0
- package/templates/.agents/skills/commit/reference/commit-message.zh-CN.md +60 -0
- package/templates/.agents/skills/commit/reference/copyright-check.md +39 -0
- package/templates/.agents/skills/commit/reference/copyright-check.zh-CN.md +39 -0
- package/templates/.agents/skills/commit/reference/task-status-update.md +88 -0
- package/templates/.agents/skills/commit/reference/task-status-update.zh-CN.md +88 -0
- package/templates/.agents/skills/complete-task/SKILL.md +1 -6
- package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +1 -4
- package/templates/.agents/skills/create-issue/SKILL.md +32 -251
- package/templates/.agents/skills/create-issue/SKILL.zh-CN.md +33 -252
- package/templates/.agents/skills/create-issue/reference/label-and-type.md +77 -0
- package/templates/.agents/skills/create-issue/reference/label-and-type.zh-CN.md +77 -0
- package/templates/.agents/skills/create-issue/reference/template-matching.md +45 -0
- package/templates/.agents/skills/create-issue/reference/template-matching.zh-CN.md +45 -0
- package/templates/.agents/skills/create-pr/SKILL.md +33 -224
- package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +32 -222
- package/templates/.agents/skills/create-pr/reference/branch-strategy.md +29 -0
- package/templates/.agents/skills/create-pr/reference/branch-strategy.zh-CN.md +29 -0
- package/templates/.agents/skills/create-pr/reference/pr-body-template.md +86 -0
- package/templates/.agents/skills/create-pr/reference/pr-body-template.zh-CN.md +86 -0
- package/templates/.agents/skills/create-release-note/SKILL.md +10 -13
- package/templates/.agents/skills/create-release-note/SKILL.zh-CN.md +10 -12
- package/templates/.agents/skills/create-task/SKILL.md +1 -4
- package/templates/.agents/skills/create-task/SKILL.zh-CN.md +1 -3
- package/templates/.agents/skills/implement-task/SKILL.md +46 -176
- package/templates/.agents/skills/implement-task/SKILL.zh-CN.md +42 -170
- package/templates/.agents/skills/implement-task/reference/implementation-rules.md +58 -0
- package/templates/.agents/skills/implement-task/reference/implementation-rules.zh-CN.md +58 -0
- package/templates/.agents/skills/implement-task/reference/report-template.md +63 -0
- package/templates/.agents/skills/implement-task/reference/report-template.zh-CN.md +63 -0
- package/templates/.agents/skills/import-codescan/SKILL.md +1 -4
- package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +1 -3
- package/templates/.agents/skills/import-dependabot/SKILL.md +1 -4
- package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +1 -3
- package/templates/.agents/skills/import-issue/SKILL.md +1 -3
- package/templates/.agents/skills/import-issue/SKILL.zh-CN.md +1 -3
- package/templates/.agents/skills/init-labels/SKILL.md +1 -4
- package/templates/.agents/skills/init-labels/SKILL.zh-CN.md +1 -4
- package/templates/.agents/skills/init-milestones/SKILL.md +1 -3
- package/templates/.agents/skills/init-milestones/SKILL.zh-CN.md +1 -3
- package/templates/.agents/skills/plan-task/SKILL.md +1 -5
- package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +1 -3
- package/templates/.agents/skills/refine-task/SKILL.md +38 -162
- package/templates/.agents/skills/refine-task/SKILL.zh-CN.md +36 -158
- package/templates/.agents/skills/refine-task/reference/fix-workflow.md +76 -0
- package/templates/.agents/skills/refine-task/reference/fix-workflow.zh-CN.md +76 -0
- package/templates/.agents/skills/refine-task/reference/report-template.md +38 -0
- package/templates/.agents/skills/refine-task/reference/report-template.zh-CN.md +38 -0
- package/templates/.agents/skills/refine-title/SKILL.md +1 -4
- package/templates/.agents/skills/refine-title/SKILL.zh-CN.md +1 -3
- package/templates/.agents/skills/release/SKILL.md +10 -12
- package/templates/.agents/skills/release/SKILL.zh-CN.md +10 -11
- package/templates/.agents/skills/review-task/SKILL.md +37 -239
- package/templates/.agents/skills/review-task/SKILL.zh-CN.md +37 -238
- package/templates/.agents/skills/review-task/reference/output-templates.md +72 -0
- package/templates/.agents/skills/review-task/reference/output-templates.zh-CN.md +72 -0
- package/templates/.agents/skills/review-task/reference/report-template.md +63 -0
- package/templates/.agents/skills/review-task/reference/report-template.zh-CN.md +63 -0
- package/templates/.agents/skills/review-task/reference/review-criteria.md +24 -0
- package/templates/.agents/skills/review-task/reference/review-criteria.zh-CN.md +24 -0
- package/templates/.agents/skills/sync-issue/SKILL.md +29 -487
- package/templates/.agents/skills/sync-issue/SKILL.zh-CN.md +30 -487
- package/templates/.agents/skills/sync-issue/reference/comment-publish.md +88 -0
- package/templates/.agents/skills/sync-issue/reference/comment-publish.zh-CN.md +88 -0
- package/templates/.agents/skills/sync-issue/reference/delivery-detection.md +42 -0
- package/templates/.agents/skills/sync-issue/reference/delivery-detection.zh-CN.md +42 -0
- package/templates/.agents/skills/sync-issue/reference/label-sync.md +63 -0
- package/templates/.agents/skills/sync-issue/reference/label-sync.zh-CN.md +63 -0
- package/templates/.agents/skills/sync-issue/reference/milestone-sync.md +37 -0
- package/templates/.agents/skills/sync-issue/reference/milestone-sync.zh-CN.md +37 -0
- package/templates/.agents/skills/sync-pr/SKILL.md +25 -287
- package/templates/.agents/skills/sync-pr/SKILL.zh-CN.md +29 -291
- package/templates/.agents/skills/sync-pr/reference/comment-publish.md +82 -0
- package/templates/.agents/skills/sync-pr/reference/comment-publish.zh-CN.md +82 -0
- package/templates/.agents/skills/sync-pr/reference/delivery-detection.md +54 -0
- package/templates/.agents/skills/sync-pr/reference/delivery-detection.zh-CN.md +54 -0
- package/templates/.agents/skills/test/SKILL.md +1 -3
- package/templates/.agents/skills/test/SKILL.zh-CN.md +1 -3
- package/templates/.agents/skills/test-integration/SKILL.md +1 -4
- package/templates/.agents/skills/test-integration/SKILL.zh-CN.md +1 -3
- package/templates/.agents/skills/update-agent-infra/SKILL.md +2 -6
- package/templates/.agents/skills/update-agent-infra/SKILL.zh-CN.md +2 -4
- package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +42 -46
- package/templates/.agents/skills/upgrade-dependency/SKILL.md +1 -4
- package/templates/.agents/skills/upgrade-dependency/SKILL.zh-CN.md +1 -3
- package/templates/.claude/CLAUDE.md +13 -51
- package/templates/.claude/CLAUDE.zh-CN.md +13 -51
- package/templates/.claude/commands/analyze-task.md +1 -1
- package/templates/.claude/commands/analyze-task.zh-CN.md +1 -1
- package/templates/.claude/commands/block-task.md +2 -1
- package/templates/.claude/commands/block-task.zh-CN.md +2 -1
- package/templates/.claude/commands/check-task.md +2 -1
- package/templates/.claude/commands/check-task.zh-CN.md +2 -1
- package/templates/.claude/commands/close-codescan.md +2 -1
- package/templates/.claude/commands/close-codescan.zh-CN.md +2 -1
- package/templates/.claude/commands/close-dependabot.md +2 -1
- package/templates/.claude/commands/close-dependabot.zh-CN.md +2 -1
- package/templates/.claude/commands/commit.md +1 -1
- package/templates/.claude/commands/commit.zh-CN.md +1 -1
- package/templates/.claude/commands/complete-task.md +1 -1
- package/templates/.claude/commands/complete-task.zh-CN.md +1 -1
- package/templates/.claude/commands/create-issue.md +1 -1
- package/templates/.claude/commands/create-issue.zh-CN.md +1 -1
- package/templates/.claude/commands/create-pr.md +1 -1
- package/templates/.claude/commands/create-pr.zh-CN.md +1 -1
- package/templates/.claude/commands/create-release-note.md +2 -1
- package/templates/.claude/commands/create-release-note.zh-CN.md +2 -1
- package/templates/.claude/commands/create-task.md +1 -1
- package/templates/.claude/commands/create-task.zh-CN.md +1 -1
- package/templates/.claude/commands/implement-task.md +1 -1
- package/templates/.claude/commands/implement-task.zh-CN.md +1 -1
- package/templates/.claude/commands/import-codescan.md +1 -0
- package/templates/.claude/commands/import-codescan.zh-CN.md +2 -1
- package/templates/.claude/commands/import-dependabot.md +1 -0
- package/templates/.claude/commands/import-dependabot.zh-CN.md +2 -1
- package/templates/.claude/commands/import-issue.md +1 -1
- package/templates/.claude/commands/import-issue.zh-CN.md +1 -1
- package/templates/.claude/commands/init-labels.md +1 -0
- package/templates/.claude/commands/init-labels.zh-CN.md +2 -1
- package/templates/.claude/commands/init-milestones.md +2 -1
- package/templates/.claude/commands/init-milestones.zh-CN.md +2 -1
- package/templates/.claude/commands/plan-task.md +1 -1
- package/templates/.claude/commands/plan-task.zh-CN.md +1 -1
- package/templates/.claude/commands/refine-task.zh-CN.md +1 -1
- package/templates/.claude/commands/refine-title.md +2 -1
- package/templates/.claude/commands/refine-title.zh-CN.md +2 -1
- package/templates/.claude/commands/release.md +2 -1
- package/templates/.claude/commands/release.zh-CN.md +2 -1
- package/templates/.claude/commands/review-task.md +1 -1
- package/templates/.claude/commands/review-task.zh-CN.md +1 -1
- package/templates/.claude/commands/sync-issue.md +1 -1
- package/templates/.claude/commands/sync-issue.zh-CN.md +1 -1
- package/templates/.claude/commands/sync-pr.md +1 -1
- package/templates/.claude/commands/sync-pr.zh-CN.md +1 -1
- package/templates/.claude/commands/test-integration.md +2 -1
- package/templates/.claude/commands/test-integration.zh-CN.md +2 -1
- package/templates/.claude/commands/test.md +1 -1
- package/templates/.claude/commands/test.zh-CN.md +1 -1
- package/templates/.claude/commands/update-agent-infra.md +2 -1
- package/templates/.claude/commands/update-agent-infra.zh-CN.md +2 -1
- package/templates/.claude/commands/upgrade-dependency.md +2 -1
- package/templates/.claude/commands/upgrade-dependency.zh-CN.md +2 -1
- package/templates/.gemini/commands/_project_/analyze-task.toml +1 -1
- package/templates/.gemini/commands/_project_/analyze-task.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/block-task.toml +1 -1
- package/templates/.gemini/commands/_project_/block-task.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/check-task.toml +1 -1
- package/templates/.gemini/commands/_project_/check-task.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/close-codescan.toml +1 -1
- package/templates/.gemini/commands/_project_/close-codescan.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/close-dependabot.toml +1 -1
- package/templates/.gemini/commands/_project_/close-dependabot.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/commit.toml +1 -1
- package/templates/.gemini/commands/_project_/commit.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/complete-task.toml +1 -1
- package/templates/.gemini/commands/_project_/complete-task.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/create-issue.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/create-pr.toml +1 -1
- package/templates/.gemini/commands/_project_/create-pr.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/create-release-note.toml +1 -1
- package/templates/.gemini/commands/_project_/create-release-note.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/create-task.toml +1 -1
- package/templates/.gemini/commands/_project_/create-task.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/implement-task.toml +1 -1
- package/templates/.gemini/commands/_project_/implement-task.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/import-codescan.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/import-dependabot.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/import-issue.toml +1 -1
- package/templates/.gemini/commands/_project_/import-issue.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/init-labels.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/init-milestones.toml +1 -1
- package/templates/.gemini/commands/_project_/init-milestones.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/plan-task.toml +1 -1
- package/templates/.gemini/commands/_project_/plan-task.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/refine-task.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/refine-title.toml +1 -1
- package/templates/.gemini/commands/_project_/refine-title.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/release.toml +1 -1
- package/templates/.gemini/commands/_project_/release.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/review-task.toml +1 -1
- package/templates/.gemini/commands/_project_/review-task.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/sync-issue.toml +1 -1
- package/templates/.gemini/commands/_project_/sync-issue.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/sync-pr.toml +1 -1
- package/templates/.gemini/commands/_project_/sync-pr.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/test-integration.toml +1 -1
- package/templates/.gemini/commands/_project_/test-integration.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/test.toml +1 -1
- package/templates/.gemini/commands/_project_/test.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/update-agent-infra.toml +1 -1
- package/templates/.gemini/commands/_project_/update-agent-infra.zh-CN.toml +1 -1
- package/templates/.gemini/commands/_project_/upgrade-dependency.toml +1 -1
- package/templates/.gemini/commands/_project_/upgrade-dependency.zh-CN.toml +1 -1
- package/templates/.github/hooks/check-version-format.sh +29 -0
- package/templates/.github/hooks/pre-commit +8 -0
- package/templates/.opencode/commands/analyze-task.md +1 -1
- package/templates/.opencode/commands/analyze-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/block-task.md +1 -1
- package/templates/.opencode/commands/block-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/check-task.md +1 -1
- package/templates/.opencode/commands/check-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/close-codescan.md +1 -1
- package/templates/.opencode/commands/close-codescan.zh-CN.md +1 -1
- package/templates/.opencode/commands/close-dependabot.md +1 -1
- package/templates/.opencode/commands/close-dependabot.zh-CN.md +1 -1
- package/templates/.opencode/commands/commit.md +1 -1
- package/templates/.opencode/commands/commit.zh-CN.md +1 -1
- package/templates/.opencode/commands/complete-task.md +1 -1
- package/templates/.opencode/commands/complete-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/create-issue.zh-CN.md +1 -1
- package/templates/.opencode/commands/create-pr.md +1 -1
- package/templates/.opencode/commands/create-pr.zh-CN.md +1 -1
- package/templates/.opencode/commands/create-release-note.md +1 -1
- package/templates/.opencode/commands/create-release-note.zh-CN.md +1 -1
- package/templates/.opencode/commands/create-task.md +1 -1
- package/templates/.opencode/commands/create-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/implement-task.md +1 -1
- package/templates/.opencode/commands/implement-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/import-codescan.zh-CN.md +1 -1
- package/templates/.opencode/commands/import-dependabot.zh-CN.md +1 -1
- package/templates/.opencode/commands/import-issue.md +1 -1
- package/templates/.opencode/commands/import-issue.zh-CN.md +1 -1
- package/templates/.opencode/commands/init-labels.zh-CN.md +1 -1
- package/templates/.opencode/commands/init-milestones.md +1 -1
- package/templates/.opencode/commands/init-milestones.zh-CN.md +1 -1
- package/templates/.opencode/commands/plan-task.md +1 -1
- package/templates/.opencode/commands/plan-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/refine-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/refine-title.md +1 -1
- package/templates/.opencode/commands/refine-title.zh-CN.md +1 -1
- package/templates/.opencode/commands/release.md +1 -1
- package/templates/.opencode/commands/release.zh-CN.md +1 -1
- package/templates/.opencode/commands/review-task.md +1 -1
- package/templates/.opencode/commands/review-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/sync-issue.md +1 -1
- package/templates/.opencode/commands/sync-issue.zh-CN.md +1 -1
- package/templates/.opencode/commands/sync-pr.md +1 -1
- package/templates/.opencode/commands/sync-pr.zh-CN.md +1 -1
- package/templates/.opencode/commands/test-integration.md +1 -1
- package/templates/.opencode/commands/test-integration.zh-CN.md +1 -1
- package/templates/.opencode/commands/test.md +1 -1
- package/templates/.opencode/commands/test.zh-CN.md +1 -1
- package/templates/.opencode/commands/update-agent-infra.md +1 -1
- package/templates/.opencode/commands/update-agent-infra.zh-CN.md +1 -1
- package/templates/.opencode/commands/upgrade-dependency.md +1 -1
- package/templates/.opencode/commands/upgrade-dependency.zh-CN.md +1 -1
- package/templates/AGENTS.md +10 -2
- package/templates/AGENTS.zh-CN.md +10 -2
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: update-agent-infra
|
|
3
|
-
description:
|
|
4
|
-
Update the current project's AI collaboration infrastructure
|
|
5
|
-
and project governance to match the latest agent-infra
|
|
6
|
-
templates. Intelligently merges template changes while
|
|
7
|
-
preserving project-specific customizations.
|
|
3
|
+
description: "Update the project AI collaboration configuration"
|
|
8
4
|
---
|
|
9
5
|
|
|
10
6
|
# Update Project
|
|
@@ -28,7 +24,7 @@ Execute the following command to handle all deterministic steps at once:
|
|
|
28
24
|
node .agents/skills/update-agent-infra/scripts/sync-templates.js
|
|
29
25
|
```
|
|
30
26
|
|
|
31
|
-
The script reads `.agents/.airc.json
|
|
27
|
+
The script reads `.agents/.airc.json`, automatically locates the installed `@fitlab-ai/agent-infra/templates/` directory via npm, and performs:
|
|
32
28
|
- detect the template source version
|
|
33
29
|
- File registry sync (`defaults.json` → `.agents/.airc.json`)
|
|
34
30
|
- All managed files (language selection → exclude merged/ejected → placeholder rendering → overwrite)
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: update-agent-infra
|
|
3
|
-
description:
|
|
4
|
-
更新当前项目的 AI 协作基础设施和项目治理配置,使其与最新的 agent-infra 模板保持一致。
|
|
5
|
-
智能合并模板变更,同时保留项目特定的定制内容。
|
|
3
|
+
description: "更新项目 AI 协作配置"
|
|
6
4
|
---
|
|
7
5
|
|
|
8
6
|
# 更新项目
|
|
@@ -24,7 +22,7 @@ description: >
|
|
|
24
22
|
node .agents/skills/update-agent-infra/scripts/sync-templates.js
|
|
25
23
|
```
|
|
26
24
|
|
|
27
|
-
脚本读取 `.agents/.airc.json
|
|
25
|
+
脚本读取 `.agents/.airc.json`,并通过 npm 自动定位已安装的 `@fitlab-ai/agent-infra/templates/` 目录,然后自动完成:
|
|
28
26
|
- 检测模板源版本
|
|
29
27
|
- 同步文件注册表(`defaults.json` → `.agents/.airc.json`)
|
|
30
28
|
- 处理所有 managed 文件(语言选择 → 排除 merged/ejected → 占位符渲染 → 覆盖写入)
|
|
@@ -29,6 +29,7 @@ const DEFAULTS = {
|
|
|
29
29
|
".claude/commands/",
|
|
30
30
|
".claude/hooks/",
|
|
31
31
|
".gemini/commands/",
|
|
32
|
+
".github/hooks/check-version-format.sh",
|
|
32
33
|
".opencode/commands/"
|
|
33
34
|
],
|
|
34
35
|
"merged": [
|
|
@@ -47,6 +48,7 @@ const DEFAULTS = {
|
|
|
47
48
|
".claude/settings.json",
|
|
48
49
|
".codex/README.md",
|
|
49
50
|
".gemini/settings.json",
|
|
51
|
+
".github/hooks/pre-commit",
|
|
50
52
|
".gitignore",
|
|
51
53
|
".opencode/COMMAND_STYLE_GUIDE.md",
|
|
52
54
|
".opencode/README.md",
|
|
@@ -56,7 +58,7 @@ const DEFAULTS = {
|
|
|
56
58
|
}
|
|
57
59
|
};
|
|
58
60
|
|
|
59
|
-
const INSTALLER_VERSION = "v0.4.
|
|
61
|
+
const INSTALLER_VERSION = "v0.4.1";
|
|
60
62
|
|
|
61
63
|
function norm(p) { return p.replace(/\\/g, '/'); }
|
|
62
64
|
|
|
@@ -114,18 +116,45 @@ function renderPathname(p, project) {
|
|
|
114
116
|
return p.replace(/_project_/g, project);
|
|
115
117
|
}
|
|
116
118
|
|
|
117
|
-
function
|
|
118
|
-
|
|
119
|
+
function isTemplateDir(dir) {
|
|
120
|
+
try {
|
|
121
|
+
return fs.statSync(dir).isDirectory();
|
|
122
|
+
} catch {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
function resolveInstalledTemplateDir(nodeModulesRoot) {
|
|
128
|
+
if (!nodeModulesRoot) return null;
|
|
129
|
+
const candidate = path.join(nodeModulesRoot, '@fitlab-ai', 'agent-infra', 'templates');
|
|
130
|
+
return isTemplateDir(candidate) ? candidate : null;
|
|
131
|
+
}
|
|
119
132
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
133
|
+
function resolveTemplateRoot(projectRoot) {
|
|
134
|
+
try {
|
|
135
|
+
const globalRoot = childProcess.execSync('npm root -g', {
|
|
136
|
+
encoding: 'utf8',
|
|
137
|
+
stdio: ['pipe', 'pipe', 'pipe']
|
|
138
|
+
}).trim();
|
|
139
|
+
const globalTemplateRoot = resolveInstalledTemplateDir(globalRoot);
|
|
140
|
+
if (globalTemplateRoot) return globalTemplateRoot;
|
|
141
|
+
} catch {
|
|
142
|
+
// npm may be unavailable or not configured.
|
|
143
|
+
}
|
|
123
144
|
|
|
124
145
|
try {
|
|
125
|
-
|
|
146
|
+
const localRoot = childProcess.execSync('npm root', {
|
|
147
|
+
cwd: projectRoot,
|
|
148
|
+
encoding: 'utf8',
|
|
149
|
+
stdio: ['pipe', 'pipe', 'pipe']
|
|
150
|
+
}).trim();
|
|
151
|
+
const localTemplateRoot = resolveInstalledTemplateDir(localRoot);
|
|
152
|
+
if (localTemplateRoot) return localTemplateRoot;
|
|
126
153
|
} catch {
|
|
127
|
-
|
|
154
|
+
// npm may be unavailable or the project may not have a local install.
|
|
128
155
|
}
|
|
156
|
+
|
|
157
|
+
return null;
|
|
129
158
|
}
|
|
130
159
|
|
|
131
160
|
function isBinary(fp) {
|
|
@@ -173,44 +202,9 @@ function langSelect(rels, lang, allSet, project) {
|
|
|
173
202
|
return sel;
|
|
174
203
|
}
|
|
175
204
|
|
|
176
|
-
function syncTemplates(projectRoot) {
|
|
205
|
+
function syncTemplates(projectRoot, templateRootOverride) {
|
|
177
206
|
const configDir = path.join(projectRoot, '.agents');
|
|
178
207
|
const cfgPath = path.join(configDir, '.airc.json');
|
|
179
|
-
const legacyCfgPaths = [
|
|
180
|
-
path.join(projectRoot, '.airc.json'),
|
|
181
|
-
path.join(projectRoot, '.agent-infra', 'config.json')
|
|
182
|
-
];
|
|
183
|
-
const workspacePath = path.join(configDir, 'workspace');
|
|
184
|
-
const legacyWorkspacePaths = [
|
|
185
|
-
path.join(projectRoot, '.agent-workspace'),
|
|
186
|
-
path.join(projectRoot, '.agent-infra', 'workspace')
|
|
187
|
-
];
|
|
188
|
-
|
|
189
|
-
if (!fs.existsSync(cfgPath)) {
|
|
190
|
-
for (const legacyCfgPath of legacyCfgPaths) {
|
|
191
|
-
if (!fs.existsSync(legacyCfgPath)) continue;
|
|
192
|
-
fs.mkdirSync(configDir, { recursive: true });
|
|
193
|
-
fs.renameSync(legacyCfgPath, cfgPath);
|
|
194
|
-
break;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
if (!fs.existsSync(workspacePath)) {
|
|
198
|
-
for (const legacyWorkspacePath of legacyWorkspacePaths) {
|
|
199
|
-
if (!fs.existsSync(legacyWorkspacePath)) continue;
|
|
200
|
-
fs.mkdirSync(configDir, { recursive: true });
|
|
201
|
-
fs.renameSync(legacyWorkspacePath, workspacePath);
|
|
202
|
-
break;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
try {
|
|
207
|
-
const legacyConfigDir = path.join(projectRoot, '.agent-infra');
|
|
208
|
-
if (fs.existsSync(legacyConfigDir) && fs.readdirSync(legacyConfigDir).length === 0) {
|
|
209
|
-
fs.rmdirSync(legacyConfigDir);
|
|
210
|
-
}
|
|
211
|
-
} catch {
|
|
212
|
-
// Ignore cleanup failures for partially migrated directories.
|
|
213
|
-
}
|
|
214
208
|
|
|
215
209
|
if (!fs.existsSync(cfgPath)) {
|
|
216
210
|
return { error: 'No .agents/.airc.json in project root.' };
|
|
@@ -218,11 +212,12 @@ function syncTemplates(projectRoot) {
|
|
|
218
212
|
|
|
219
213
|
const cfg = JSON.parse(fs.readFileSync(cfgPath, 'utf8'));
|
|
220
214
|
const configPathRel = norm(path.relative(projectRoot, cfgPath));
|
|
221
|
-
const templateRoot =
|
|
215
|
+
const templateRoot = templateRootOverride || resolveTemplateRoot(projectRoot);
|
|
222
216
|
if (!templateRoot) {
|
|
223
217
|
return { error: 'Template source not found. Install via npm: npm install -g @fitlab-ai/agent-infra' };
|
|
224
218
|
}
|
|
225
219
|
const version = INSTALLER_VERSION;
|
|
220
|
+
const hadTemplateSource = Object.prototype.hasOwnProperty.call(cfg, 'templateSource');
|
|
226
221
|
|
|
227
222
|
const { project, org, language: lang = 'en' } = cfg;
|
|
228
223
|
const vars = { project, org };
|
|
@@ -395,8 +390,9 @@ function syncTemplates(projectRoot) {
|
|
|
395
390
|
cfg.files.merged = merged;
|
|
396
391
|
cfg.files.ejected = ejected;
|
|
397
392
|
cfg.templateVersion = version;
|
|
393
|
+
delete cfg.templateSource;
|
|
398
394
|
|
|
399
|
-
report.configUpdated = hasChanges || prevVersion !== version;
|
|
395
|
+
report.configUpdated = hasChanges || prevVersion !== version || hadTemplateSource;
|
|
400
396
|
|
|
401
397
|
fs.writeFileSync(cfgPath, JSON.stringify(cfg, null, 2) + '\n', 'utf8');
|
|
402
398
|
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: upgrade-dependency
|
|
3
|
-
description:
|
|
4
|
-
Upgrade a specified dependency package to a new version and verify
|
|
5
|
-
the change. Triggered when the user requests dependency upgrade.
|
|
6
|
-
Arguments: package name, old version, new version.
|
|
3
|
+
description: "Upgrade a dependency and validate the change"
|
|
7
4
|
---
|
|
8
5
|
|
|
9
6
|
# Upgrade Dependency
|
|
@@ -88,56 +88,10 @@ Co-Authored-By: Claude <noreply@anthropic.com>
|
|
|
88
88
|
|
|
89
89
|
## Slash Commands
|
|
90
90
|
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
/commit [message] # Commit code
|
|
94
|
-
/create-pr [branch] # Create PR
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### Task Management
|
|
98
|
-
```bash
|
|
99
|
-
/create-task <description> # Create task from description
|
|
100
|
-
/import-issue <number> # Import GitHub Issue as task
|
|
101
|
-
/analyze-task <task-id> # Analyze task requirements
|
|
102
|
-
/plan-task <task-id> # Design technical plan
|
|
103
|
-
/implement-task <task-id> # Implement task
|
|
104
|
-
/review-task <task-id> # Code review
|
|
105
|
-
/complete-task <task-id> # Complete task
|
|
106
|
-
/check-task <task-id> # Check status
|
|
107
|
-
/block-task <task-id> # Block task
|
|
108
|
-
/refine-task <task-id> # Handle review feedback
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### PR and Sync
|
|
112
|
-
```bash
|
|
113
|
-
/sync-issue <number> # Sync progress to Issue
|
|
114
|
-
/sync-pr <number> # Sync progress to PR
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
### Testing and Release
|
|
118
|
-
```bash
|
|
119
|
-
/test # Run tests
|
|
120
|
-
/test-integration # Run integration tests
|
|
121
|
-
/release <version> # Version release
|
|
122
|
-
/create-release-note # Generate release notes
|
|
123
|
-
```
|
|
91
|
+
Available commands are auto-discovered from `.claude/commands/`. Type `/` in the prompt to see the full list with descriptions.
|
|
124
92
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
/import-dependabot <number> # Import Dependabot alert
|
|
128
|
-
/close-dependabot # Close Dependabot alert
|
|
129
|
-
/import-codescan <number> # Import Code Scanning alert
|
|
130
|
-
/close-codescan # Close Code Scanning alert
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### Tools
|
|
134
|
-
```bash
|
|
135
|
-
/init-milestones # Initialize GitHub Milestones
|
|
136
|
-
/init-labels # Initialize GitHub Labels
|
|
137
|
-
/refine-title # Reformat Issue/PR title
|
|
138
|
-
/upgrade-dependency # Upgrade dependency
|
|
139
|
-
/update-agent-infra # Update AI collaboration config
|
|
140
|
-
```
|
|
93
|
+
For task workflow, the typical sequence is:
|
|
94
|
+
`/create-task` -> `/analyze-task` -> `/plan-task` -> `/implement-task` -> `/review-task` -> `/complete-task`
|
|
141
95
|
|
|
142
96
|
## Language Conventions
|
|
143
97
|
|
|
@@ -159,14 +113,22 @@ This project supports Claude Code, Codex, Gemini CLI, OpenCode.
|
|
|
159
113
|
|
|
160
114
|
## Skill Authoring Conventions
|
|
161
115
|
|
|
162
|
-
When writing or updating `.agents/skills/*/SKILL.md` files, keep step numbering consistent:
|
|
116
|
+
When writing or updating `.agents/skills/*/SKILL.md` files and their templates, keep step numbering consistent:
|
|
163
117
|
|
|
164
118
|
1. Use consecutive integers for top-level steps: `1.`, `2.`, `3.`.
|
|
165
119
|
2. Use nested numbering only for child actions that belong to a parent step: `1.1`, `1.2`, `2.1`.
|
|
166
|
-
3. Use `a`, `b`, and `c` markers for
|
|
120
|
+
3. Use `a`, `b`, and `c` markers for subordinate options, conditional branches, or parallel possibilities within the same step; use them only for in-step expansion, not for naming standalone decision paths or output templates.
|
|
167
121
|
4. Do not use intermediate numbers such as `1.5` or `2.5`; if a new standalone step is needed, renumber the following top-level steps.
|
|
168
122
|
5. When renumbering, update every in-document step reference so the instructions remain accurate.
|
|
169
123
|
6. Extract long bash scripts into a sibling `scripts/` directory; the SKILL.md should contain only a single-line invocation (e.g., `bash .agents/skills/<skill>/scripts/<script>.sh`) and a brief summary of the script's responsibilities.
|
|
124
|
+
7. In SKILL.md files and their `reference/` templates, when a standalone conditional flow, decision path, or output template needs a label, use "Scenario" naming (for example, use "Scenario A").
|
|
125
|
+
|
|
126
|
+
### SKILL.md Size Control
|
|
127
|
+
|
|
128
|
+
- Keep the SKILL.md body within about 500 tokens (roughly 80 lines / 2KB).
|
|
129
|
+
- Move content beyond that threshold into a sibling `reference/` directory.
|
|
130
|
+
- Use explicit navigation in the skeleton, such as: `Read reference/xxx.md before executing this step.`
|
|
131
|
+
- Keep scripts in `scripts/` and execute them instead of inlining long bash blocks.
|
|
170
132
|
|
|
171
133
|
<!-- Canonical source: .agents/README.md - keep in sync -->
|
|
172
134
|
|
|
@@ -88,56 +88,10 @@ Co-Authored-By: Claude <noreply@anthropic.com>
|
|
|
88
88
|
|
|
89
89
|
## Slash Commands
|
|
90
90
|
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
/commit [message] # 提交代码
|
|
94
|
-
/create-pr [branch] # 创建 PR
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### 任务管理
|
|
98
|
-
```bash
|
|
99
|
-
/create-task <description> # 创建任务
|
|
100
|
-
/import-issue <number> # 导入 GitHub Issue 为任务
|
|
101
|
-
/analyze-task <task-id> # 分析任务需求
|
|
102
|
-
/plan-task <task-id> # 设计方案
|
|
103
|
-
/implement-task <task-id> # 实施任务
|
|
104
|
-
/review-task <task-id> # 代码审查
|
|
105
|
-
/complete-task <task-id> # 完成任务
|
|
106
|
-
/check-task <task-id> # 查看状态
|
|
107
|
-
/block-task <task-id> # 阻塞任务
|
|
108
|
-
/refine-task <task-id> # 处理审查反馈
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### PR 与同步
|
|
112
|
-
```bash
|
|
113
|
-
/sync-issue <number> # 同步进度到 Issue
|
|
114
|
-
/sync-pr <number> # 同步进度到 PR
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
### 测试与发布
|
|
118
|
-
```bash
|
|
119
|
-
/test # 运行测试
|
|
120
|
-
/test-integration # 运行集成测试
|
|
121
|
-
/release <version> # 版本发布
|
|
122
|
-
/create-release-note # 生成发布说明
|
|
123
|
-
```
|
|
91
|
+
可用命令从 `.claude/commands/` 自动发现。在提示符中输入 `/` 查看完整列表和描述。
|
|
124
92
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
/import-dependabot <number> # 导入 Dependabot 告警
|
|
128
|
-
/close-dependabot # 关闭 Dependabot 告警
|
|
129
|
-
/import-codescan <number> # 导入 Code Scanning 告警
|
|
130
|
-
/close-codescan # 关闭 Code Scanning 告警
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### 工具
|
|
134
|
-
```bash
|
|
135
|
-
/init-milestones # 初始化 GitHub Milestones
|
|
136
|
-
/init-labels # 初始化 GitHub Labels
|
|
137
|
-
/refine-title # 重构 Issue/PR 标题
|
|
138
|
-
/upgrade-dependency # 升级依赖
|
|
139
|
-
/update-agent-infra # 更新 AI 协作配置
|
|
140
|
-
```
|
|
93
|
+
任务工作流的典型顺序:
|
|
94
|
+
`/create-task` -> `/analyze-task` -> `/plan-task` -> `/implement-task` -> `/review-task` -> `/complete-task`
|
|
141
95
|
|
|
142
96
|
## 语言规范
|
|
143
97
|
|
|
@@ -159,14 +113,22 @@ Co-Authored-By: Claude <noreply@anthropic.com>
|
|
|
159
113
|
|
|
160
114
|
## Skill 编写规范
|
|
161
115
|
|
|
162
|
-
编写或维护 `.agents/skills/*/SKILL.md`
|
|
116
|
+
编写或维护 `.agents/skills/*/SKILL.md` 及其模板时,步骤编号遵循以下规则:
|
|
163
117
|
|
|
164
118
|
1. 顶级步骤使用连续整数:`1.`、`2.`、`3.`。
|
|
165
119
|
2. 只有父步骤下的从属动作才使用子步骤:`1.1`、`1.2`、`2.1`。
|
|
166
|
-
3.
|
|
120
|
+
3. 同一步中的从属选项、条件分支或并列可能性使用 `a`、`b`、`c` 标记;仅用于步骤内部的子项展开,不用于命名独立的决策路径或输出模板。
|
|
167
121
|
4. 不要使用 `1.5`、`2.5` 这类中间编号;如新增独立步骤,应整体顺延后续编号。
|
|
168
122
|
5. 调整编号时,必须同步更新文中的步骤引用,确保说明、命令和检查点一致。
|
|
169
123
|
6. 长 bash 脚本应从 SKILL.md 提取到同级 `scripts/` 目录中,SKILL.md 只保留单行调用(如 `bash .agents/skills/<skill>/scripts/<script>.sh`)和对脚本职责的概要说明。
|
|
124
|
+
7. 在 SKILL.md 及其 `reference/` 模板中,如需为独立的条件分流、决策路径或输出模板命名,统一使用“场景”命名(例如使用“场景 A”)。
|
|
125
|
+
|
|
126
|
+
### SKILL.md 体积控制
|
|
127
|
+
|
|
128
|
+
- SKILL.md 正文控制在约 500 tokens(约 80 行 / 2KB)以内。
|
|
129
|
+
- 超过阈值的内容拆分到同级 `reference/` 目录。
|
|
130
|
+
- 骨架中使用明确导航,例如:`执行此步骤前,先读取 reference/xxx.md。`
|
|
131
|
+
- 长脚本继续放在 `scripts/` 目录,优先执行脚本而不是内联大段 bash。
|
|
170
132
|
|
|
171
133
|
<!-- Canonical source: .agents/README.zh-CN.md - keep in sync -->
|
|
172
134
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Mark task as blocked and record
|
|
2
|
+
description: "Mark a task as blocked and record the reason"
|
|
3
3
|
usage: "/block-task <task-id> [reason]"
|
|
4
|
+
disable-model-invocation: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
Read and execute the block-task skill from `.agents/skills/block-task/SKILL.md`.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "
|
|
2
|
+
description: "标记任务为阻塞状态并记录原因"
|
|
3
3
|
usage: "/block-task <task-id> [reason]"
|
|
4
|
+
disable-model-invocation: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
读取并执行 `.agents/skills/block-task/SKILL.md` 中的 block-task 技能。
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "
|
|
2
|
+
description: "Check a task's current status and progress"
|
|
3
3
|
usage: "/check-task <task-id>"
|
|
4
|
+
disable-model-invocation: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
Read and execute the check-task skill from `.agents/skills/check-task/SKILL.md`.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Close Code Scanning alert with documented reason"
|
|
2
|
+
description: "Close a Code Scanning alert with a documented reason"
|
|
3
3
|
usage: "/close-codescan <alert-number>"
|
|
4
|
+
disable-model-invocation: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
Read and execute the close-codescan skill from `.agents/skills/close-codescan/SKILL.md`.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "关闭 Code Scanning
|
|
2
|
+
description: "关闭 Code Scanning 告警并记录理由"
|
|
3
3
|
usage: "/close-codescan <alert-number>"
|
|
4
|
+
disable-model-invocation: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
读取并执行 `.agents/skills/close-codescan/SKILL.md` 中的 close-codescan 技能。
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Close Dependabot
|
|
2
|
+
description: "Close a Dependabot alert with a documented reason"
|
|
3
3
|
usage: "/close-dependabot <alert-number>"
|
|
4
|
+
disable-model-invocation: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
Read and execute the close-dependabot skill from `.agents/skills/close-dependabot/SKILL.md`.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "关闭 Dependabot
|
|
2
|
+
description: "关闭 Dependabot 安全告警并记录理由"
|
|
3
3
|
usage: "/close-dependabot <alert-number>"
|
|
4
|
+
disable-model-invocation: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
读取并执行 `.agents/skills/close-dependabot/SKILL.md` 中的 close-dependabot 技能。
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "
|
|
2
|
+
description: "Generate release notes from PRs and commits"
|
|
3
3
|
usage: "/create-release-note <ver> [prev]"
|
|
4
|
+
disable-model-invocation: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
Read and execute the create-release-note skill from `.agents/skills/create-release-note/SKILL.md`.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "从 PR 和 commit
|
|
2
|
+
description: "从 PR 和 commit 生成版本发布说明"
|
|
3
3
|
usage: "/create-release-note <ver> [prev]"
|
|
4
|
+
disable-model-invocation: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
读取并执行 `.agents/skills/create-release-note/SKILL.md` 中的 create-release-note 技能。
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "导入 Code Scanning
|
|
2
|
+
description: "导入 Code Scanning 告警并创建修复任务"
|
|
3
3
|
usage: "/import-codescan <alert-number>"
|
|
4
|
+
disable-model-invocation: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
读取并执行 `.agents/skills/import-codescan/SKILL.md` 中的 import-codescan 技能。
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "导入 Dependabot
|
|
2
|
+
description: "导入 Dependabot 安全告警并创建修复任务"
|
|
3
3
|
usage: "/import-dependabot <alert-number>"
|
|
4
|
+
disable-model-invocation: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
读取并执行 `.agents/skills/import-dependabot/SKILL.md` 中的 import-dependabot 技能。
|