dev-playbooks-cn 2.1.0 → 2.2.0
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 +2 -1
- package/bin/devbooks.js +24 -7
- package/package.json +1 -1
- package/scripts/install-skills.sh +13 -4
- package/templates/dev-playbooks/README.md +1 -1
package/README.md
CHANGED
|
@@ -79,7 +79,8 @@ AI 编码助手很强大,但往往**不可预测**:
|
|
|
79
79
|
| **Claude Code** | 完整 Skills | `CLAUDE.md` |
|
|
80
80
|
| **Codex CLI** | 完整 Skills | `AGENTS.md` |
|
|
81
81
|
| **Qoder** | 完整 Skills | `AGENTS.md` |
|
|
82
|
-
| **OpenCode
|
|
82
|
+
| **OpenCode** | 完整 Skills | `AGENTS.md` |
|
|
83
|
+
| **Every Code** | 完整 Skills | `AGENTS.md` |
|
|
83
84
|
| **Cursor** | Rules 系统 | `.cursor/rules/` |
|
|
84
85
|
| **Windsurf** | Rules 系统 | `.windsurf/rules/` |
|
|
85
86
|
| **Gemini CLI** | Rules 系统 | `GEMINI.md` |
|
package/bin/devbooks.js
CHANGED
|
@@ -84,7 +84,7 @@ const AI_TOOLS = [
|
|
|
84
84
|
{
|
|
85
85
|
id: 'opencode',
|
|
86
86
|
name: 'OpenCode',
|
|
87
|
-
description: 'OpenCode AI CLI
|
|
87
|
+
description: 'OpenCode AI CLI',
|
|
88
88
|
skillsSupport: SKILLS_SUPPORT.FULL,
|
|
89
89
|
slashDir: '.opencode/command',
|
|
90
90
|
agentsDir: '.opencode/agent',
|
|
@@ -172,6 +172,19 @@ const AI_TOOLS = [
|
|
|
172
172
|
globalSlashDir: path.join(os.homedir(), '.codex', 'prompts'),
|
|
173
173
|
instructionFile: 'AGENTS.md',
|
|
174
174
|
available: true
|
|
175
|
+
},
|
|
176
|
+
|
|
177
|
+
// === Every Code / just-every/code(完整 Skills 支持)===
|
|
178
|
+
{
|
|
179
|
+
id: 'code',
|
|
180
|
+
name: 'Every Code',
|
|
181
|
+
description: 'Every Code CLI (@just-every/code)',
|
|
182
|
+
skillsSupport: SKILLS_SUPPORT.FULL,
|
|
183
|
+
slashDir: null,
|
|
184
|
+
skillsDir: path.join(os.homedir(), '.code', 'skills'),
|
|
185
|
+
globalSlashDir: null,
|
|
186
|
+
instructionFile: 'AGENTS.md',
|
|
187
|
+
available: true
|
|
175
188
|
}
|
|
176
189
|
];
|
|
177
190
|
|
|
@@ -643,6 +656,8 @@ function getNpmIgnoreEntries() {
|
|
|
643
656
|
'.opencode/',
|
|
644
657
|
'.continue/',
|
|
645
658
|
'.qoder/',
|
|
659
|
+
'.code/',
|
|
660
|
+
'.codex/',
|
|
646
661
|
'.github/instructions/',
|
|
647
662
|
'.github/copilot-instructions.md',
|
|
648
663
|
'',
|
|
@@ -737,7 +752,7 @@ function printSkillsSupportInfo() {
|
|
|
737
752
|
console.log(chalk.gray('─'.repeat(50)));
|
|
738
753
|
console.log();
|
|
739
754
|
|
|
740
|
-
console.log(chalk.green('★ 完整 Skills') + chalk.gray(' - Claude Code, Codex CLI, OpenCode, Qoder'));
|
|
755
|
+
console.log(chalk.green('★ 完整 Skills') + chalk.gray(' - Claude Code, Codex CLI, OpenCode, Qoder, Every Code'));
|
|
741
756
|
console.log(chalk.gray(' └ 独立的 Skills/Agents 系统,可按需调用,有独立上下文'));
|
|
742
757
|
console.log();
|
|
743
758
|
|
|
@@ -857,6 +872,8 @@ function getSkillsDestDir(tool, scope, projectDir) {
|
|
|
857
872
|
return path.join(projectDir, '.codex', 'skills');
|
|
858
873
|
} else if (tool.id === 'opencode') {
|
|
859
874
|
return path.join(projectDir, '.opencode', 'skill');
|
|
875
|
+
} else if (tool.id === 'code') {
|
|
876
|
+
return path.join(projectDir, '.code', 'skills');
|
|
860
877
|
}
|
|
861
878
|
}
|
|
862
879
|
// 全局安装:使用工具定义的全局目录
|
|
@@ -870,8 +887,8 @@ function installSkills(toolIds, projectDir, scope = INSTALL_SCOPE.GLOBAL, update
|
|
|
870
887
|
const tool = AI_TOOLS.find(t => t.id === toolId);
|
|
871
888
|
if (!tool || tool.skillsSupport !== SKILLS_SUPPORT.FULL) continue;
|
|
872
889
|
|
|
873
|
-
// Claude Code / Codex CLI / OpenCode
|
|
874
|
-
if ((toolId === 'claude' || toolId === 'codex' || toolId === 'opencode') && tool.skillsDir) {
|
|
890
|
+
// Claude Code / Codex CLI / OpenCode / Every Code 支持相同格式的 Skills
|
|
891
|
+
if ((toolId === 'claude' || toolId === 'codex' || toolId === 'opencode' || toolId === 'code') && tool.skillsDir) {
|
|
875
892
|
const skillsSrcDir = path.join(__dirname, '..', 'skills');
|
|
876
893
|
const skillsDestDir = getSkillsDestDir(tool, scope, projectDir);
|
|
877
894
|
|
|
@@ -940,11 +957,11 @@ function installSkills(toolIds, projectDir, scope = INSTALL_SCOPE.GLOBAL, update
|
|
|
940
957
|
|
|
941
958
|
function generateOpenCodeDevbooksCommand() {
|
|
942
959
|
return `---
|
|
943
|
-
description: DevBooks
|
|
960
|
+
description: DevBooks 工作流入口(OpenCode)
|
|
944
961
|
---
|
|
945
962
|
|
|
946
963
|
${DEVBOOKS_MARKERS.start}
|
|
947
|
-
# DevBooks
|
|
964
|
+
# DevBooks(OpenCode)
|
|
948
965
|
|
|
949
966
|
本项目使用 DevBooks 工作流进行规格驱动开发。
|
|
950
967
|
|
|
@@ -953,7 +970,7 @@ ${DEVBOOKS_MARKERS.start}
|
|
|
953
970
|
1. **推荐入口(Router)**:在对话中输入:\`/devbooks-router\`
|
|
954
971
|
2. 或使用自然语言:\`请运行 devbooks-router skill,分析需求:<你的需求>\`
|
|
955
972
|
|
|
956
|
-
> 说明:在
|
|
973
|
+
> 说明:在 OpenCode 中,Skills 会作为可用的 Slash Commands 被加载,因此可以直接用 \`/<skill-name>\` 调用。
|
|
957
974
|
|
|
958
975
|
## 常用命令(直接用 /<skill-name>)
|
|
959
976
|
|
package/package.json
CHANGED
|
@@ -4,12 +4,13 @@ set -euo pipefail
|
|
|
4
4
|
usage() {
|
|
5
5
|
cat <<'EOF'
|
|
6
6
|
Usage:
|
|
7
|
-
./scripts/install-skills.sh [--claude-only|--codex-only|--opencode-only] [--with-opencode] [--with-codex-prompts] [--dry-run] [--no-prune]
|
|
7
|
+
./scripts/install-skills.sh [--claude-only|--codex-only|--opencode-only|--code-only] [--with-opencode] [--with-code] [--with-codex-prompts] [--dry-run] [--no-prune]
|
|
8
8
|
|
|
9
9
|
Installs DevBooks skills (skills/devbooks-*) to:
|
|
10
10
|
- Claude Code: ~/.claude/skills/
|
|
11
11
|
- Codex CLI: $CODEX_HOME/skills (default: ~/.codex/skills/)
|
|
12
12
|
- OpenCode: $XDG_CONFIG_HOME/opencode/skill (default: ~/.config/opencode/skill/)
|
|
13
|
+
- Every Code: $CODE_HOME/skills (default: ~/.code/skills/)
|
|
13
14
|
|
|
14
15
|
Optionally installs Codex prompt entrypoints (templates/claude-commands/devbooks/*.md) to:
|
|
15
16
|
- Codex CLI: $CODEX_HOME/prompts (default: ~/.codex/prompts/)
|
|
@@ -22,6 +23,7 @@ EOF
|
|
|
22
23
|
install_claude=true
|
|
23
24
|
install_codex=true
|
|
24
25
|
install_opencode=false
|
|
26
|
+
install_code=false
|
|
25
27
|
install_codex_prompts=false
|
|
26
28
|
dry_run=false
|
|
27
29
|
prune_removed=true
|
|
@@ -29,10 +31,12 @@ prune_removed=true
|
|
|
29
31
|
while [[ $# -gt 0 ]]; do
|
|
30
32
|
case "$1" in
|
|
31
33
|
-h|--help) usage; exit 0 ;;
|
|
32
|
-
--claude-only) install_codex=false ;;
|
|
33
|
-
--codex-only) install_claude=false ;;
|
|
34
|
-
--opencode-only) install_claude=false; install_codex=false; install_opencode=true ;;
|
|
34
|
+
--claude-only) install_codex=false; install_code=false ;;
|
|
35
|
+
--codex-only) install_claude=false; install_code=false ;;
|
|
36
|
+
--opencode-only) install_claude=false; install_codex=false; install_opencode=true; install_code=false ;;
|
|
37
|
+
--code-only) install_claude=false; install_codex=false; install_code=true ;;
|
|
35
38
|
--with-opencode) install_opencode=true ;;
|
|
39
|
+
--with-code) install_code=true ;;
|
|
36
40
|
--with-codex-prompts) install_codex_prompts=true ;;
|
|
37
41
|
--dry-run) dry_run=true ;;
|
|
38
42
|
--no-prune) prune_removed=false ;;
|
|
@@ -229,6 +233,11 @@ if [[ "$install_opencode" == true ]]; then
|
|
|
229
233
|
install_into "${xdg_config_home}/opencode/skill"
|
|
230
234
|
fi
|
|
231
235
|
|
|
236
|
+
if [[ "$install_code" == true ]]; then
|
|
237
|
+
code_home="${CODE_HOME:-${HOME}/.code}"
|
|
238
|
+
install_into "${code_home}/skills"
|
|
239
|
+
fi
|
|
240
|
+
|
|
232
241
|
if [[ "$dry_run" == true ]]; then
|
|
233
242
|
echo "[dry-run] done"
|
|
234
243
|
else
|
|
@@ -61,7 +61,7 @@ AI 编码助手很强大,但往往**不可预测**:
|
|
|
61
61
|
| **Claude Code** | 完整 Skills | `CLAUDE.md` |
|
|
62
62
|
| **Codex CLI** | 完整 Skills | `AGENTS.md` |
|
|
63
63
|
| **Qoder** | 完整 Skills | `AGENTS.md` |
|
|
64
|
-
| **OpenCode
|
|
64
|
+
| **OpenCode** | 完整 Skills | `AGENTS.md` |
|
|
65
65
|
| **Cursor** | Rules 系统 | `.cursor/rules/` |
|
|
66
66
|
| **Windsurf** | Rules 系统 | `.windsurf/rules/` |
|
|
67
67
|
| **Gemini CLI** | Rules 系统 | `GEMINI.md` |
|