♻️ refactor(agent): streamline skills and rulesets
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
diff --git a/skills/thirdparty/codebase-recon/SKILL.md b/skills/thirdparty/codebase-recon/SKILL.md
|
||||
--- a/skills/thirdparty/codebase-recon/SKILL.md
|
||||
+++ b/skills/thirdparty/codebase-recon/SKILL.md
|
||||
@@ -252 +252 @@ Core methodology:
|
||||
-- [confidence.md](../pathfinding/references/confidence.md) — confidence calibration (shared with pathfinding)
|
||||
+- [confidence-calibration.md](references/confidence-calibration.md) — evidence-based confidence calibration
|
||||
@@ -263 +263,0 @@ Related skills:
|
||||
-- `outfitter:pathfinding` — clarifying requirements before analysis
|
||||
diff --git a/skills/thirdparty/codebase-recon/references/confidence-calibration.md b/skills/thirdparty/codebase-recon/references/confidence-calibration.md
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/skills/thirdparty/codebase-recon/references/confidence-calibration.md
|
||||
@@ -0,0 +1,66 @@
|
||||
+# Confidence Calibration
|
||||
+
|
||||
+Confidence measures how strongly the available evidence supports a codebase
|
||||
+finding. It does not measure requirement clarity or implementation readiness.
|
||||
+
|
||||
+## Calibration Dimensions
|
||||
+
|
||||
+Consider these dimensions together; do not average them mechanically:
|
||||
+
|
||||
+- **Directness**: runtime observation and source code outweigh inference.
|
||||
+- **Coverage**: evidence spans the relevant execution paths and modules.
|
||||
+- **Corroboration**: code, tests, documentation, and history agree.
|
||||
+- **Counter-evidence**: plausible alternatives and contradictory cases were checked.
|
||||
+- **Remaining gaps**: unknown behavior is bounded and stated explicitly.
|
||||
+
|
||||
+## Typical Levels
|
||||
+
|
||||
+| Level | Evidence state |
|
||||
+| --- | --- |
|
||||
+| 0 | No repository evidence collected yet. |
|
||||
+| 1 | Broad structure or search results only. |
|
||||
+| 2 | Relevant code located, but behavior or scope is not verified. |
|
||||
+| 3 | Main path traced with some corroboration; meaningful gaps remain. |
|
||||
+| 4 | Multiple sources support the finding and counter-examples were checked. |
|
||||
+| 5 | Relevant scope is covered, alternatives are ruled out, and conclusions are directly supported. |
|
||||
+
|
||||
+A clear user request can narrow the investigation but cannot raise confidence in
|
||||
+a finding by itself. Documentation alone normally remains at level 1-2. A
|
||||
+single code path without tests, history, or runtime confirmation normally
|
||||
+remains at level 2-3.
|
||||
+
|
||||
+## Examples
|
||||
+
|
||||
+### Focused Question, Strong Evidence
|
||||
+
|
||||
+Question: "Does deleting this adapter break the HTTP client?"
|
||||
+
|
||||
+Evidence: imports show no production consumer, tests cover the replacement
|
||||
+adapter, and history confirms the old adapter was retained only for migration.
|
||||
+After checking dynamic loading and configuration references, report at level
|
||||
+4-5. Cite each source and distinguish observed facts from the final inference.
|
||||
+
|
||||
+### Cross-Module Finding, Incomplete Evidence
|
||||
+
|
||||
+Question: "Why do all write operations depend on the legacy package?"
|
||||
+
|
||||
+Evidence: searches show imports in several modules, but runtime registration
|
||||
+and generated code have not been inspected. Stay at level 2-3. Continue tracing
|
||||
+composition roots and tests before claiming an architectural dependency.
|
||||
+
|
||||
+### Early Delivery
|
||||
+
|
||||
+The user asks for findings before runtime behavior or history can be checked.
|
||||
+Deliver the verified portion at its current level and include `△ Caveats` with:
|
||||
+
|
||||
+- the evidence already inspected;
|
||||
+- assumptions required by the conclusion;
|
||||
+- unverified modules or execution paths;
|
||||
+- the next checks that would materially change confidence.
|
||||
+
|
||||
+Do not present the early report as level 5 even when the likely explanation is
|
||||
+simple.
|
||||
+
|
||||
+## Delivery Check
|
||||
+
|
||||
+Before assigning level 4 or 5, confirm that:
|
||||
+
|
||||
+- more than one relevant evidence source supports the conclusion;
|
||||
+- direct observations and inferences are labeled separately;
|
||||
+- at least one plausible counter-example was considered;
|
||||
+- the investigated scope matches the wording of the conclusion;
|
||||
+- remaining uncertainty is absent or explicitly bounded.
|
||||
@@ -13,35 +13,25 @@
|
||||
"skills/misc"
|
||||
],
|
||||
"include_skill_dirs": [
|
||||
"ask-matt",
|
||||
"code-review",
|
||||
"codebase-design",
|
||||
"diagnosing-bugs",
|
||||
"domain-modeling",
|
||||
"git-guardrails-claude-code",
|
||||
"grill-me",
|
||||
"grill-with-docs",
|
||||
"grilling",
|
||||
"handoff",
|
||||
"implement",
|
||||
"improve-codebase-architecture",
|
||||
"migrate-to-shoehorn",
|
||||
"prototype",
|
||||
"research",
|
||||
"resolving-merge-conflicts",
|
||||
"scaffold-exercises",
|
||||
"setup-matt-pocock-skills",
|
||||
"setup-pre-commit",
|
||||
"tdd",
|
||||
"teach",
|
||||
"to-questionnaire",
|
||||
"to-spec",
|
||||
"to-tickets",
|
||||
"triage",
|
||||
"wait-what",
|
||||
"wayfinder",
|
||||
"wizard",
|
||||
"writing-for-agents"
|
||||
"wizard"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -57,15 +47,6 @@
|
||||
"data_dir": "src/ui-ux-pro-max/data",
|
||||
"scripts_dir": "src/ui-ux-pro-max/scripts"
|
||||
},
|
||||
{
|
||||
"id": "andrej-karpathy-skills",
|
||||
"upstream_repo": "https://github.com/forrestchang/andrej-karpathy-skills.git",
|
||||
"upstream_ref": "main",
|
||||
"snapshot_dir": "andrej-karpathy-skills",
|
||||
"sync_mode": "copy_skill_dirs",
|
||||
"source_list": "skills/thirdparty/.sources/andrej-karpathy-skills.list",
|
||||
"skills_subdir": "skills"
|
||||
},
|
||||
{
|
||||
"id": "brooks-lint",
|
||||
"upstream_repo": "https://github.com/hyhmrright/brooks-lint.git",
|
||||
@@ -92,27 +73,41 @@
|
||||
"sync_mode": "copy_skill_dirs",
|
||||
"source_list": "skills/thirdparty/.sources/codebase-recon.list",
|
||||
"skills_subdir": "plugins/outfitter/skills",
|
||||
"include_skill_dirs": ["codebase-recon", "pathfinding"]
|
||||
"include_skill_dirs": ["codebase-recon"],
|
||||
"overlay_patch": ".gitea/ci/thirdparty-skill-overlays/codebase-recon.patch"
|
||||
},
|
||||
{
|
||||
"id": "codebase-migrate",
|
||||
"upstream_repo": "https://github.com/ComposioHQ/awesome-codex-skills.git",
|
||||
"upstream_ref": "master",
|
||||
"snapshot_dir": "awesome-codex-skills",
|
||||
"sync_mode": "copy_skill_dirs",
|
||||
"source_list": "skills/thirdparty/.sources/codebase-migrate.list",
|
||||
"skills_subdir": ".",
|
||||
"include_skill_dirs": ["codebase-migrate"]
|
||||
},
|
||||
{
|
||||
"id": "uncle-bob-craft",
|
||||
"upstream_repo": "https://github.com/sickn33/antigravity-awesome-skills.git",
|
||||
"id": "cangjie-skill",
|
||||
"upstream_repo": "https://github.com/kangarooking/cangjie-skill.git",
|
||||
"upstream_ref": "main",
|
||||
"snapshot_dir": "antigravity-awesome-skills",
|
||||
"sync_mode": "copy_skill_dirs",
|
||||
"source_list": "skills/thirdparty/.sources/uncle-bob-craft.list",
|
||||
"skills_subdir": "skills",
|
||||
"include_skill_dirs": ["uncle-bob-craft"]
|
||||
"snapshot_dir": "cangjie-skill",
|
||||
"sync_mode": "copy_skill_root",
|
||||
"source_list": "skills/thirdparty/.sources/cangjie-skill.list",
|
||||
"output_name": "cangjie-skill",
|
||||
"include_paths": [
|
||||
"SKILL.md",
|
||||
"LICENSE",
|
||||
"methodology",
|
||||
"extractors",
|
||||
"templates"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "darwin-skill",
|
||||
"upstream_repo": "https://github.com/alchaincyf/darwin-skill.git",
|
||||
"upstream_ref": "master",
|
||||
"snapshot_dir": "darwin-skill",
|
||||
"sync_mode": "copy_skill_root",
|
||||
"source_list": "skills/thirdparty/.sources/darwin-skill.list",
|
||||
"output_name": "darwin-skill",
|
||||
"include_paths": [
|
||||
"SKILL.md",
|
||||
"LICENSE",
|
||||
"references",
|
||||
"scripts",
|
||||
"templates",
|
||||
"test-prompts.json"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -293,7 +293,26 @@ jobs:
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Remove snapshot directories that were managed by an older manifest.
|
||||
# Managed snapshots are identified by their root SOURCE.md marker.
|
||||
declare -A active_snapshots=()
|
||||
while IFS=$'\x1f' read -r source_id upstream_repo upstream_ref snapshot_dir sync_mode remove_paths; do
|
||||
[ -n "$source_id" ] || continue
|
||||
active_snapshots["$snapshot_dir"]=1
|
||||
done < "$sources_file"
|
||||
|
||||
changed=0
|
||||
for source_marker in */SOURCE.md; do
|
||||
[ -f "$source_marker" ] || continue
|
||||
stale_snapshot="${source_marker%/SOURCE.md}"
|
||||
if [ -z "${active_snapshots[$stale_snapshot]:-}" ]; then
|
||||
echo "Removing orphaned third-party snapshot: $stale_snapshot"
|
||||
rm -rf -- "$stale_snapshot"
|
||||
git add -A -- "$stale_snapshot"
|
||||
changed=1
|
||||
fi
|
||||
done
|
||||
|
||||
while IFS=$'\x1f' read -r source_id upstream_repo upstream_ref snapshot_dir sync_mode remove_paths; do
|
||||
[ -n "$source_id" ] || continue
|
||||
remove_paths_md="${remove_paths//$'\x1e'/,}"
|
||||
@@ -377,8 +396,9 @@ jobs:
|
||||
echo "📌 Current $THIRDPARTY_BRANCH: $after_ref"
|
||||
|
||||
if [ "$after_ref" = "$before_ref" ]; then
|
||||
echo "✅ No thirdparty snapshot change; skip main sync."
|
||||
exit 0
|
||||
echo "✅ No thirdparty snapshot change; continue with manifest-driven main sync."
|
||||
else
|
||||
echo "📌 Updated $THIRDPARTY_BRANCH: $before_ref -> $after_ref"
|
||||
fi
|
||||
|
||||
echo "========================================"
|
||||
@@ -428,6 +448,8 @@ jobs:
|
||||
entry.get("data_dir", ""),
|
||||
entry.get("scripts_dir", ""),
|
||||
"\x1e".join(entry.get("include_skill_dirs", [])),
|
||||
entry.get("overlay_patch", ""),
|
||||
"\x1e".join(entry.get("include_paths", [])),
|
||||
]
|
||||
)
|
||||
)
|
||||
@@ -521,6 +543,96 @@ jobs:
|
||||
return 1
|
||||
}
|
||||
|
||||
apply_overlay_patch() {
|
||||
local source_id="$1"
|
||||
local patch_file="$2"
|
||||
|
||||
[ -n "$patch_file" ] || return 0
|
||||
if [ ! -f "$patch_file" ]; then
|
||||
echo "ERROR: overlay patch not found for $source_id: $patch_file" >&2
|
||||
exit 1
|
||||
fi
|
||||
if ! git apply --check "$patch_file"; then
|
||||
echo "ERROR: overlay patch no longer applies for $source_id: $patch_file" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
git apply "$patch_file"
|
||||
echo "Applied overlay patch for $source_id: $patch_file"
|
||||
}
|
||||
|
||||
copy_skill_root() {
|
||||
local snapshot_root="$1"
|
||||
local output_dir="$2"
|
||||
local include_paths="$3"
|
||||
|
||||
python3 - "$snapshot_root" "$output_dir" "$include_paths" <<'PY'
|
||||
import os
|
||||
import pathlib
|
||||
import shutil
|
||||
import sys
|
||||
|
||||
snapshot_root = pathlib.Path(sys.argv[1]).resolve(strict=True)
|
||||
output_dir = pathlib.Path(sys.argv[2])
|
||||
raw_paths = [value for value in sys.argv[3].split("\x1e") if value]
|
||||
|
||||
if not raw_paths:
|
||||
raise SystemExit("ERROR: copy_skill_root requires include_paths")
|
||||
|
||||
sources = []
|
||||
seen = set()
|
||||
for value in raw_paths:
|
||||
relative = pathlib.PurePosixPath(value)
|
||||
if (
|
||||
relative.is_absolute()
|
||||
or not relative.parts
|
||||
or any(part in ("", ".", "..") for part in relative.parts)
|
||||
):
|
||||
raise SystemExit(f"ERROR: unsafe copy_skill_root include path: {value}")
|
||||
if value in seen:
|
||||
raise SystemExit(f"ERROR: duplicate copy_skill_root include path: {value}")
|
||||
seen.add(value)
|
||||
|
||||
source_path = snapshot_root / pathlib.Path(*relative.parts)
|
||||
if not source_path.exists():
|
||||
raise SystemExit(
|
||||
f"ERROR: copy_skill_root include path not found: {value}"
|
||||
)
|
||||
source = source_path.resolve(strict=True)
|
||||
try:
|
||||
source.relative_to(snapshot_root)
|
||||
except ValueError:
|
||||
raise SystemExit(
|
||||
f"ERROR: copy_skill_root include path escapes snapshot: {value}"
|
||||
)
|
||||
if not source.is_file() and not source.is_dir():
|
||||
raise SystemExit(
|
||||
f"ERROR: unsupported copy_skill_root source type: {value}"
|
||||
)
|
||||
sources.append((relative, source))
|
||||
|
||||
if os.path.lexists(output_dir):
|
||||
if output_dir.is_symlink() or output_dir.is_file():
|
||||
output_dir.unlink()
|
||||
else:
|
||||
shutil.rmtree(output_dir)
|
||||
output_dir.mkdir(parents=True)
|
||||
|
||||
for relative, source in sources:
|
||||
destination = output_dir.joinpath(*relative.parts)
|
||||
destination.parent.mkdir(parents=True, exist_ok=True)
|
||||
if source.is_dir():
|
||||
shutil.copytree(source, destination)
|
||||
else:
|
||||
shutil.copy2(source, destination)
|
||||
|
||||
if not (output_dir / "SKILL.md").is_file():
|
||||
raise SystemExit(
|
||||
f"ERROR: copy_skill_root output is missing SKILL.md: {output_dir}"
|
||||
)
|
||||
PY
|
||||
}
|
||||
|
||||
|
||||
cd "$REPO_DIR"
|
||||
|
||||
@@ -546,19 +658,39 @@ jobs:
|
||||
exit 1
|
||||
fi
|
||||
|
||||
while IFS=$'\x1f' read -r source_id snapshot_dir sync_mode source_list skills_subdirs output_name platform_config template_root data_dir scripts_dir include_skill_dirs; do
|
||||
# Clean skill directories and source lists left by sources removed from
|
||||
# the manifest. Active lists are cleared below before being rewritten.
|
||||
declare -A active_source_lists=()
|
||||
while IFS=$'\x1f' read -r source_id snapshot_dir sync_mode source_list skills_subdirs output_name platform_config template_root data_dir scripts_dir include_skill_dirs overlay_patch include_paths; do
|
||||
[ -n "$source_id" ] || continue
|
||||
active_source_lists["$source_list"]=1
|
||||
done < "$sources_file"
|
||||
|
||||
for source_list in skills/thirdparty/.sources/*.list; do
|
||||
[ -f "$source_list" ] || continue
|
||||
if [ -z "${active_source_lists[$source_list]:-}" ]; then
|
||||
echo "Removing orphaned third-party source list: $source_list"
|
||||
while IFS= read -r name; do
|
||||
[ -n "$name" ] || continue
|
||||
rm -rf -- "skills/thirdparty/$name"
|
||||
done < "$source_list"
|
||||
rm -f -- "$source_list"
|
||||
fi
|
||||
done
|
||||
|
||||
while IFS=$'\x1f' read -r source_id snapshot_dir sync_mode source_list skills_subdirs output_name platform_config template_root data_dir scripts_dir include_skill_dirs overlay_patch include_paths; do
|
||||
[ -n "$source_id" ] || continue
|
||||
|
||||
if [ -f "$source_list" ]; then
|
||||
while IFS= read -r name; do
|
||||
[ -n "$name" ] || continue
|
||||
rm -rf "skills/$name"
|
||||
rm -rf "skills/thirdparty/$name"
|
||||
done < "$source_list"
|
||||
fi
|
||||
done < "$sources_file"
|
||||
|
||||
declare -A owners=()
|
||||
while IFS=$'\x1f' read -r source_id snapshot_dir sync_mode source_list skills_subdirs output_name platform_config template_root data_dir scripts_dir include_skill_dirs; do
|
||||
while IFS=$'\x1f' read -r source_id snapshot_dir sync_mode source_list skills_subdirs output_name platform_config template_root data_dir scripts_dir include_skill_dirs overlay_patch include_paths; do
|
||||
[ -n "$source_id" ] || continue
|
||||
|
||||
git archive --format=tar "origin/${THIRDPARTY_BRANCH}" "$snapshot_dir" | tar -xf - -C "$tmp_dir"
|
||||
@@ -615,12 +747,28 @@ jobs:
|
||||
names+=("$name")
|
||||
owners["$name"]="$source_id"
|
||||
;;
|
||||
copy_skill_root)
|
||||
name="$output_name"
|
||||
if [ -n "${owners[$name]:-}" ] && [ "${owners[$name]}" != "$source_id" ]; then
|
||||
echo "ERROR: duplicate third-party skill name: $name" >&2
|
||||
exit 1
|
||||
fi
|
||||
if tracked_skill_exists "$name"; then
|
||||
echo "ERROR: skill name conflict with tracked skill: $name" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
copy_skill_root "$snapshot_root" "skills/thirdparty/$name" "$include_paths"
|
||||
names+=("$name")
|
||||
owners["$name"]="$source_id"
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: unsupported sync mode: $sync_mode" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
apply_overlay_patch "$source_id" "$overlay_patch"
|
||||
printf "%s\n" "${names[@]}" | sort > "$source_list"
|
||||
done < "$sources_file"
|
||||
|
||||
|
||||
@@ -110,10 +110,10 @@ TSL 语法事实唯一由 `tsl-syntax-reference` 管理;`rulesets/tsl/index.md
|
||||
|
||||
- `rulesets/index.md`:规则集索引(跨语言)
|
||||
- `rulesets/tsl/index.md`:TSL 领域路由与事实边界
|
||||
- `rulesets/cpp/index.md`:C++ 核心约定(46 行)
|
||||
- `rulesets/python/index.md`:Python 核心约定(44 行)
|
||||
- `rulesets/typescript/index.md`:TypeScript 核心约定(47 行)
|
||||
- `rulesets/markdown/index.md`:Markdown 核心约定(31 行,仅代码格式化)
|
||||
- `rulesets/cpp/index.md`:C++ 核心约定
|
||||
- `rulesets/python/index.md`:Python 核心约定
|
||||
- `rulesets/typescript/index.md`:TypeScript/JavaScript 核心约定
|
||||
- `rulesets/markdown/index.md`:Markdown 格式化边界(仅代码格式化)
|
||||
|
||||
更多说明:`rulesets/index.md`
|
||||
|
||||
@@ -247,7 +247,7 @@ skills = ["tsl-syntax-reference", "tsl-api-reference"]
|
||||
1. **仓库级(跨语言)共识**:对所有语言都成立的规则与流程。
|
||||
- 提交信息:`docs/common/commit_message.md`
|
||||
- 行尾与文本规范:`.gitattributes`
|
||||
- 智能体最低要求:`.agents/*`(工作原则、质量底线、安全边界)
|
||||
- 智能体最低要求:`.agents/*`(语言硬约束、事实所有者路由和阻断边界)
|
||||
2. **语言级(Language-specific)规范**:只对某个语言成立的风格与工具。
|
||||
- 例如 TSL 的命名/文件顶层声明限制、C++ 的 `.clang-format/.clang-tidy`、Python 的 `ruff`、TypeScript 的 ESLint/类型约束等。
|
||||
|
||||
|
||||
@@ -171,7 +171,8 @@ skills/
|
||||
**来源登记**:
|
||||
|
||||
- `skills/thirdparty/.sources/`:来源清单目录(`*.list` 文件)
|
||||
- `skills/thirdparty/thirdparty-skills.yml`:统一配置文件
|
||||
- `.gitea/ci/thirdparty_skills.json`:工作流读取的同步来源清单
|
||||
- `skills/thirdparty/thirdparty-skills.yml`:供人工查阅的第三方来源登记表
|
||||
|
||||
**同步流程**:
|
||||
|
||||
|
||||
@@ -7,13 +7,6 @@
|
||||
- 作为仓库级基线规则集使用;更靠近代码目录的规则更具体并可覆盖基线。
|
||||
- 当智能体规则与 docs 冲突:安全/合规优先,其次保持仓库一致性。
|
||||
|
||||
## 智能体工作原则(铁律)
|
||||
|
||||
1. 先理解目标与上下文,再动手改代码
|
||||
2. 修改要小而清晰;避免无关重构
|
||||
3. 发现安全问题(内存安全/鉴权漏洞)立即标注或修复
|
||||
4. 不引入新依赖或工具,除非明确要求
|
||||
|
||||
## C++ 核心约定(不可违反)
|
||||
|
||||
- 使用 C++23,关闭编译器扩展,并固定经过验证的 CMake、编译器和 Conan 2 版本。
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
本规则集定义 AI/自动化智能体在处理 Markdown(`.md`)文件时必须遵守的核心约束。
|
||||
|
||||
## 智能体工作原则(铁律)
|
||||
## Markdown 格式化边界
|
||||
|
||||
1. 只调整代码块与行内代码;不改写正文内容
|
||||
2. 不改变标题层级、列表结构、段落顺序
|
||||
|
||||
@@ -7,13 +7,6 @@
|
||||
- 作为仓库级基线规则集使用;更靠近代码目录的规则更具体并可覆盖基线。
|
||||
- 当智能体规则与 docs 冲突:安全/合规优先,其次保持仓库一致性。
|
||||
|
||||
## 智能体工作原则(铁律)
|
||||
|
||||
1. 先理解目标与上下文,再动手改代码
|
||||
2. 修改要小而清晰;避免无关重构
|
||||
3. 发现安全问题(明文密钥/鉴权漏洞)立即标注或修复
|
||||
4. 不引入新依赖或工具,除非明确要求
|
||||
|
||||
## Python 核心约定(不可违反)
|
||||
|
||||
- 代码风格:Google Python Style Guide;优先使用仓库既有配置(`pyproject.toml`, `.flake8`, `.pylintrc`)
|
||||
|
||||
@@ -7,13 +7,6 @@
|
||||
- 作为仓库级基线规则集使用;更靠近代码目录的规则更具体并可覆盖基线。
|
||||
- 当智能体规则与 docs 冲突:安全/合规优先,其次保持仓库一致性。
|
||||
|
||||
## 智能体工作原则(铁律)
|
||||
|
||||
1. 先理解目标与上下文,再动手改代码
|
||||
2. 修改要小而清晰;避免无关重构
|
||||
3. 发现安全问题(明文密钥/鉴权漏洞)立即标注或修复
|
||||
4. 不引入新依赖或工具,除非明确要求
|
||||
|
||||
## TypeScript/JavaScript 核心约定(不可违反)
|
||||
|
||||
- 语言标准:业务代码优先 TypeScript(`.ts/.tsx`);JavaScript(`.js/.mjs/.cjs`)仅用于脚本、配置或兼容场景
|
||||
|
||||
+9
-11
@@ -28,7 +28,7 @@
|
||||
| `grill-with-docs` / `grilling` | 收敛 design tree 并同步领域词汇/ADR |
|
||||
| `to-spec` | 把已确认上下文合成为 feature spec |
|
||||
| `to-tickets` | 拆成带 blocking edges 的 tracer-bullet tickets |
|
||||
| `implement` / `tdd` | 在约定 seam 上按 ticket 实现和验证 |
|
||||
| `tdd` | 在约定 seam 上按 ticket 采用测试驱动实现和验证 |
|
||||
| `code-review` | 对固定点后的提交做 Standards/Spec 双轴审查 |
|
||||
| `handoff` | 跨 session 交接未完成上下文 |
|
||||
|
||||
@@ -51,16 +51,14 @@ Code review 和质量审查工具集,包含共享参考资料目录 `_shared`
|
||||
|
||||
### 代码库侦察与迁移
|
||||
|
||||
| Skill | 作用 |
|
||||
| ------------------ | --------------------------------------------------------- |
|
||||
| `codebase-recon` | 通过 git 历史和代码结构做 risk scan、热点分析、重构前侦察 |
|
||||
| `pathfinding` | 需求澄清和 confidence calibration |
|
||||
| `codebase-migrate` | 大代码库迁移、多文件 refactor、分批变更与 CI 验证工作流 |
|
||||
| Skill | 作用 |
|
||||
| ---------------- | --------------------------------------------------------- |
|
||||
| `codebase-recon` | 通过 git 历史和代码结构做 risk scan、热点分析、重构前侦察 |
|
||||
|
||||
### 其他
|
||||
|
||||
| Skill | 作用 |
|
||||
| --------------------- | ------------------------------------------------------------- |
|
||||
| `ui-ux-pro-max` | UI/UX 设计知识库,包含风格、配色、字体、组件和栈相关建议 |
|
||||
| `karpathy-guidelines` | 写代码、审查、重构时降低 LLM 常见错误:保持简单、聚焦、可验证 |
|
||||
| `uncle-bob-craft` | Clean Architecture、SOLID、设计模式误用和代码工匠实践审查 |
|
||||
| Skill | 作用 |
|
||||
| --------------- | -------------------------------------------------------- |
|
||||
| `ui-ux-pro-max` | UI/UX 设计知识库,包含风格、配色、字体、组件和栈相关建议 |
|
||||
| `cangjie-skill` | 将书籍、课程、访谈等长内容蒸馏为原子化、可执行的 skills |
|
||||
| `darwin-skill` | 评估并迭代优化 skills,以测试提示和成对评审控制质量回归 |
|
||||
|
||||
+38
-29
@@ -31,46 +31,55 @@ skills:
|
||||
upstream_ref: main
|
||||
upstream_paths:
|
||||
- plugins/outfitter/skills/codebase-recon
|
||||
- plugins/outfitter/skills/pathfinding
|
||||
upstream_layout: multi_skill_subset
|
||||
selected_for:
|
||||
- risk scan
|
||||
- git-history hotspot analysis
|
||||
- codebase reconnaissance before planning
|
||||
- refactor-risk assessment
|
||||
- confidence calibration reference dependency
|
||||
- evidence-based confidence calibration
|
||||
playbook_fit: pre-design and pre-refactor codebase risk discovery
|
||||
notes:
|
||||
- Upstream skills live inside a larger agents repository.
|
||||
- pathfinding is included because codebase-recon links to pathfinding/references/confidence.md.
|
||||
- A sync overlay makes codebase-recon confidence calibration self-contained.
|
||||
|
||||
- id: codebase-migrate
|
||||
- id: cangjie-skill
|
||||
sync: enabled
|
||||
upstream_repo: https://github.com/ComposioHQ/awesome-codex-skills
|
||||
upstream_ref: master
|
||||
upstream_path: codebase-migrate
|
||||
upstream_layout: single_skill_dir
|
||||
selected_for:
|
||||
- large codebase migrations
|
||||
- multi-file refactors
|
||||
- reviewable refactor batches
|
||||
- CI-verified migration workflows
|
||||
notes:
|
||||
- Sourced from awesome-codex-skills.
|
||||
|
||||
- id: uncle-bob-craft
|
||||
sync: enabled
|
||||
upstream_repo: https://github.com/sickn33/antigravity-awesome-skills
|
||||
upstream_repo: https://github.com/kangarooking/cangjie-skill
|
||||
upstream_ref: main
|
||||
upstream_path: skills/uncle-bob-craft
|
||||
upstream_layout: single_skill_from_suite
|
||||
upstream_layout: repository_root_skill
|
||||
upstream_paths:
|
||||
- SKILL.md
|
||||
- LICENSE
|
||||
- methodology
|
||||
- extractors
|
||||
- templates
|
||||
selected_for:
|
||||
- Clean Architecture review
|
||||
- SOLID review
|
||||
- design-pattern misuse checks
|
||||
- architecture-boundary refactoring
|
||||
- code craftsmanship review
|
||||
playbook_fit: architecture and code-quality craft review support
|
||||
- distilling books and long-form content into executable skills
|
||||
- extracting reusable frameworks, principles, and methods
|
||||
- generating Darwin-compatible skill test prompts
|
||||
playbook_fit: long-form knowledge distillation into reusable skills
|
||||
notes:
|
||||
- Upstream skill includes references for Clean Architecture, Clean Coder, Clean Agile, and design-pattern discipline.
|
||||
- Registered as a single selected skill from a larger community skill suite.
|
||||
- The repository root is the skill directory.
|
||||
- Licensed under AGPL-3.0.
|
||||
|
||||
- id: darwin-skill
|
||||
sync: enabled
|
||||
upstream_repo: https://github.com/alchaincyf/darwin-skill
|
||||
upstream_ref: master
|
||||
upstream_layout: repository_root_skill
|
||||
upstream_paths:
|
||||
- SKILL.md
|
||||
- LICENSE
|
||||
- references
|
||||
- scripts
|
||||
- templates
|
||||
- test-prompts.json
|
||||
selected_for:
|
||||
- skill quality assessment
|
||||
- test-prompt-driven skill optimization
|
||||
- paired evaluation and regression control
|
||||
playbook_fit: evaluation and iterative optimization of skills
|
||||
notes:
|
||||
- The repository root is the skill directory.
|
||||
- Licensed under MIT.
|
||||
|
||||
@@ -80,7 +80,7 @@ setup-matt-pocock-skills
|
||||
```
|
||||
|
||||
- 每个仓库首次使用时运行 `setup-matt-pocock-skills`,本地开发选择 local markdown tracker
|
||||
- 正式仓库设计使用 `grill-with-docs`;`grill-me` 只用于无仓库的一次性讨论
|
||||
- 正式仓库设计使用 `grill-with-docs`
|
||||
- 进入 `grill-with-docs` 或本地 ticket 执行协议前,重新读取 `memory-bank/project-brief.md`、
|
||||
`memory-bank/tech-context.md` 和 `memory-bank/system-patterns.md`
|
||||
- `grilling` 必须走完整 design tree,frontier 清空并经用户确认后才进入 `to-spec`
|
||||
@@ -96,8 +96,6 @@ setup-matt-pocock-skills
|
||||
`to-spec -> to-tickets`,不得从决策 ticket 直接跳到实现
|
||||
- `research` 产出的高可信一手来源报告先进入 `grill-with-docs`,作为设计输入;调研不能
|
||||
替代 grilling
|
||||
- 设计问题需要 runnable answer 时,从原设计会话 `handoff` 到独立目录运行
|
||||
`prototype`,再 `handoff` 结论回原设计会话
|
||||
- 已由 `to-tickets` 生成的 ticket 直接从 `main_loop.py claim -> 本地 ticket 执行协议` 开始,
|
||||
不再 triage 或重复需求采访
|
||||
|
||||
@@ -367,12 +365,11 @@ partial feature 还需 `--allow-partial`。返回 `RETRY: feature needs main syn
|
||||
|
||||
以下能力在对应阶段内按需使用,不替代上面的入口路由和证据门禁:
|
||||
|
||||
| Skill | 触发条件 |
|
||||
| ------------------ | ----------------------------------- |
|
||||
| `codebase-recon` | 架构、跨模块、重构、迁移或风险不明 |
|
||||
| `brooks-audit` | 架构边界和长期维护性审查 |
|
||||
| `codebase-migrate` | 大规模迁移或宽重构 |
|
||||
| `commit-message` | 需要检查 staged diff 或生成提交信息 |
|
||||
| Skill | 触发条件 |
|
||||
| ---------------- | ----------------------------------- |
|
||||
| `codebase-recon` | 架构、跨模块、重构、迁移或风险不明 |
|
||||
| `brooks-audit` | 架构边界和长期维护性审查 |
|
||||
| `commit-message` | 需要检查 staged diff 或生成提交信息 |
|
||||
|
||||
## 需要确认的场景
|
||||
|
||||
|
||||
+1
-1
@@ -108,7 +108,7 @@ setup-matt-pocock-skills
|
||||
-> to-tickets
|
||||
-> main_loop.py enqueue
|
||||
-> main_loop.py claim
|
||||
-> implement + tdd
|
||||
-> 本地 ticket 执行协议(tdd)
|
||||
-> commit
|
||||
-> code-review
|
||||
-> main_loop.py finish
|
||||
|
||||
Reference in New Issue
Block a user