issuekit 0.1.3__tar.gz → 0.1.4__tar.gz
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.
- {issuekit-0.1.3 → issuekit-0.1.4}/PKG-INFO +5 -1
- {issuekit-0.1.3 → issuekit-0.1.4}/pyproject.toml +51 -46
- issuekit-0.1.4/scripts/release.sh +168 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/__init__.py +3 -3
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-change/SKILL.md +8 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-coding/SKILL.md +8 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-design/SKILL.md +8 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-knowledge/SKILL.md +47 -8
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-release/SKILL.md +8 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-require/SKILL.md +8 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-review/SKILL.md +8 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-test/SKILL.md +8 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_templates/technical-design.md +29 -8
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/knowledge/__init__.py +5 -5
- {issuekit-0.1.3 → issuekit-0.1.4}/.gitignore +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/LICENSE +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/README.md +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/agent_skills.py +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/agents/__init__.py +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/agents/registry.py +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-change/agents/openai.yaml +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-coding/agents/openai.yaml +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-design/agents/openai.yaml +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-knowledge/agents/openai.yaml +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-release/agents/openai.yaml +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-require/agents/openai.yaml +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-review/agents/openai.yaml +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-test/agents/openai.yaml +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_templates/code-review.md +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_templates/release-note.md +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_templates/requirement.md +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_templates/test-plan.md +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/cli.py +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/commands/__init__.py +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/commands/init.py +0 -0
- {issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/templates.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: issuekit
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: AI 辅助开发的 Issue 全生命周期工具。从需求分析到代码审核,由你的 AI 编程助手驱动。
|
|
5
5
|
Project-URL: Homepage, https://github.com/xsg22/issue-kit
|
|
6
6
|
Project-URL: Repository, https://github.com/xsg22/issue-kit
|
|
@@ -18,6 +18,10 @@ Requires-Dist: click>=8.1
|
|
|
18
18
|
Requires-Dist: pyyaml>=6.0
|
|
19
19
|
Requires-Dist: rich>=13.0
|
|
20
20
|
Requires-Dist: typer>=0.9
|
|
21
|
+
Provides-Extra: release
|
|
22
|
+
Requires-Dist: build>=1.0; extra == 'release'
|
|
23
|
+
Requires-Dist: pytest>=7.0; extra == 'release'
|
|
24
|
+
Requires-Dist: twine>=5.0; extra == 'release'
|
|
21
25
|
Provides-Extra: test
|
|
22
26
|
Requires-Dist: pytest-cov>=4.0; extra == 'test'
|
|
23
27
|
Requires-Dist: pytest>=7.0; extra == 'test'
|
|
@@ -1,46 +1,51 @@
|
|
|
1
|
-
[project]
|
|
2
|
-
name = "issuekit"
|
|
3
|
-
version = "0.1.
|
|
4
|
-
description = "AI 辅助开发的 Issue 全生命周期工具。从需求分析到代码审核,由你的 AI 编程助手驱动。"
|
|
5
|
-
requires-python = ">=3.10"
|
|
6
|
-
license = "MIT"
|
|
7
|
-
readme = "README.md"
|
|
8
|
-
keywords = ["ai", "issue", "development", "cursor", "claude", "codex"]
|
|
9
|
-
classifiers = [
|
|
10
|
-
"Development Status :: 3 - Alpha",
|
|
11
|
-
"Intended Audience :: Developers",
|
|
12
|
-
"License :: OSI Approved :: MIT License",
|
|
13
|
-
"Programming Language :: Python :: 3",
|
|
14
|
-
"Topic :: Software Development :: Quality Assurance",
|
|
15
|
-
]
|
|
16
|
-
dependencies = [
|
|
17
|
-
"typer>=0.9",
|
|
18
|
-
"click>=8.1",
|
|
19
|
-
"rich>=13.0",
|
|
20
|
-
"pyyaml>=6.0",
|
|
21
|
-
]
|
|
22
|
-
|
|
23
|
-
[project.scripts]
|
|
24
|
-
issuekit = "issuekit.cli:app"
|
|
25
|
-
|
|
26
|
-
[project.urls]
|
|
27
|
-
Homepage = "https://github.com/xsg22/issue-kit"
|
|
28
|
-
Repository = "https://github.com/xsg22/issue-kit"
|
|
29
|
-
Issues = "https://github.com/xsg22/issue-kit/issues"
|
|
30
|
-
|
|
31
|
-
[build-system]
|
|
32
|
-
requires = ["hatchling"]
|
|
33
|
-
build-backend = "hatchling.build"
|
|
34
|
-
|
|
35
|
-
[tool.hatch.build.targets.wheel]
|
|
36
|
-
packages = ["src/issuekit"]
|
|
37
|
-
|
|
38
|
-
[project.optional-dependencies]
|
|
39
|
-
test = [
|
|
40
|
-
"pytest>=7.0",
|
|
41
|
-
"pytest-cov>=4.0",
|
|
42
|
-
]
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
1
|
+
[project]
|
|
2
|
+
name = "issuekit"
|
|
3
|
+
version = "0.1.4"
|
|
4
|
+
description = "AI 辅助开发的 Issue 全生命周期工具。从需求分析到代码审核,由你的 AI 编程助手驱动。"
|
|
5
|
+
requires-python = ">=3.10"
|
|
6
|
+
license = "MIT"
|
|
7
|
+
readme = "README.md"
|
|
8
|
+
keywords = ["ai", "issue", "development", "cursor", "claude", "codex"]
|
|
9
|
+
classifiers = [
|
|
10
|
+
"Development Status :: 3 - Alpha",
|
|
11
|
+
"Intended Audience :: Developers",
|
|
12
|
+
"License :: OSI Approved :: MIT License",
|
|
13
|
+
"Programming Language :: Python :: 3",
|
|
14
|
+
"Topic :: Software Development :: Quality Assurance",
|
|
15
|
+
]
|
|
16
|
+
dependencies = [
|
|
17
|
+
"typer>=0.9",
|
|
18
|
+
"click>=8.1",
|
|
19
|
+
"rich>=13.0",
|
|
20
|
+
"pyyaml>=6.0",
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
[project.scripts]
|
|
24
|
+
issuekit = "issuekit.cli:app"
|
|
25
|
+
|
|
26
|
+
[project.urls]
|
|
27
|
+
Homepage = "https://github.com/xsg22/issue-kit"
|
|
28
|
+
Repository = "https://github.com/xsg22/issue-kit"
|
|
29
|
+
Issues = "https://github.com/xsg22/issue-kit/issues"
|
|
30
|
+
|
|
31
|
+
[build-system]
|
|
32
|
+
requires = ["hatchling"]
|
|
33
|
+
build-backend = "hatchling.build"
|
|
34
|
+
|
|
35
|
+
[tool.hatch.build.targets.wheel]
|
|
36
|
+
packages = ["src/issuekit"]
|
|
37
|
+
|
|
38
|
+
[project.optional-dependencies]
|
|
39
|
+
test = [
|
|
40
|
+
"pytest>=7.0",
|
|
41
|
+
"pytest-cov>=4.0",
|
|
42
|
+
]
|
|
43
|
+
release = [
|
|
44
|
+
"build>=1.0",
|
|
45
|
+
"twine>=5.0",
|
|
46
|
+
"pytest>=7.0",
|
|
47
|
+
]
|
|
48
|
+
|
|
49
|
+
[tool.pytest.ini_options]
|
|
50
|
+
testpaths = ["tests"]
|
|
51
|
+
addopts = ["-v", "--tb=short"]
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# PyPI 发布(纯 shell,不依赖额外 Python 发布脚本)
|
|
3
|
+
#
|
|
4
|
+
# 依赖:pip install -e ".[release]" ;凭据见 ~/.pypirc 或 TWINE_* 环境变量
|
|
5
|
+
#
|
|
6
|
+
# 用法:
|
|
7
|
+
# ./scripts/release.sh patch|minor|major # 升版并发布
|
|
8
|
+
# ./scripts/release.sh --set 1.0.0 # 指定版本并发布
|
|
9
|
+
# ./scripts/release.sh # 不升版,按当前版本构建并上传
|
|
10
|
+
# ./scripts/release.sh patch --dry-run --repository testpypi
|
|
11
|
+
#
|
|
12
|
+
set -euo pipefail
|
|
13
|
+
|
|
14
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
15
|
+
ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
16
|
+
cd "$ROOT"
|
|
17
|
+
|
|
18
|
+
PYPROJECT="$ROOT/pyproject.toml"
|
|
19
|
+
INIT_PY="$ROOT/src/issuekit/__init__.py"
|
|
20
|
+
|
|
21
|
+
usage() {
|
|
22
|
+
cat <<'EOF'
|
|
23
|
+
PyPI 发布:./scripts/release.sh [patch|minor|major] [选项]
|
|
24
|
+
|
|
25
|
+
选项:
|
|
26
|
+
--set VERSION 指定版本(x.y.z)
|
|
27
|
+
--repository NAME pypi(默认)或 testpypi
|
|
28
|
+
--skip-tests 跳过 pytest
|
|
29
|
+
--dry-run 构建并检查,不上传
|
|
30
|
+
-h, --help 显示本说明
|
|
31
|
+
EOF
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
read_pyproject_version() {
|
|
35
|
+
grep -E '^version[[:space:]]*=' "$PYPROJECT" | head -1 \
|
|
36
|
+
| sed -E 's/^version[[:space:]]*=[[:space:]]*"([^"]*)".*/\1/'
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
write_versions() {
|
|
40
|
+
local v="$1"
|
|
41
|
+
local tmp
|
|
42
|
+
tmp="$(mktemp)"
|
|
43
|
+
sed "s/^version = \".*\"/version = \"${v}\"/" "$PYPROJECT" >"$tmp" && mv "$tmp" "$PYPROJECT"
|
|
44
|
+
tmp="$(mktemp)"
|
|
45
|
+
sed "s/^__version__[[:space:]]*=[[:space:]]*\".*\"/__version__ = \"${v}\"/" "$INIT_PY" >"$tmp" && mv "$tmp" "$INIT_PY"
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
bump_semver() {
|
|
49
|
+
local ver="$1" kind="$2"
|
|
50
|
+
local major minor patch
|
|
51
|
+
if [[ ! "$ver" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
52
|
+
echo "无法自动升版(仅支持纯 x.y.z,请用 --set):$ver" >&2
|
|
53
|
+
exit 1
|
|
54
|
+
fi
|
|
55
|
+
IFS='.' read -r major minor patch <<<"$ver"
|
|
56
|
+
case "$kind" in
|
|
57
|
+
patch) patch=$((patch + 1)) ;;
|
|
58
|
+
minor) minor=$((minor + 1)); patch=0 ;;
|
|
59
|
+
major) major=$((major + 1)); minor=0; patch=0 ;;
|
|
60
|
+
*) echo "invalid bump: $kind" >&2; exit 1 ;;
|
|
61
|
+
esac
|
|
62
|
+
echo "${major}.${minor}.${patch}"
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
BUMP=""
|
|
66
|
+
SET_VERSION=""
|
|
67
|
+
REPOSITORY="pypi"
|
|
68
|
+
SKIP_TESTS=0
|
|
69
|
+
DRY_RUN=0
|
|
70
|
+
|
|
71
|
+
# 首参 patch|minor|major 快捷方式
|
|
72
|
+
if [[ "${1:-}" =~ ^(patch|minor|major)$ ]]; then
|
|
73
|
+
BUMP="$1"
|
|
74
|
+
shift
|
|
75
|
+
fi
|
|
76
|
+
|
|
77
|
+
while [[ $# -gt 0 ]]; do
|
|
78
|
+
case "$1" in
|
|
79
|
+
--set)
|
|
80
|
+
SET_VERSION="${2:?--set 需要版本号}"
|
|
81
|
+
shift 2
|
|
82
|
+
;;
|
|
83
|
+
--repository)
|
|
84
|
+
REPOSITORY="${2:?--repository 需要 pypi 或 testpypi}"
|
|
85
|
+
shift 2
|
|
86
|
+
;;
|
|
87
|
+
--skip-tests) SKIP_TESTS=1; shift ;;
|
|
88
|
+
--dry-run) DRY_RUN=1; shift ;;
|
|
89
|
+
-h|--help) usage; exit 0 ;;
|
|
90
|
+
*)
|
|
91
|
+
echo "未知参数: $1" >&2
|
|
92
|
+
usage >&2
|
|
93
|
+
exit 1
|
|
94
|
+
;;
|
|
95
|
+
esac
|
|
96
|
+
done
|
|
97
|
+
|
|
98
|
+
if [[ -n "$BUMP" && -n "$SET_VERSION" ]]; then
|
|
99
|
+
echo "不要同时使用升版档位与 --set" >&2
|
|
100
|
+
exit 1
|
|
101
|
+
fi
|
|
102
|
+
|
|
103
|
+
CURRENT="$(read_pyproject_version)"
|
|
104
|
+
NEW_VERSION=""
|
|
105
|
+
|
|
106
|
+
if [[ -n "$BUMP" ]]; then
|
|
107
|
+
NEW_VERSION="$(bump_semver "$CURRENT" "$BUMP")"
|
|
108
|
+
elif [[ -n "$SET_VERSION" ]]; then
|
|
109
|
+
if [[ ! "$SET_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
110
|
+
echo "--set 仅支持 x.y.z 格式: $SET_VERSION" >&2
|
|
111
|
+
exit 1
|
|
112
|
+
fi
|
|
113
|
+
NEW_VERSION="$SET_VERSION"
|
|
114
|
+
fi
|
|
115
|
+
|
|
116
|
+
if [[ -n "$NEW_VERSION" ]]; then
|
|
117
|
+
write_versions "$NEW_VERSION"
|
|
118
|
+
echo "Version: ${CURRENT} -> ${NEW_VERSION}"
|
|
119
|
+
else
|
|
120
|
+
echo "Version: ${CURRENT} (unchanged)"
|
|
121
|
+
fi
|
|
122
|
+
|
|
123
|
+
if [[ "$SKIP_TESTS" -eq 0 ]]; then
|
|
124
|
+
if ! python -c "import pytest" 2>/dev/null; then
|
|
125
|
+
echo "未检测到 pytest,正在安装发布依赖: pip install -e \".[release]\""
|
|
126
|
+
python -m pip install -q -e ".[release]"
|
|
127
|
+
fi
|
|
128
|
+
echo "+ python -m pytest"
|
|
129
|
+
# 退出码 5 = 未收集到测试(旧版 pytest 或未开 suppress_no_test_exit_code 时仍视为可继续发布)
|
|
130
|
+
set +e
|
|
131
|
+
python -m pytest
|
|
132
|
+
pytest_ec=$?
|
|
133
|
+
set -e
|
|
134
|
+
if [[ "$pytest_ec" -ne 0 && "$pytest_ec" -ne 5 ]]; then
|
|
135
|
+
exit "$pytest_ec"
|
|
136
|
+
fi
|
|
137
|
+
if [[ "$pytest_ec" -eq 5 ]]; then
|
|
138
|
+
echo "提示: pytest 未收集到任何测试(退出码 5),继续构建与上传。" >&2
|
|
139
|
+
fi
|
|
140
|
+
fi
|
|
141
|
+
|
|
142
|
+
echo "+ clean dist/build artifacts"
|
|
143
|
+
rm -rf dist build ./*.egg-info src/issuekit.egg-info 2>/dev/null || true
|
|
144
|
+
|
|
145
|
+
echo "+ python -m build"
|
|
146
|
+
python -m build
|
|
147
|
+
|
|
148
|
+
echo "+ twine check dist/*"
|
|
149
|
+
python -m twine check dist/*
|
|
150
|
+
|
|
151
|
+
# 使用 -r pypi|testpypi(勿用 --repository-url),Twine 才会按名称读取 ~/.pypirc 里对应段落及凭据
|
|
152
|
+
if [[ "$REPOSITORY" == "testpypi" ]]; then
|
|
153
|
+
TWINE_REPO=( -r testpypi )
|
|
154
|
+
else
|
|
155
|
+
TWINE_REPO=( -r pypi )
|
|
156
|
+
fi
|
|
157
|
+
|
|
158
|
+
VER_FOR_MSG="${NEW_VERSION:-$CURRENT}"
|
|
159
|
+
if [[ "$DRY_RUN" -eq 1 ]]; then
|
|
160
|
+
echo "+ (dry-run) skipping: python -m twine upload ${TWINE_REPO[*]} dist/*"
|
|
161
|
+
echo "Done (dry-run)."
|
|
162
|
+
exit 0
|
|
163
|
+
fi
|
|
164
|
+
|
|
165
|
+
echo "+ python -m twine upload ${TWINE_REPO[*]} dist/*"
|
|
166
|
+
python -m twine upload "${TWINE_REPO[@]}" dist/*
|
|
167
|
+
|
|
168
|
+
echo "Uploaded to ${REPOSITORY}. Verify: pip install issuekit==${VER_FOR_MSG}"
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"""IssueKit - AI 辅助开发的 Issue 全生命周期工具。"""
|
|
2
|
-
|
|
3
|
-
__version__ = "0.1.
|
|
1
|
+
"""IssueKit - AI 辅助开发的 Issue 全生命周期工具。"""
|
|
2
|
+
|
|
3
|
+
__version__ = "0.1.4"
|
|
@@ -13,6 +13,14 @@ description: 记录和管理 Issue 的需求或方案变更。追踪变更对所
|
|
|
13
13
|
|
|
14
14
|
## 工作流程
|
|
15
15
|
|
|
16
|
+
### 第 0 步:先读取知识约定并规划任务
|
|
17
|
+
|
|
18
|
+
在开始变更分析规划前,优先执行:
|
|
19
|
+
|
|
20
|
+
1. 阅读 `.issuekit/knowledge/conventions.md`(如有)
|
|
21
|
+
2. 阅读 `.issuekit/knowledge/` 下与本次变更相关的已有知识摘要(如有),若存在 `.issuekit/knowledge/modules/` 对应模块文件则优先阅读
|
|
22
|
+
3. 基于上述约定与已有知识,再开始后续变更步骤
|
|
23
|
+
|
|
16
24
|
### 第 1 步:定位 Issue 并解析变更
|
|
17
25
|
|
|
18
26
|
1. 读取 `.issuekit/config.yaml` 中的 `issues_dir` 配置项,获取 Issue 文档存放目录(默认为 `issues`)
|
|
@@ -20,6 +20,14 @@ description: 按技术方案进行编码实现。逐步执行开发步骤,完
|
|
|
20
20
|
|
|
21
21
|
## 工作流程
|
|
22
22
|
|
|
23
|
+
### 第 0 步:先读取知识约定并规划任务
|
|
24
|
+
|
|
25
|
+
在开始编码规划前,优先执行:
|
|
26
|
+
|
|
27
|
+
1. 阅读 `.issuekit/knowledge/conventions.md`(如有)
|
|
28
|
+
2. 阅读 `.issuekit/knowledge/` 下与当前改动相关的已有知识摘要(如有),若存在 `.issuekit/knowledge/modules/` 对应模块文件则优先阅读
|
|
29
|
+
3. 基于上述约定与已有知识,再开始后续编码步骤
|
|
30
|
+
|
|
23
31
|
### 第 1 步:定位 Issue 并阅读上下文
|
|
24
32
|
|
|
25
33
|
1. 读取 `.issuekit/config.yaml` 中的 `issues_dir` 配置项,获取 Issue 文档存放目录(默认为 `issues`)
|
|
@@ -20,6 +20,14 @@ description: 为 Issue 设计技术方案。技术调研、架构设计、接口
|
|
|
20
20
|
|
|
21
21
|
## 工作流程
|
|
22
22
|
|
|
23
|
+
### 第 0 步:先读取知识约定并规划任务
|
|
24
|
+
|
|
25
|
+
在开始方案规划前,优先执行:
|
|
26
|
+
|
|
27
|
+
1. 阅读 `.issuekit/knowledge/conventions.md`(如有)
|
|
28
|
+
2. 阅读 `.issuekit/knowledge/` 下与本次 issue 相关的已有知识摘要(如有),若存在 `.issuekit/knowledge/modules/` 对应模块文件则优先阅读
|
|
29
|
+
3. 基于上述约定与已有知识,再开始后续设计步骤
|
|
30
|
+
|
|
23
31
|
### 第 1 步:定位 Issue
|
|
24
32
|
|
|
25
33
|
1. 如果用户输入中包含 issue ID,直接使用
|
|
@@ -1,21 +1,43 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: issuekit-knowledge
|
|
3
|
-
description: 分析当前项目,生成结构化的上下文知识摘要到 .issuekit/knowledge
|
|
3
|
+
description: 分析当前项目,生成结构化的上下文知识摘要到 .issuekit/knowledge/;也支持按功能模块单独梳理并输出到 .issuekit/knowledge/modules/。供其他 issuekit skill 使用。当用户提到构建知识库、项目知识摘要时使用。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
## 概述
|
|
7
7
|
|
|
8
8
|
本 skill 分析当前项目的代码、配置和结构,生成一系列知识摘要文件。这些摘要让 AI Agent 在执行需求分析、技术方案设计等任务时,能快速理解项目上下文,而无需每次从零扫描。
|
|
9
9
|
|
|
10
|
-
**输出目录**:
|
|
10
|
+
**输出目录**:
|
|
11
|
+
- 全量知识:`.issuekit/knowledge/`
|
|
12
|
+
- 模块知识:`.issuekit/knowledge/modules/`
|
|
13
|
+
|
|
14
|
+
## 用户输入模式
|
|
15
|
+
|
|
16
|
+
- 未指定模块时:执行全量知识梳理(默认)
|
|
17
|
+
- 指定模块名称/路径/功能域时:仅梳理该模块及其直接依赖上下文,输出模块知识文件
|
|
11
18
|
|
|
12
19
|
## 工作流程
|
|
13
20
|
|
|
14
|
-
### 第
|
|
21
|
+
### 第 0 步:先读取知识约定并规划任务
|
|
22
|
+
|
|
23
|
+
在开始知识梳理规划前,优先执行:
|
|
24
|
+
|
|
25
|
+
1. 阅读 `.issuekit/knowledge/conventions.md`(如有)
|
|
26
|
+
2. 阅读 `.issuekit/knowledge/` 下已有知识摘要(如有),若存在 `.issuekit/knowledge/modules/` 相关模块文件则优先阅读
|
|
27
|
+
3. 基于现有约定与已有知识,规划本次是全量更新还是模块增量更新
|
|
28
|
+
|
|
29
|
+
### 第 1 步:识别梳理范围并检测项目类型
|
|
30
|
+
|
|
31
|
+
先识别本次任务是"全量知识梳理"还是"模块知识梳理":
|
|
32
|
+
|
|
33
|
+
1. 若用户明确指定模块(如"订单模块"、`src/order/`、"支付流程"),进入模块模式
|
|
34
|
+
2. 否则进入全量模式
|
|
35
|
+
3. 在开始分析前,先阅读已存在的 `.issuekit/knowledge/` 内容(如有),避免重复扫描和重复结论
|
|
36
|
+
4. 然后自动识别项目技术栈和构建系统:
|
|
15
37
|
|
|
16
38
|
自动识别项目的技术栈和构建系统:
|
|
17
39
|
|
|
18
|
-
|
|
40
|
+
- 扫描项目根目录的构建/配置文件:
|
|
19
41
|
- `pom.xml` / `build.gradle` → Java/Kotlin
|
|
20
42
|
- `package.json` → JavaScript/TypeScript
|
|
21
43
|
- `go.mod` → Go
|
|
@@ -23,9 +45,9 @@ description: 分析当前项目,生成结构化的上下文知识摘要到 .is
|
|
|
23
45
|
- `Cargo.toml` → Rust
|
|
24
46
|
- `*.csproj` / `*.sln` → C#/.NET
|
|
25
47
|
- 其他构建文件 → 按实际情况处理
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
48
|
+
- 读取依赖配置,提取所有依赖及版本
|
|
49
|
+
- 读取应用配置文件(如 application.yml, config/ 等)识别中间件和外部服务
|
|
50
|
+
- 忽略.env;.cursor;.idea等不可见的配置文件
|
|
29
51
|
|
|
30
52
|
### 第 2 步:项目概览
|
|
31
53
|
|
|
@@ -37,6 +59,8 @@ description: 分析当前项目,生成结构化的上下文知识摘要到 .is
|
|
|
37
59
|
- 代码规模统计(按语言/模块的文件数和行数)
|
|
38
60
|
- Git 活跃度(近 6 个月的提交频率、主要贡献者)
|
|
39
61
|
|
|
62
|
+
如果是模块模式,跳过本步骤。
|
|
63
|
+
|
|
40
64
|
### 第 3 步:架构分析
|
|
41
65
|
|
|
42
66
|
生成 `.issuekit/knowledge/architecture.md`:
|
|
@@ -87,6 +111,18 @@ description: 分析当前项目,生成结构化的上下文知识摘要到 .is
|
|
|
87
111
|
- 日志使用方式
|
|
88
112
|
- 错误处理模式
|
|
89
113
|
- 如果项目已有规范文件(如 .cursor/rules/, .editorconfig, linter 配置),整合其内容
|
|
114
|
+
- 增加"Agent 使用提示"小节:执行任何任务前,先阅读 `.issuekit/knowledge/` 中与任务相关的已有知识;若存在 `.issuekit/knowledge/modules/` 对应模块文件,优先阅读模块文件,再补充全局知识,然后再开始任务规划
|
|
115
|
+
|
|
116
|
+
### 第 7.5 步:模块知识文件(仅模块模式)
|
|
117
|
+
|
|
118
|
+
生成 `.issuekit/knowledge/modules/{module-name}.md`:
|
|
119
|
+
|
|
120
|
+
- 模块边界(职责、入口、对外能力)
|
|
121
|
+
- 核心流程(Mermaid flowchart/sequenceDiagram)
|
|
122
|
+
- 模块 API 与关键数据结构
|
|
123
|
+
- 依赖与被依赖关系(重点列出跨模块调用)
|
|
124
|
+
- 约定与注意事项(从 `conventions.md` 抽取与模块强相关部分)
|
|
125
|
+
- 已知风险和待确认点
|
|
90
126
|
|
|
91
127
|
### 第 8 步:报告完成
|
|
92
128
|
|
|
@@ -100,8 +136,10 @@ description: 分析当前项目,生成结构化的上下文知识摘要到 .is
|
|
|
100
136
|
- .issuekit/knowledge/data-model.md
|
|
101
137
|
- .issuekit/knowledge/integrations.md
|
|
102
138
|
- .issuekit/knowledge/conventions.md
|
|
139
|
+
(模块模式额外生成)
|
|
140
|
+
- .issuekit/knowledge/modules/{module-name}.md
|
|
103
141
|
|
|
104
|
-
后续 skill(如 $issuekit-require、$issuekit-design
|
|
142
|
+
后续 skill(如 $issuekit-require、$issuekit-design)将优先读取这些知识摘要与模块知识(如存在)。
|
|
105
143
|
```
|
|
106
144
|
|
|
107
145
|
## AI 执行指南
|
|
@@ -112,6 +150,7 @@ description: 分析当前项目,生成结构化的上下文知识摘要到 .is
|
|
|
112
150
|
- 如果某个步骤不适用(如项目无数据库),跳过并注明
|
|
113
151
|
- 优先使用 Mermaid 图表,文字作为补充
|
|
114
152
|
- 所有关键入口使用可点击的相对路径链接
|
|
153
|
+
- 任何知识梳理前先复用已有知识文件,优先增量更新,避免重复产出
|
|
115
154
|
|
|
116
155
|
### 增量更新
|
|
117
156
|
|
|
@@ -19,6 +19,14 @@ description: 准备发布文档并创建 Pull Request。分析代码变更,对
|
|
|
19
19
|
|
|
20
20
|
## 工作流程
|
|
21
21
|
|
|
22
|
+
### 第 0 步:先读取知识约定并规划任务
|
|
23
|
+
|
|
24
|
+
在开始发布规划前,优先执行:
|
|
25
|
+
|
|
26
|
+
1. 阅读 `.issuekit/knowledge/conventions.md`(如有)
|
|
27
|
+
2. 阅读 `.issuekit/knowledge/` 下与本次发布内容相关的已有知识摘要(如有),若存在 `.issuekit/knowledge/modules/` 对应模块文件则优先阅读
|
|
28
|
+
3. 基于上述约定与已有知识,再开始后续发布步骤
|
|
29
|
+
|
|
22
30
|
### 第 1 步:定位 Issue 并分析变更
|
|
23
31
|
|
|
24
32
|
1. 读取 `.issuekit/config.yaml` 中的 `issues_dir` 配置项,获取 Issue 文档存放目录(默认为 `issues`)
|
|
@@ -15,6 +15,14 @@ description: 创建新 Issue 并进行需求分析。结合代码分析需求完
|
|
|
15
15
|
|
|
16
16
|
## 工作流程
|
|
17
17
|
|
|
18
|
+
### 第 0 步:先读取知识约定并规划任务
|
|
19
|
+
|
|
20
|
+
在开始需求分析规划前,优先执行:
|
|
21
|
+
|
|
22
|
+
1. 阅读 `.issuekit/knowledge/conventions.md`(如有)
|
|
23
|
+
2. 阅读 `.issuekit/knowledge/` 下与本次需求相关的已有知识摘要(如有),若存在 `.issuekit/knowledge/modules/` 对应模块文件则优先阅读
|
|
24
|
+
3. 基于上述约定与已有知识,再开始后续步骤的任务规划与执行
|
|
25
|
+
|
|
18
26
|
### 第 1 步:解析需求输入
|
|
19
27
|
|
|
20
28
|
1. 从用户输入提取需求描述
|
|
@@ -18,6 +18,14 @@ description: 多维度代码审核。交叉验证代码变更与需求、技术
|
|
|
18
18
|
|
|
19
19
|
## 工作流程
|
|
20
20
|
|
|
21
|
+
### 第 0 步:先读取知识约定并规划任务
|
|
22
|
+
|
|
23
|
+
在开始代码审核规划前,优先执行:
|
|
24
|
+
|
|
25
|
+
1. 阅读 `.issuekit/knowledge/conventions.md`(如有)
|
|
26
|
+
2. 阅读 `.issuekit/knowledge/` 下与当前审核范围相关的已有知识摘要(如有),若存在 `.issuekit/knowledge/modules/` 对应模块文件则优先阅读
|
|
27
|
+
3. 基于上述约定与已有知识,再开始后续审核步骤
|
|
28
|
+
|
|
21
29
|
### 第 1 步:定位 Issue 并收集材料
|
|
22
30
|
|
|
23
31
|
1. 读取 `.issuekit/config.yaml` 中的 `issues_dir` 配置项,获取 Issue 文档存放目录(默认为 `issues`)
|
|
@@ -17,6 +17,14 @@ description: 为 Issue 制定全面的测试方案。基于需求和技术方案
|
|
|
17
17
|
|
|
18
18
|
## 工作流程
|
|
19
19
|
|
|
20
|
+
### 第 0 步:先读取知识约定并规划任务
|
|
21
|
+
|
|
22
|
+
在开始测试方案规划前,优先执行:
|
|
23
|
+
|
|
24
|
+
1. 阅读 `.issuekit/knowledge/conventions.md`(如有)
|
|
25
|
+
2. 阅读 `.issuekit/knowledge/` 下与当前测试范围相关的已有知识摘要(如有),若存在 `.issuekit/knowledge/modules/` 对应模块文件则优先阅读
|
|
26
|
+
3. 基于上述约定与已有知识,再开始后续测试步骤
|
|
27
|
+
|
|
20
28
|
### 第 1 步:定位 Issue 并阅读上下文
|
|
21
29
|
|
|
22
30
|
1. 读取 `.issuekit/config.yaml` 中的 `issues_dir` 配置项,获取 Issue 文档存放目录(默认为 `issues`)
|
|
@@ -78,19 +78,40 @@ sequenceDiagram
|
|
|
78
78
|
Ctrl-->>C: 响应
|
|
79
79
|
```
|
|
80
80
|
|
|
81
|
-
### 4.3
|
|
81
|
+
### 4.3 核心逻辑
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
> 从 4.2 的宏观流程深入到具体实现。只描述有歧义或易出错的逻辑变更,显而易见的不必赘述。
|
|
84
84
|
|
|
85
|
-
|
|
85
|
+
#### 4.3.1 {逻辑主题1}
|
|
86
86
|
|
|
87
|
-
|
|
88
|
-
{详细描述处理流程、校验规则、状态变更等核心逻辑}
|
|
87
|
+
**变更概述**: {一句话说明这段逻辑做了什么改动、为什么改}
|
|
89
88
|
|
|
90
|
-
|
|
91
|
-
- {特殊点,如安全配置、拦截器排除、线程安全等}
|
|
89
|
+
**关键逻辑(伪代码)**:
|
|
92
90
|
|
|
93
|
-
|
|
91
|
+
```
|
|
92
|
+
// 用伪代码描述核心判断/处理路径
|
|
93
|
+
if condition_A:
|
|
94
|
+
do_step_1()
|
|
95
|
+
// 状态从 X 变为 Y
|
|
96
|
+
elif condition_B:
|
|
97
|
+
do_step_2()
|
|
98
|
+
else:
|
|
99
|
+
fallback()
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**状态/规则变迁**(如有):
|
|
103
|
+
|
|
104
|
+
| 变更项 | 变更前 | 变更后 | 说明 |
|
|
105
|
+
|--------|--------|--------|------|
|
|
106
|
+
| {状态/规则/枚举} | {旧值或旧行为} | {新值或新行为} | {为什么改} |
|
|
107
|
+
|
|
108
|
+
**新老代码差异**(涉及老代码改动时填写):
|
|
109
|
+
|
|
110
|
+
- **老逻辑**: {原来怎么做的、关键判断是什么}
|
|
111
|
+
- **新逻辑**: {现在怎么做的、改了哪些判断}
|
|
112
|
+
- **影响范围**: {这个改动会影响哪些上下游调用方或业务场景}
|
|
113
|
+
|
|
114
|
+
#### 4.3.2 {逻辑主题2}
|
|
94
115
|
|
|
95
116
|
{同上格式...}
|
|
96
117
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"""知识库引擎 — 项目上下文知识摘要。
|
|
2
|
-
|
|
3
|
-
knowledge skill 已包含在 bundled_skills/issuekit-knowledge/ 中,
|
|
4
|
-
由 agent_skills.install_agent_skills() 统一安装。
|
|
5
|
-
"""
|
|
1
|
+
"""知识库引擎 — 项目上下文知识摘要。
|
|
2
|
+
|
|
3
|
+
knowledge skill 已包含在 bundled_skills/issuekit-knowledge/ 中,
|
|
4
|
+
由 agent_skills.install_agent_skills() 统一安装。
|
|
5
|
+
"""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-change/agents/openai.yaml
RENAMED
|
File without changes
|
{issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-coding/agents/openai.yaml
RENAMED
|
File without changes
|
{issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-design/agents/openai.yaml
RENAMED
|
File without changes
|
{issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-knowledge/agents/openai.yaml
RENAMED
|
File without changes
|
{issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-release/agents/openai.yaml
RENAMED
|
File without changes
|
{issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-require/agents/openai.yaml
RENAMED
|
File without changes
|
{issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-review/agents/openai.yaml
RENAMED
|
File without changes
|
{issuekit-0.1.3 → issuekit-0.1.4}/src/issuekit/bundled_skills/issuekit-test/agents/openai.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|