configure-sulde
Skill99 starsChanged 24 days agoMITView on GitHub
sulde-cc 项目配置 / 接入 / 升级 / 团队管理 / 加 frontend / 加 scaffold / 加 skill trigger / 结束 grace period。8 mode 统一入口:init(新项目接入)/ migrate-from-v0.1.0(老版本升级)/ add-frontend / add-team-member / add-sensitive-file / add-scaffold / add-skill-trigger / end-grace。当用户跑 `/sulde-init` / `/sulde-migrate-from-v0.1.0` / `/sulde-add-*` / `/sulde-end-grace` 任一命令时触发。**单 SKILL 多 mode**,根据入口 command name 选 mode dispatch。
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 2 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 84
Read existing config → 检查 name 不重复
- Distinctive: line 98
Read existing config → 检查 alias 不重复
- Very specific: line 124
Read existing config → append to scope_sensitivity.sensitive_files: 数组(去重),作为 advisory/self-fix 边界。
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
/configure-sulde — 项目配置 / 升级 / 维护 8 mode
入口 command(在 commands/sulde-*.md 定义),都走本 skill。根据用户 invoke 的 command 选 mode。
§0 Mode dispatch
| Command | Mode | 备注 |
/sulde-init [project-dir] | init | 新项目从零接入 sulde-cc |
/sulde-migrate-from-v0.1.0 | migrate | v0.1.0 → v0.2.0 升级 |
/sulde-add-frontend <name> <path> <stack> | add-frontend | 增加一个 frontend(已有项目) |
/sulde-add-team-member <alias> <name> <email> <frontend> | add-team-member | 加团队成员 + 创建 git as-<alias> |
/sulde-add-sensitive-file <path> | add-sensitive-file | 标记敏感文件(Dev 不得自发改) |
/sulde-add-scaffold <name> [trigger] | add-scaffold | 加 scaffold 条目到 <docs-hub>/scaffold-map.yaml |
/sulde-add-skill-trigger <regex> <skill> | add-skill-trigger | 加 UserPromptSubmit 触发词 → .sulde-config.yaml: skill_triggers |
/sulde-end-grace | end-grace | 主动结束 7d grace period,切真 enforcement_level |
任一 mode 跑完输出“结果与阻塞”段。范围内的 next steps 由 Agent 继续执行;只有缺少外部事实、 物理接入或高风险授权时才向用户询问,不输出让用户代跑的命令。
§1 Mode: init(对话式 8 步)
新项目接入 sulde-cc。步骤:
- Detect existing
.sulde-config.yaml(若有,refuse + 提示/sulde-migrate-from-v0.1.0) - Q1:project name(default = dir basename)
- Q2:role(coordinator / dev / both,default coordinator)
- Q3:stack 多选(default
[android, ios],可加flutter/harmony) - Q4:design source MCP(default
pencil)+ file 路径(./design/app.pen等) - Q5:team(每个 frontend 至少 1 个 alias;先收集 N,后跑 add-team-member mode 加 alias)
- Q6:enforcement_level(default
balanced)+ grace_period_days(default7) - Q7:lang(default
auto)+ os_primary_target(defaultunix) - 生成
.sulde-config.yaml写入 project root - 复制
${CLAUDE_PLUGIN_ROOT}/template/_project/*到 project root(根级 + scripts/ + docs-hub/ 骨架) - 复制
${CLAUDE_PLUGIN_ROOT}/template/<stack>/*到<frontend>/每个 frontend(对应 stack 骨架) - 写 grace marker:
echo '{"started_at":"<ISO>","grace_period_days":7}' > .sulde-grace-started - 跑各 frontend 的
scripts/pre-commit-installer.sh装 git hook - cp
template/_project/docs-hub/design/page-relation.yaml.example→<docs-hub>/design/page-relation.yaml(空骨架,首次跑/ui-impl阶段 0 强制读取本图谱,缺则报错) - 由 Agent 完成后续收尾并输出结果:
- 7 day grace period 已起,hook 强制 lenient mode 直到
.sulde-grace-endedmarker - Agent 检查运行时依赖;缺 PyYAML 时在当前环境安装并回读版本,权限或网络需要扩大时走原生确认
- 若多人协作:Agent 根据已收集的团队信息继续执行 add-team-member;缺少身份事实时一次问齐
- 若独立开发者:
team: []留空即可(check_commit_alias.shhook 自动 skip alias 强制,plaingit commit工作) - 若有设计工具(Pencil / Figma MCP):Agent 继续执行
/update-design起初版 design-truth - 若无设计工具:
.sulde-config.yaml: design_source.mcp设为none,Agent 根据用户提供的设计源生成 design-truth - 首次跑
/ui-impl前由 Agent 根据可验证页面关系填写<docs-hub>/design/page-relation.yaml; 只有关系语义不明时才问一个自然语言问题 - 用户明确要求提前结束 grace 时,Agent 执行
/sulde-end-grace
- 7 day grace period 已起,hook 强制 lenient mode 直到
复制实现 见 §9 跨目录 cp 权限段。
§2 Mode: migrate(v0.1.0 → v0.2.0)
老版本(v0.1.0)用户升级。步骤:
- Read existing
.sulde-config.yaml(v0.1.0 schema) - 显示 diff:
frontend-aplaceholder → 提示 rename(用户选android/ios/flutter/harmony)- 新增字段填 default(
enforcement_level: balanced/lang: auto/enforcement_grace_period_days: 7/scope_inheritance: parent/os_compatibility: {primary_target: unix, windows_shell_hint: git-bash}/build_verify: {...}/enforcement: {...}) - skill paths 从 v0.1.0 的 user-private bundle → v0.2.0 generic(假定用户没改 plugin 源)
- Dry-run write to
.sulde-config.yaml.v2-preview - 用户已经请求迁移且 preview 无未决语义时,Agent 备份原 file 为
.sulde-config.yaml.v0.1.0-backup后写新 file;只有字段含义无法推断时才询问具体选择 - 写 grace marker
.sulde-grace-started(7d grace 让用户适应新 enforcement) - Agent 安装并回读 Python 依赖与各 frontend git hook,输出 migration report;若失败自动恢复备份。 报告保留 v0.1.0 回滚路径,但不要求用户代跑安装命令。
§3 Mode: add-frontend
Args: <name> <path> <stack>(例:/sulde-add-frontend harmony ./harmony mobile-harmony)
- Read existing config → 检查 name 不重复
- Append to
frontends:数组 - 复制
${CLAUDE_PLUGIN_ROOT}/template/<stack>/*到<path>/(用户可未存在该目录,创建) - 跑
<path>/scripts/pre-commit-installer.sh装 git hook - 已提供团队身份时由 Agent 继续配置;缺少 alias/name/email 时一次问齐,不输出待用户再次触发的命令
可用 stack(v0.2.0):mobile-android / mobile-ios / mobile-flutter / mobile-harmony。
§4 Mode: add-team-member
Args: <alias> <name> <email> <frontend>(例:/sulde-add-team-member as-c Carol carol@team.com flutter)
- Read existing config → 检查 alias 不重复
- Append to
team:数组:- alias: as-c name: Carol email: carol@team.com frontend: flutter - 创建 git alias
as-<alias>:- 写入项目
.git/config的[alias]section:[alias] as-c = "!SULDE_COMMIT_ALIAS=as-c git -c user.name='Carol' -c user.email='carol@team.com' commit" - 注:
SULDE_COMMIT_ALIAS是 sentinel,check_commit_alias.shpre-commit hook 据此放行
- 写入项目
- 回读 alias 配置并报告;后续提交由 Agent 使用
git as-c commit ...。alias 是 per-repo, 新 clone 由 Agent 重新执行本 mode,不让用户手工编辑.git/config
§5 Mode: add-sensitive-file
Args: <path>(例:/sulde-add-sensitive-file core-ui/AppRouter.kt)
委托 skills/sulde-add-sensitive-file/SKILL.md 完整执行:
- Read existing config → append to
scope_sensitivity.sensitive_files:数组(去重),作为 advisory/self-fix 边界。 - 同时向项目
.claude/settings.json: permissions.deny去重追加Edit(<相对路径>)与Write(<相对路径>),作为 harness 级 deny;保留其他键,首次修改已有 settings 前备份为.claude/settings.json.bak-sulde。 - 输出双保险 reminder:Dev 端 self-fix-boundary 会 block 自发改这些文件,harness 拒绝直接 Edit/Write;改动必经 task md。
§6 Mode: add-scaffold
Args: <name> [trigger-regex](例:/sulde-add-scaffold AppTopBar "TopBar|TitleBar")
- Read
<docs-hub>/scaffold-map.yaml→ append:- name: AppTopBar triggers: ["TopBar", "TitleBar"] contract: <docs-hub>/scaffolds/AppTopBar.md # 需协调端补 owner: coordinator - 提示协调端补
<docs-hub>/scaffolds/<name>.md契约文档
§7 Mode: add-skill-trigger
Args: <regex> <skill> [role](例:/sulde-add-skill-trigger "pen-truth.*更新" update-design coordinator)
- Append to
.sulde-config.yaml: skill_triggers:(已是 v0.2.0 字段)skill_triggers: - regex: "pen-truth.*更新" skill: update-design role: coordinator reminder: "Invoke the update-design skill..." - 输出 reminder:hook
skill_trigger.py会在 UserPromptSubmit 时合并 default + user triggers
§8 Mode: end-grace
无 args。
- 检查
.sulde-grace-started存在(若不存在 → "no grace period active") - 写
.sulde-grace-ended(空 file 即可,或{"ended_at": "<ISO>"}内容) - 输出:enforcement 立刻切回 config
enforcement_level(strict / balanced / lenient) - 提示:
.sulde-grace-*marker 已加.gitignore(不进 git,per-machine state)
§9 跨目录 cp 权限 / 实现细节(B4 fix)
复制 template 时:
import shutil
from pathlib import Path
PLUGIN_ROOT = Path(os.environ["CLAUDE_PLUGIN_ROOT"]) # set by Claude Code
src = PLUGIN_ROOT / "template" / "_project"
dst = Path(project_root)
shutil.copytree(src, dst, dirs_exist_ok=True)
# Re-apply executable bit on scripts (Python copytree preserves mode on Unix
# but Windows file modes are limited)
for sh in dst.glob("**/*.sh"):
sh.chmod(sh.stat().st_mode | 0o755)权限失败:Agent 先解析精确目标并通过宿主原生权限面申请一次性写入;获准后重试并回读。
若权限仍不可用,报告精确 blocker 并保持原文件不变,禁止输出让用户代跑的 cp 命令。
跨 OS windows:
shutil.copytreeworks.sh在 Windows 没 executable bit,git pre-commit 会以 bash 解释器跑(via Git for Windows / WSL2)—pre-commit-installer.sh内含 OS detect 提示
§10 default 字段写入(各 mode 共用)
写 .sulde-config.yaml 时,默认字段 + 必填字段 区分:
| 字段 | 默认 | 必填? |
enabled | true | ❌ |
role | coordinator | ✅ |
frontends[] | — | ✅(至少 1) |
docs_hub | ./docs-hub | ❌ |
enforcement_level | balanced | ❌ |
enforcement_grace_period_days | 7 | ❌ |
lang | auto | ❌ |
design_source | pencil + ./design/app.pen | ❌ |
team[] | — | ❌(可后补) |
build_verify | per-stack 默认(android / ios / flutter / harmony) | ❌ |
enforcement | 各子项默认 | ❌ |
session_baseline | {claude_md_inject_lines: 60} | ❌ |
scope_sensitivity | {sensitive_files: [], sensitive_scaffolds: []} | ❌ |
os_compatibility | {primary_target: unix, windows_shell_hint: git-bash} | ❌ |
scope_inheritance | parent | ❌ |
antipattern.index_path | ./docs-hub/ADR/INDEX.md | ❌ |
skill_triggers[] | [] | ❌ |
§11 mode 错误处理
| Error | 处理 |
.sulde-config.yaml 不存在 但 mode != init | 提示 "run /sulde-init first" |
.sulde-config.yaml 存在 但 mode == init | 提示 "use /sulde-migrate-from-v0.1.0 to upgrade or delete .sulde-config.yaml to re-init" |
| add-* 重名 | 提示 + abort(不覆盖) |
| copytree 权限失败 | Agent 请求精确的一次性宿主权限并重试;仍失败则安全停止并报告 blocker |
| 用户 Ctrl-C 中途退出 | .sulde-config.yaml.v2-preview 保留,提示"恢复"路径 |
In this repository28 other files it gives its agents.
- AGENTS.mdAGENTS.md
- codex-preflight-scaffoldSkill
- coordinator-maintenanceSkill
- curate-to-kbSkill
- dispatch-parallel-taskSkill
- handoff-code-reviewSkill
- multi-source-reviewSkill
- record-prd-supplementSkill
- reverse-source-completenessSkill
- sediment-from-codeSkill
- update-designSkill
- writing-task-mdSkill
- assignSkill
- bug-huntSkill
- code-reviewSkill
- crash-fixSkill
- handoffSkill
- parallel-devSkill
- perf-diagnoseSkill
- postmortemSkill
- ui-implSkill
- dispatch-taskSkill
- import-codex-sessionSkill
- intent-guardianSkill
- kb-searchSkill
- memory-distillSkill
- sedimentSkill
- sulde-add-sensitive-fileSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

