@chenmk/superflow 0.1.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.
Files changed (198) hide show
  1. package/INSTALL.en.md +106 -0
  2. package/INSTALL.md +664 -0
  3. package/LICENSE +21 -0
  4. package/README.md +142 -0
  5. package/README.zh-CN.md +117 -0
  6. package/assets/context-templates/business-rules.md +98 -0
  7. package/assets/context-templates/decisions.md +153 -0
  8. package/assets/context-templates/external-systems.md +166 -0
  9. package/assets/context-templates/incidents.md +89 -0
  10. package/assets/manifest.json +53 -0
  11. package/assets/prompts/superflow-archive.md +9 -0
  12. package/assets/prompts/superflow-clarify.md +10 -0
  13. package/assets/prompts/superflow-design.md +10 -0
  14. package/assets/prompts/superflow-docs.md +10 -0
  15. package/assets/prompts/superflow-implement.md +10 -0
  16. package/assets/prompts/superflow-pipeline.md +13 -0
  17. package/assets/prompts/superflow-verify.md +10 -0
  18. package/assets/rules/superflow-phase-guard.md +50 -0
  19. package/assets/scripts/claude-auto-backup-hook.sh +313 -0
  20. package/assets/scripts/codex-auto-backup-hook.sh +361 -0
  21. package/assets/scripts/install-sql-pre-commit.sh +44 -0
  22. package/assets/scripts/superflow-contract-hooks.sh +744 -0
  23. package/assets/scripts/superflow-delivery-check.sh +315 -0
  24. package/assets/scripts/superflow-dependency-update-hook.sh +161 -0
  25. package/assets/scripts/superflow-enforce-hook.sh +70 -0
  26. package/assets/scripts/superflow-hook-guard.sh +132 -0
  27. package/assets/scripts/superflow-integration-evidence-hook.sh +80 -0
  28. package/assets/scripts/superflow-sql-sync-hook.py +950 -0
  29. package/assets/scripts/superflow-test-report-lint.py +433 -0
  30. package/assets/scripts/superflow-verify-integration.sh +90 -0
  31. package/assets/scripts/sync-settings-json.py +52 -0
  32. package/assets/skills/api-doc-changelog/SKILL.md +193 -0
  33. package/assets/skills/openspec-apply-change/SKILL.md +156 -0
  34. package/assets/skills/openspec-archive-change/SKILL.md +114 -0
  35. package/assets/skills/openspec-explore/SKILL.md +288 -0
  36. package/assets/skills/openspec-propose/SKILL.md +110 -0
  37. package/assets/skills/superflow-archive/SKILL.md +61 -0
  38. package/assets/skills/superflow-clarify/SKILL.md +146 -0
  39. package/assets/skills/superflow-clarify/agents/openai.yaml +4 -0
  40. package/assets/skills/superflow-design/SKILL.md +83 -0
  41. package/assets/skills/superflow-design/agents/openai.yaml +4 -0
  42. package/assets/skills/superflow-docs/SKILL.md +316 -0
  43. package/assets/skills/superflow-docs/agents/openai.yaml +4 -0
  44. package/assets/skills/superflow-hotfix/SKILL.md +48 -0
  45. package/assets/skills/superflow-implement/SKILL.md +461 -0
  46. package/assets/skills/superflow-implement/agents/openai.yaml +4 -0
  47. package/assets/skills/superflow-pipeline/SKILL.md +844 -0
  48. package/assets/skills/superflow-pipeline/agents/openai.yaml +4 -0
  49. package/assets/skills/superflow-pipeline/references/api-design-template.md +431 -0
  50. package/assets/skills/superflow-pipeline/references/architecture-design-template.md +119 -0
  51. package/assets/skills/superflow-pipeline/references/batch-prompt-template.md +536 -0
  52. package/assets/skills/superflow-pipeline/references/batch-split-guide.md +140 -0
  53. package/assets/skills/superflow-pipeline/references/decision-point.md +30 -0
  54. package/assets/skills/superflow-pipeline/references/dirty-worktree.md +35 -0
  55. package/assets/skills/superflow-pipeline/references/document-templates.md +123 -0
  56. package/assets/skills/superflow-pipeline/references/feature-gated-workflow.md +124 -0
  57. package/assets/skills/superflow-pipeline/references/implementation-prompt-template.md +1056 -0
  58. package/assets/skills/superflow-pipeline/references/mock-strategy-guide.md +86 -0
  59. package/assets/skills/superflow-pipeline/references/openspec-format.md +57 -0
  60. package/assets/skills/superflow-pipeline/references/orchestration.md +639 -0
  61. package/assets/skills/superflow-pipeline/references/p0-baseline-template.md +174 -0
  62. package/assets/skills/superflow-pipeline/references/project-config.md +40 -0
  63. package/assets/skills/superflow-pipeline/references/prompt-usage-template.md +152 -0
  64. package/assets/skills/superflow-pipeline/references/quality-gate.md +299 -0
  65. package/assets/skills/superflow-pipeline/references/quality-standards.md +190 -0
  66. package/assets/skills/superflow-pipeline/references/reviewer-checklist.md +154 -0
  67. package/assets/skills/superflow-pipeline/references/sql-risk-review-checklist.md +323 -0
  68. package/assets/skills/superflow-pipeline/references/subagent-progress.md +90 -0
  69. package/assets/skills/superflow-pipeline/references/superpower-technical-design-template.md +125 -0
  70. package/assets/skills/superflow-pipeline/references/test-execution-template.md +220 -0
  71. package/assets/skills/superflow-pipeline/references/test-guide.md +30 -0
  72. package/assets/skills/superflow-pipeline/references/traceability-matrix.md +106 -0
  73. package/assets/skills/superflow-pipeline/references/validation-integrity.md +134 -0
  74. package/assets/skills/superflow-pipeline/scripts/superflow-archive.sh +178 -0
  75. package/assets/skills/superflow-pipeline/scripts/superflow-env.sh +118 -0
  76. package/assets/skills/superflow-pipeline/scripts/superflow-guard.sh +428 -0
  77. package/assets/skills/superflow-pipeline/scripts/superflow-handoff.sh +296 -0
  78. package/assets/skills/superflow-pipeline/scripts/superflow-state.sh +574 -0
  79. package/assets/skills/superflow-pipeline/scripts/superflow-status.sh +172 -0
  80. package/assets/skills/superflow-pipeline/scripts/superflow-yaml-validate.sh +138 -0
  81. package/assets/skills/superflow-table-impact-analysis/SKILL.md +77 -0
  82. package/assets/skills/superflow-tweak/SKILL.md +46 -0
  83. package/assets/skills/superflow-verify/SKILL.md +112 -0
  84. package/assets/skills-en/api-doc-changelog/SKILL.md +193 -0
  85. package/assets/skills-en/openspec-apply-change/SKILL.md +156 -0
  86. package/assets/skills-en/openspec-archive-change/SKILL.md +114 -0
  87. package/assets/skills-en/openspec-explore/SKILL.md +288 -0
  88. package/assets/skills-en/openspec-propose/SKILL.md +110 -0
  89. package/assets/skills-en/superflow-archive/SKILL.md +61 -0
  90. package/assets/skills-en/superflow-clarify/SKILL.md +146 -0
  91. package/assets/skills-en/superflow-clarify/agents/openai.yaml +4 -0
  92. package/assets/skills-en/superflow-design/SKILL.md +83 -0
  93. package/assets/skills-en/superflow-design/agents/openai.yaml +4 -0
  94. package/assets/skills-en/superflow-docs/SKILL.md +316 -0
  95. package/assets/skills-en/superflow-docs/agents/openai.yaml +4 -0
  96. package/assets/skills-en/superflow-hotfix/SKILL.md +48 -0
  97. package/assets/skills-en/superflow-implement/SKILL.md +461 -0
  98. package/assets/skills-en/superflow-implement/agents/openai.yaml +4 -0
  99. package/assets/skills-en/superflow-pipeline/SKILL.md +844 -0
  100. package/assets/skills-en/superflow-pipeline/agents/openai.yaml +4 -0
  101. package/assets/skills-en/superflow-pipeline/references/api-design-template.md +431 -0
  102. package/assets/skills-en/superflow-pipeline/references/architecture-design-template.md +119 -0
  103. package/assets/skills-en/superflow-pipeline/references/batch-prompt-template.md +536 -0
  104. package/assets/skills-en/superflow-pipeline/references/batch-split-guide.md +140 -0
  105. package/assets/skills-en/superflow-pipeline/references/decision-point.md +30 -0
  106. package/assets/skills-en/superflow-pipeline/references/dirty-worktree.md +35 -0
  107. package/assets/skills-en/superflow-pipeline/references/document-templates.md +123 -0
  108. package/assets/skills-en/superflow-pipeline/references/feature-gated-workflow.md +124 -0
  109. package/assets/skills-en/superflow-pipeline/references/implementation-prompt-template.md +1056 -0
  110. package/assets/skills-en/superflow-pipeline/references/mock-strategy-guide.md +86 -0
  111. package/assets/skills-en/superflow-pipeline/references/openspec-format.md +57 -0
  112. package/assets/skills-en/superflow-pipeline/references/orchestration.md +639 -0
  113. package/assets/skills-en/superflow-pipeline/references/p0-baseline-template.md +174 -0
  114. package/assets/skills-en/superflow-pipeline/references/project-config.md +40 -0
  115. package/assets/skills-en/superflow-pipeline/references/prompt-usage-template.md +152 -0
  116. package/assets/skills-en/superflow-pipeline/references/quality-gate.md +299 -0
  117. package/assets/skills-en/superflow-pipeline/references/quality-standards.md +190 -0
  118. package/assets/skills-en/superflow-pipeline/references/reviewer-checklist.md +154 -0
  119. package/assets/skills-en/superflow-pipeline/references/sql-risk-review-checklist.md +323 -0
  120. package/assets/skills-en/superflow-pipeline/references/subagent-progress.md +90 -0
  121. package/assets/skills-en/superflow-pipeline/references/superpower-technical-design-template.md +125 -0
  122. package/assets/skills-en/superflow-pipeline/references/test-execution-template.md +220 -0
  123. package/assets/skills-en/superflow-pipeline/references/test-guide.md +30 -0
  124. package/assets/skills-en/superflow-pipeline/references/traceability-matrix.md +106 -0
  125. package/assets/skills-en/superflow-pipeline/references/validation-integrity.md +134 -0
  126. package/assets/skills-en/superflow-pipeline/scripts/superflow-archive.sh +178 -0
  127. package/assets/skills-en/superflow-pipeline/scripts/superflow-env.sh +118 -0
  128. package/assets/skills-en/superflow-pipeline/scripts/superflow-guard.sh +428 -0
  129. package/assets/skills-en/superflow-pipeline/scripts/superflow-handoff.sh +296 -0
  130. package/assets/skills-en/superflow-pipeline/scripts/superflow-state.sh +574 -0
  131. package/assets/skills-en/superflow-pipeline/scripts/superflow-status.sh +172 -0
  132. package/assets/skills-en/superflow-pipeline/scripts/superflow-yaml-validate.sh +138 -0
  133. package/assets/skills-en/superflow-table-impact-analysis/SKILL.md +77 -0
  134. package/assets/skills-en/superflow-tweak/SKILL.md +46 -0
  135. package/assets/skills-en/superflow-verify/SKILL.md +112 -0
  136. package/dist/cli/index.js +186 -0
  137. package/dist/cli/index.js.map +1 -0
  138. package/dist/commands/archive.js +6 -0
  139. package/dist/commands/archive.js.map +1 -0
  140. package/dist/commands/clarify.js +6 -0
  141. package/dist/commands/clarify.js.map +1 -0
  142. package/dist/commands/design.js +6 -0
  143. package/dist/commands/design.js.map +1 -0
  144. package/dist/commands/docs.js +6 -0
  145. package/dist/commands/docs.js.map +1 -0
  146. package/dist/commands/doctor.js +473 -0
  147. package/dist/commands/doctor.js.map +1 -0
  148. package/dist/commands/implement.js +6 -0
  149. package/dist/commands/implement.js.map +1 -0
  150. package/dist/commands/init.js +471 -0
  151. package/dist/commands/init.js.map +1 -0
  152. package/dist/commands/pipeline.js +6 -0
  153. package/dist/commands/pipeline.js.map +1 -0
  154. package/dist/commands/scan.js +59 -0
  155. package/dist/commands/scan.js.map +1 -0
  156. package/dist/commands/status.js +173 -0
  157. package/dist/commands/status.js.map +1 -0
  158. package/dist/commands/uninstall.js +213 -0
  159. package/dist/commands/uninstall.js.map +1 -0
  160. package/dist/commands/update.js +187 -0
  161. package/dist/commands/update.js.map +1 -0
  162. package/dist/commands/verify.js +6 -0
  163. package/dist/commands/verify.js.map +1 -0
  164. package/dist/core/assets.js +27 -0
  165. package/dist/core/assets.js.map +1 -0
  166. package/dist/core/context.js +100 -0
  167. package/dist/core/context.js.map +1 -0
  168. package/dist/core/dependencies.js +146 -0
  169. package/dist/core/dependencies.js.map +1 -0
  170. package/dist/core/detect.js +71 -0
  171. package/dist/core/detect.js.map +1 -0
  172. package/dist/core/i18n.js +103 -0
  173. package/dist/core/i18n.js.map +1 -0
  174. package/dist/core/integrity.js +46 -0
  175. package/dist/core/integrity.js.map +1 -0
  176. package/dist/core/manifest.js +18 -0
  177. package/dist/core/manifest.js.map +1 -0
  178. package/dist/core/prompts.js +20 -0
  179. package/dist/core/prompts.js.map +1 -0
  180. package/dist/core/registry.js +134 -0
  181. package/dist/core/registry.js.map +1 -0
  182. package/dist/core/rules.js +17 -0
  183. package/dist/core/rules.js.map +1 -0
  184. package/dist/core/scripts.js +40 -0
  185. package/dist/core/scripts.js.map +1 -0
  186. package/dist/core/skill-check.js +31 -0
  187. package/dist/core/skill-check.js.map +1 -0
  188. package/dist/core/skills.js +56 -0
  189. package/dist/core/skills.js.map +1 -0
  190. package/dist/core/state.js +43 -0
  191. package/dist/core/state.js.map +1 -0
  192. package/dist/types.js +2 -0
  193. package/dist/types.js.map +1 -0
  194. package/dist/utils/path.js +11 -0
  195. package/dist/utils/path.js.map +1 -0
  196. package/dist/utils/shell.js +29 -0
  197. package/dist/utils/shell.js.map +1 -0
  198. package/package.json +60 -0
@@ -0,0 +1,361 @@
1
+ #!/bin/bash
2
+ # Codex global experience auto backup hook.
3
+ # Syncs curated ~/.codex development experience into code-cli-config/codex-setup,
4
+ # then commits the backup repository. Push requires explicit --push-once.
5
+
6
+ set -u
7
+
8
+ CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
9
+ CONFIG_REPO="${CODEX_CONFIG_REPO:-/Users/chenmankun/cmk-project/code-cli-config}"
10
+ BACKUP_ROOT="$CONFIG_REPO/codex-setup"
11
+ LOCK_DIR="${TMPDIR:-/tmp}/codex-auto-backup.lock"
12
+
13
+ usage() {
14
+ cat <<'USAGE'
15
+ 用法:
16
+ codex-auto-backup-hook.sh [--force] [--dry-run] [--push-once]
17
+
18
+ 环境变量:
19
+ CODEX_AUTO_BACKUP_DISABLE=1 临时关闭自动备份
20
+ CODEX_AUTO_BACKUP_DRY_RUN=1 只同步检查,不提交
21
+ CODEX_CONFIG_REPO=/path 指定 code-cli-config 仓库路径
22
+ USAGE
23
+ }
24
+
25
+ FORCE=0
26
+ PUSH_ONCE=0
27
+ DRY_RUN="${CODEX_AUTO_BACKUP_DRY_RUN:-0}"
28
+
29
+ for arg in "$@"; do
30
+ case "$arg" in
31
+ --force) FORCE=1 ;;
32
+ --push-once) FORCE=1; PUSH_ONCE=1 ;;
33
+ --dry-run) DRY_RUN=1 ;;
34
+ -h|--help)
35
+ usage
36
+ exit 0
37
+ ;;
38
+ esac
39
+ done
40
+
41
+ if [ "${CODEX_AUTO_BACKUP_DISABLE:-0}" = "1" ]; then
42
+ exit 0
43
+ fi
44
+
45
+ log() {
46
+ echo "[Codex 自动备份] $1" >&2
47
+ }
48
+
49
+ classify_backup_path() {
50
+ local path="$1"
51
+ case "$path" in
52
+ codex-setup/superflow-*|codex-setup/*.skill)
53
+ echo "SuperBridge Flow 技能"
54
+ ;;
55
+ codex-setup/openspec-*)
56
+ echo "OpenSpec 技能"
57
+ ;;
58
+ codex-setup/codex配置/hooks/*)
59
+ echo "hook 脚本"
60
+ ;;
61
+ codex-setup/codex配置/hooks.json)
62
+ echo "hook 配置"
63
+ ;;
64
+ codex-setup/codex配置/config.toml)
65
+ echo "Codex 配置"
66
+ ;;
67
+ codex-setup/codex配置/AGENTS.md)
68
+ echo "全局指令"
69
+ ;;
70
+ codex-setup/codex配置/prompts/*)
71
+ echo "提示词"
72
+ ;;
73
+ codex-setup/codex配置/rules/*)
74
+ echo "规则"
75
+ ;;
76
+ codex-setup/codex配置/memories/*)
77
+ echo "记忆"
78
+ ;;
79
+ *)
80
+ echo "Codex 配置"
81
+ ;;
82
+ esac
83
+ }
84
+
85
+ build_commit_subject() {
86
+ local categories
87
+ categories="$(
88
+ git diff --cached --name-only |
89
+ while IFS= read -r path; do
90
+ classify_backup_path "$path"
91
+ done |
92
+ awk '!seen[$0]++'
93
+ )"
94
+
95
+ local first second third extra
96
+ first="$(printf '%s\n' "$categories" | sed -n '1p')"
97
+ second="$(printf '%s\n' "$categories" | sed -n '2p')"
98
+ third="$(printf '%s\n' "$categories" | sed -n '3p')"
99
+ extra="$(printf '%s\n' "$categories" | sed -n '4p')"
100
+
101
+ if [ -z "$first" ]; then
102
+ echo "自动备份 Codex:同步配置变化"
103
+ elif [ -z "$second" ]; then
104
+ echo "自动备份 Codex:更新 $first"
105
+ elif [ -z "$third" ]; then
106
+ echo "自动备份 Codex:更新 $first 和 $second"
107
+ elif [ -z "$extra" ]; then
108
+ echo "自动备份 Codex:更新 $first、$second 和 $third"
109
+ else
110
+ echo "自动备份 Codex:更新多类全局配置"
111
+ fi
112
+ }
113
+
114
+ build_commit_body() {
115
+ {
116
+ echo "本次自动备份包含:"
117
+ git diff --cached --name-status |
118
+ sed -n '1,20p' |
119
+ sed 's/^/- /'
120
+ }
121
+ }
122
+
123
+ sync_config_toml() {
124
+ local src="$1"
125
+ local dest="$2"
126
+
127
+ awk '
128
+ /^\[/ {
129
+ skip = 0
130
+ if ($0 ~ /^\[marketplaces\./) {
131
+ skip = 1
132
+ }
133
+ if ($0 ~ /^\[hooks\.state/) {
134
+ skip = 1
135
+ }
136
+ if ($0 ~ /^\[mcp_servers\.node_repl/) {
137
+ skip = 1
138
+ }
139
+ if ($0 ~ /^\[tui\.model_availability_nux\]/) {
140
+ skip = 1
141
+ }
142
+ }
143
+ !skip { print }
144
+ ' "$src" > "$dest"
145
+ }
146
+
147
+ if ! mkdir "$LOCK_DIR" 2>/dev/null; then
148
+ log "已有备份任务在执行,跳过本次触发"
149
+ exit 0
150
+ fi
151
+ trap 'rmdir "$LOCK_DIR" 2>/dev/null || true' EXIT
152
+
153
+ INPUT="$(cat 2>/dev/null || true)"
154
+
155
+ json_value() {
156
+ local key="$1"
157
+ printf '%s' "$INPUT" | python3 -c "
158
+ import json, sys
159
+ try:
160
+ data = json.load(sys.stdin)
161
+ except Exception:
162
+ print('')
163
+ raise SystemExit
164
+ tool_input = data.get('tool_input', {})
165
+ print(tool_input.get('$key', '') or '')
166
+ " 2>/dev/null
167
+ }
168
+
169
+ TOUCH_PATH="$(json_value file_path)"
170
+ COMMAND="$(json_value command)"
171
+ if [ -z "$COMMAND" ]; then
172
+ COMMAND="$(json_value cmd)"
173
+ fi
174
+ CWD="$(json_value cwd)"
175
+
176
+ should_trigger() {
177
+ if [ "$FORCE" = "1" ]; then
178
+ return 0
179
+ fi
180
+
181
+ case "$TOUCH_PATH" in
182
+ "$CODEX_HOME"/skills/*|"$CODEX_HOME"/hooks/*|"$CODEX_HOME"/prompts/*|"$CODEX_HOME"/rules/*|"$CODEX_HOME"/memories/*)
183
+ return 0
184
+ ;;
185
+ "$CODEX_HOME"/hooks.json|"$CODEX_HOME"/config.toml|"$CODEX_HOME"/AGENTS.md)
186
+ return 0
187
+ ;;
188
+ esac
189
+
190
+ case "$CWD" in
191
+ "$CODEX_HOME"|"$CODEX_HOME"/*)
192
+ return 0
193
+ ;;
194
+ esac
195
+
196
+ case "$COMMAND" in
197
+ *"$CODEX_HOME"/skills*|*"$CODEX_HOME"/hooks*|*"$CODEX_HOME"/prompts*|*"$CODEX_HOME"/rules*|*"$CODEX_HOME"/memories*|*"$CODEX_HOME"/hooks.json*|*"$CODEX_HOME"/config.toml*|*"$CODEX_HOME"/AGENTS.md*|*"~/.codex/skills"*|*"~/.codex/hooks"*|*"~/.codex/prompts"*|*"~/.codex/rules"*|*"~/.codex/memories"*|*"~/.codex/hooks.json"*|*"~/.codex/config.toml"*|*"~/.codex/AGENTS.md"*)
198
+ return 0
199
+ ;;
200
+ esac
201
+
202
+ return 1
203
+ }
204
+
205
+ if ! should_trigger; then
206
+ exit 0
207
+ fi
208
+
209
+ if [ ! -d "$CODEX_HOME" ]; then
210
+ log "Codex 目录不存在: $CODEX_HOME"
211
+ exit 0
212
+ fi
213
+
214
+ if [ ! -d "$CONFIG_REPO/.git" ]; then
215
+ log "备份仓库不存在或不是 Git 仓库: $CONFIG_REPO"
216
+ exit 0
217
+ fi
218
+
219
+ mkdir -p "$BACKUP_ROOT/codex配置/hooks" \
220
+ "$BACKUP_ROOT/codex配置/prompts" \
221
+ "$BACKUP_ROOT/codex配置/rules" \
222
+ "$BACKUP_ROOT/codex配置/memories"
223
+
224
+ log "同步 ~/.codex 到 codex-setup"
225
+
226
+ if [ -f "$CODEX_HOME/config.toml" ]; then
227
+ sync_config_toml \
228
+ "$CODEX_HOME/config.toml" \
229
+ "$BACKUP_ROOT/codex配置/config.toml"
230
+ fi
231
+
232
+ if [ -f "$CODEX_HOME/AGENTS.md" ]; then
233
+ cp "$CODEX_HOME/AGENTS.md" "$BACKUP_ROOT/codex配置/AGENTS.md"
234
+ fi
235
+
236
+ if [ -f "$CODEX_HOME/hooks.json" ]; then
237
+ cp "$CODEX_HOME/hooks.json" "$BACKUP_ROOT/codex配置/hooks.json"
238
+ fi
239
+
240
+ if [ -d "$CODEX_HOME/hooks" ]; then
241
+ rsync -a --delete "$CODEX_HOME/hooks/" "$BACKUP_ROOT/codex配置/hooks/"
242
+ fi
243
+
244
+ if [ -d "$CODEX_HOME/prompts" ]; then
245
+ rsync -a --delete "$CODEX_HOME/prompts/" "$BACKUP_ROOT/codex配置/prompts/"
246
+ fi
247
+
248
+ if [ -d "$CODEX_HOME/rules" ]; then
249
+ rsync -a --delete "$CODEX_HOME/rules/" "$BACKUP_ROOT/codex配置/rules/"
250
+ fi
251
+
252
+ if [ -f "$CODEX_HOME/memories/memory_summary.md" ]; then
253
+ cp "$CODEX_HOME/memories/memory_summary.md" \
254
+ "$BACKUP_ROOT/codex配置/memories/memory_summary.md"
255
+ fi
256
+
257
+ if [ -f "$CODEX_HOME/memories/git-preferences.md" ]; then
258
+ cp "$CODEX_HOME/memories/git-preferences.md" \
259
+ "$BACKUP_ROOT/codex配置/memories/git-preferences.md"
260
+ fi
261
+
262
+ if [ -d "$CODEX_HOME/skills" ]; then
263
+ for skill_dir in "$CODEX_HOME"/skills/*; do
264
+ [ -d "$skill_dir" ] || continue
265
+ skill_name="$(basename "$skill_dir")"
266
+ case "$skill_name" in
267
+ .backups|.system)
268
+ continue
269
+ ;;
270
+ esac
271
+ if [ -f "$skill_dir/SKILL.md" ]; then
272
+ rsync -a --delete "$skill_dir/" "$BACKUP_ROOT/$skill_name/"
273
+ fi
274
+ done
275
+ fi
276
+
277
+ if [ -d "$BACKUP_ROOT/superflow-pipeline" ] && command -v zip >/dev/null 2>&1; then
278
+ if [ ! -f "$BACKUP_ROOT/superflow-pipeline.skill" ] ||
279
+ ! (cd "$CONFIG_REPO" && git diff --quiet -- codex-setup/superflow-pipeline); then
280
+ tmp_skill="${BACKUP_ROOT}/superflow-pipeline.skill.tmp.$$"
281
+ (
282
+ cd "$BACKUP_ROOT/superflow-pipeline" &&
283
+ zip -r -0 "$tmp_skill" references agents SKILL.md >/dev/null
284
+ )
285
+ if ! cmp -s "$tmp_skill" "$BACKUP_ROOT/superflow-pipeline.skill"; then
286
+ mv "$tmp_skill" "$BACKUP_ROOT/superflow-pipeline.skill"
287
+ else
288
+ rm -f "$tmp_skill"
289
+ fi
290
+ fi
291
+ fi
292
+
293
+ chmod +x "$BACKUP_ROOT/codex配置/hooks/"*.sh \
294
+ "$BACKUP_ROOT/codex配置/hooks/"*.py 2>/dev/null || true
295
+
296
+ if [ "$DRY_RUN" = "1" ]; then
297
+ log "dry-run 模式,仅完成同步,不提交"
298
+ exit 0
299
+ fi
300
+
301
+ log "提交 code-cli-config"
302
+
303
+ STAGE_PATHS=(
304
+ "codex-setup/codex配置/config.toml"
305
+ "codex-setup/codex配置/AGENTS.md"
306
+ "codex-setup/codex配置/hooks.json"
307
+ "codex-setup/codex配置/hooks"
308
+ "codex-setup/codex配置/prompts"
309
+ "codex-setup/codex配置/rules"
310
+ "codex-setup/codex配置/memories"
311
+ "codex-setup/setup-codex-config.sh"
312
+ "codex-setup/superflow-pipeline.skill"
313
+ )
314
+
315
+ if [ -d "$CODEX_HOME/skills" ]; then
316
+ for skill_dir in "$CODEX_HOME"/skills/*; do
317
+ [ -d "$skill_dir" ] || continue
318
+ skill_name="$(basename "$skill_dir")"
319
+ case "$skill_name" in
320
+ .backups|.system)
321
+ continue
322
+ ;;
323
+ esac
324
+ if [ -f "$skill_dir/SKILL.md" ]; then
325
+ STAGE_PATHS+=("codex-setup/$skill_name")
326
+ fi
327
+ done
328
+ fi
329
+
330
+ (
331
+ cd "$CONFIG_REPO" || exit 0
332
+
333
+ for path in "${STAGE_PATHS[@]}"; do
334
+ if [ -e "$path" ]; then
335
+ git add "$path"
336
+ fi
337
+ done
338
+
339
+ if git diff --cached --quiet; then
340
+ log "没有需要提交的 Codex 配置变化"
341
+ if [ "$PUSH_ONCE" != "1" ]; then
342
+ exit 0
343
+ fi
344
+ else
345
+ commit_subject="$(build_commit_subject)"
346
+ commit_body="$(build_commit_body)"
347
+ log "提交说明: $commit_subject"
348
+ git commit -m "$commit_subject" -m "$commit_body"
349
+ if [ "$PUSH_ONCE" != "1" ]; then
350
+ log "已完成本地提交;如需推送,请手动执行: $0 --push-once"
351
+ exit 0
352
+ fi
353
+ fi
354
+
355
+ current_branch="$(git branch --show-current)"
356
+ if [ -z "$current_branch" ]; then
357
+ log "当前仓库不在普通分支,跳过推送"
358
+ exit 0
359
+ fi
360
+ git push origin "$current_branch"
361
+ )
@@ -0,0 +1,44 @@
1
+ #!/bin/sh
2
+
3
+ set -e
4
+
5
+ REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
6
+ if [ -z "$REPO_ROOT" ]; then
7
+ echo "当前目录不是 Git 仓库,无法安装 SQL pre-commit"
8
+ exit 1
9
+ fi
10
+
11
+ HOOK_DIR="$REPO_ROOT/.git/hooks"
12
+ HOOK_FILE="$HOOK_DIR/pre-commit"
13
+ SQL_HOOK="$HOME/.codex/hooks/superflow-sql-sync-hook.py"
14
+
15
+ mkdir -p "$HOOK_DIR"
16
+
17
+ if [ -f "$HOOK_FILE" ] && ! grep -q "superflow-sql-sync-hook.py" "$HOOK_FILE"; then
18
+ BACKUP_FILE="$HOOK_FILE.backup.$(date +%Y%m%d%H%M%S)"
19
+ cp "$HOOK_FILE" "$BACKUP_FILE"
20
+ {
21
+ printf "\n"
22
+ printf "# SDD SQL style check\n"
23
+ printf "SQL_HOOK=\"\\$HOME/.codex/hooks/superflow-sql-sync-hook.py\"\n"
24
+ printf "if [ -x \"\\$SQL_HOOK\" ]; then\n"
25
+ printf " \"\\$SQL_HOOK\" --check-staged\n"
26
+ printf "fi\n"
27
+ } >> "$HOOK_FILE"
28
+ chmod +x "$HOOK_FILE"
29
+ echo "已追加 SQL pre-commit,并备份原 hook: $BACKUP_FILE"
30
+ exit 0
31
+ fi
32
+
33
+ cat > "$HOOK_FILE" <<'EOF'
34
+ #!/bin/sh
35
+
36
+ SQL_HOOK="$HOME/.codex/hooks/superflow-sql-sync-hook.py"
37
+
38
+ if [ -x "$SQL_HOOK" ]; then
39
+ "$SQL_HOOK" --check-staged
40
+ fi
41
+ EOF
42
+
43
+ chmod +x "$HOOK_FILE"
44
+ echo "已安装 SQL pre-commit: $HOOK_FILE"